Я создал сеанс tmux на сервере Ubuntu 18.04. Чтобы дать нескольким пользователям Linux доступ к одному и тому же сеансу, я следовал этим
инструкции. Все работает нормально, когда я пытаюсь получить доступ к сокету / сессии tmux от «обычных» пользователей через командную строку.
Я собираюсь создать сценарий для веб-сайта, на котором я хочу запустить или убить эту сессию. Как и в приведенном выше руководстве, я добавил пользователя www-data в группу, которая использует сокет tmux. Чтобы выполнить эти команды tmux над php как суперпользователь, я добавил эту строку www-data ALL=NOPASSWD: /usr/bin/tmux
в файл visudo.
Когда я хочу уничтожить уже запущенный сеанс с помощью php (shell_exec), он говорит:
msgstr «нет сервера, работающего на watten_tmux_socket».
Хотя я могу убить этот сеанс той же командой, что и «обычный» пользователь. Что здесь не так?
sudo tmux -S /tmp/watten_tmux_socket kill-session -t WattenServer
РЕДАКТИРОВАТЬ: Запуск сеанса через сокет поверх php также не работает. Сеанс и сокет не создаются в / tmp, а в командной строке это работает.
Хорошо, я сделал обходной путь. Использование sudo в PHP очень небезопасно, поэтому теперь, когда я хочу запустить или завершить новый сеанс tmux через php, я изменяю содержимое txt-файла (что-то вроде servertate: on). Я установил incron apt-get install incron
, С помощью incrontab вы можете регистрировать некоторые события сортировки при изменении файла. Поэтому теперь, когда я изменяю содержимое этого файла, запускается скрипт, который запускает или убивает сеанс tmux.
Ссылка: Инкрон учебник
Других решений пока нет …