2017-02-07 16 views
-1

Я сейчас пытаюсь исправить скрипт, который позволит мне, чтобы проверить процесс запущен с правильным пользователем (корень)сценариев, чтобы увидеть, если конкретный процесс запущен как корень

Я полагаю, я бы сначала используйте ps -efl & grep для процесса и если он работает с root = 1 в противном случае = 0?

ответ

0

Вы можете использовать pgrep, как правило, доступны по умолчанию в большинстве дистрибутивов:

$ pgrep -a -u root -x geany;echo $? 
2794 geany tuesday.txt 
0 
$ pgrep -a -u root -x gean;echo $? 
1 

Использование опции -x для точного совпадения, в противном случае имя процесса будет рассматриваться как образец:

$ pgrep -a -u root gean;echo $? 
2794 geany tuesday.txt 
0 

Код возврата ($?) Равен 0, если найден процесс, 1 если не найден.

Чтобы сохранить только код возврата, а не имя процесса/данные (в случае, если этот процесс запущен и работает как корень), вы можете перенаправить вывод pgrep в/Dev/нуль:

$ pgrep -a -u root geany 1>/dev/null;echo $? 
0 
1

Если вы знаете имя процесса (например, watch):

ps -C watch -o uid= 
#=> 0 
ps -C watch -o ruser= 
#=> root 

Если вы знаете PID:

ps -p 4793 -o uid= 
0 
ps -p 4793 -o ruser= 
#=> root 

Вам просто нужно проверить uid (0 для корня) или Имя пользователя.