Позвольте www-данным выполнять сценарий оболочки

По-видимому, Ваше намерение с этими строками состоит в том, чтобы не соответствовать grep команда в выводе ps:

PID=`ps faux | grep libt | awk 'NR==2{print $2}'`
STATUS=`ps faux | grep libt | awk 'NR==2{print $1}'`

Вы не можете гарантировать, что вторая строка будет той, которую Вы хотите. Необходимо устранить grep при помощи общего приема:

ps faux | grep [l]ibt

путем включения символа в квадратные скобки, grep ищет "libt", но не литерал" [l] ibt", потому что он интерпретирует символы в скобках как список.

Необходимо использовать $() для замены команды вместо обратных галочек. Они более читаемы и легче сделать вложение.

Можно также получить и имя пользователя и PID с помощью одного вызова для ps при сокращении возможностей состояния состязания, но Вам действительно не нужно имя пользователя, так как Вы уже знаете это. Необходимо только должны быть знать, работает ли процесс или нет.

Однако существуют все еще возможности для ложных положительных сторон. Если Вы можете, необходимо использовать pgrep и pkill.

#!/bin/sh
PID=$(pgrep -U ec2-user libt 2>/dev/null)
if [ $? = 0 ]
then
    kill $PID
    echo "libt was killed"
else
    echo "libt already killed"
fi
sleep 5
/home/ec2-user/libt/libt

Посмотрите управление процессами для получения дополнительной информации.

6
задан 11 November 2013 в 01:00
2 ответа

system ("whoami"); чтобы получить имя пользователя веб-сервера, в этом примере я использую www-data . Отредактируйте файл sudoers и добавьте следующее. Где пользователь - это имя пользователя, под которым он будет работать.

www-data ALL = (user) NOPASSWD: / path / to / program / или / script

Затем используйте следующую команду в PHP .

system ("sudo -u user / path / to / program / or / script");

8
ответ дан 3 December 2019 в 00:28

Несмотря на то, что эта должность давно назрела, я бы хотел ее порекомендовать: запустить команду 'whoami' с языка side-server-scripting, выполняющую команды строк(php), а затем изменить файл sudoers с конкретным пользователем, потому что в некоторых случаях www-data, а в других - daemon .....

.
-2
ответ дан 3 December 2019 в 00:28

Теги

Похожие вопросы