脚本以查看特定进程是否以root身份运行

时间:2017-02-07 13:47:42

标签: linux shell process scripting

我目前正在尝试修改一个shell脚本,这将允许我检查一个进程是否正在运行正确的用户(root)

我认为我首先要使用ps -efl& grep用于进程以及是否以root = 1运行,否则= 0?

2 个答案:

答案 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表示root用户名)或用户名。

答案 1 :(得分: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.

要仅保留返回代码而不保留进程名称/信息(如果进程已启动并以root身份运行),您可以将pgrep输出重定向到/ dev / null:

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