sh / ожидают / sudo / screen все необходимое вместе в одной команде - PullRequest
1 голос
/ 28 августа 2010

Что мне нужно, чтобы это произошло: PHP должен запустить серверное приложение с правами root, работающими в фоновом режиме. Все это должно быть тихим.

-Sudo необходим, чтобы позволить php выполнить опцию, требующую прав root.

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

- Ожидание необходимо для того, чтобы на экране были точки для запуска

-Sh необходим, потому что все запускаемые процессы должны быть задокументированы, предположительно с оператором &. Также потребуется передать любой вывод в / dev / null /, так как я не хочу, чтобы моя страница PHP возвращала что-либо. Это, вероятно, как-то обсуждается, если кто-то может придумать лучший способ сделать вызов в PHP (fork ...?)

Например, я пытался использовать скрипт:

#!/usr/bin/expect -f
spawn sh ( screen -t srcds /usr/local/srcds_l/startserv )& > /dev/null
exit 0

Для справки: я пытаюсь запустить сервер Counter-Strike Source, а startserv - это имя кода C, который обрабатывает запуск сервера и сбор его выходных данных. Кто-нибудь может исправить мой синтаксис для этого фрагмента или сказать, почему это неправильно?

Ответы [ 3 ]

1 голос
/ 01 ноября 2010

Эта ситуация была в конечном итоге разрешена путем простого демонтажа процесса с использованием элемента управления fork и process, а затем просто с помощью PHP, выполняющего системный вызов с sudo.

У меня была другая похожая ситуация, в конце концовнайдено

unbuffer -p

, которое использует экран для внутреннего использования и выполняет ту работу, о которой я изначально думал, что экран ожидает и sh do.

0 голосов
/ 28 августа 2010

Это огромные затраты на передачу 1 бита информации («начни сейчас»).Если вы забудете PHP, тогда все другие подчиненные требования отпадут.

Если бы я пытался это сделать, я, вероятно, написал бы сценарий perl для прослушивания порта TCP для команды «start» и просто разветвленияот самого процесса.Это избавляет от необходимости sh, ожидайте, screen и sudo.

0 голосов
/ 28 августа 2010

У меня нет полного решения для вас, но вы можете посмотреть на nohup вместо экрана. Это также устраняет необходимость в Expect.

...