Уничтожение экранной сессии GNU с использованием php - PullRequest
0 голосов
/ 07 октября 2011

Я размещаю игровой сервер для моего партнера на моем VPS, и я попытался создать для него веб-страницу, чтобы остановить сервер, если он этого хочет.

Я использую:

system('/bin/sh stopserver.sh');

это то, что находится внутри stopserver.sh:

/usr/bin/screen -S server -X kill

, но все это дает мне следующее сообщение: должен быть подключен к терминалу.

Любой совет?

1 Ответ

0 голосов
/ 08 октября 2011

Я думаю, что это, вероятно, ошибка в используемой вами версии экрана, поскольку у меня, 4.00.03jw4 (FAU) 2-May-06, ее нет. Я бы порекомендовал обновить, если это возможно.

Если вы не можете обновить экран, вам нужно найти способ снабдить его терминалом. К сожалению, я не уверен, как это сделать. Кажется, что в некоторых версиях PHP proc_open(), возможно, было в состоянии сделать это, по крайней мере, если PHP был скомпилирован с правильными параметрами, но , очевидно, эта функция была удалена .

Один из возможных вариантов: expect, если он установлен в вашей системе.

Редактировать: Или просто сделайте так, как предлагает tMC, и используйте posix_kill($pid, SIGTERM). Вам сначала нужно будет найти идентификатор процесса сеанса. (Вы могли бы, вероятно, получить для него результат ps. Или просто использовать killall, если вас не беспокоит сопутствующий ущерб.)

...