如何检查当前正在运行的进程是否由 root 或用户打开

如何检查当前正在运行的进程是否由 root 或用户打开

我目前正在创建一个 BASH 脚本来终止进程。我首先检查该进程是否正在运行,然后将其杀死。但我想添加一个嵌套if来查明该进程是否由 root 打开(而不是当前脚本)。

答案1

您可以使用ps -o ruser=ps -o uid=

$ ps -p 930 -o ruser=
root
$ ps -C cron -o ruser=
root
$ [[ $(ps -C cron -o uid=) -eq 0 ]]; echo $?
0

-p 按 pid 匹配,-C 按命令名称匹配。 OS X 的 ps 不支持 -C,但你可以使用 pgrep:

$ ps -p $(pgrep -x cron) -o ruser=
root

相关内容