我希望脚本能够检查给定进程是否正在运行,并获取其进程 ID (PID),因此我正在查看 ps 进程输出。
如果我使用
cmd
选项执行输出,似乎我获得了可执行文件及其命令行参数的路径:
[user@server ~]$ ps -o pid,cmd -A | grep gnome
1514 /usr/libexec/gnome-session-binary --autostart /usr/share/gdm/greeter/autostart
如果我使用
comm
选项执行输出,我将得到一个截断的进程名称:
[user@server ~]$ ps -o pid,comm -A | grep gnome
1514 gnome-session-b
所以它是“gnome-session-b”而不是“gnome-session-binary”。
我只想要 PID 和(未截断的)进程文件名,因此
cmd
选项似乎是更好的选择。但是,如果我查看 nginx
,它会在输出中包含一些额外信息:
[user@server ~]$ ps -o pid,cmd -A | grep nginx
25147 nginx: master process nginx -c /opt/nginx/nginx.conf
25148 nginx: worker process
与
[user@server ~]$ ps -o pid,comm -A | grep nginx
25147 nginx
25148 nginx
总的来说:
-o <option(s)>
,我想获得所请求的信息,并且仅(没有任何额外的)。
目标是:进程 ID (PID) 和(完整,未截断)进程文件名。
看起来选择是
cmd
将获得完整的进程名称,但也会给出命令行参数,并且还将告知它是“主进程”还是“工作进程”。我想消除输出中的额外噪音。
或者选择是
comm
,它将(仅)给出进程名称,但它必须是一个简短的进程名称,否则它会被截断。 nginx 巧合的是足够短,但其他进程文件名可能会更长。
ps 输出还有其他选项吗?
“主进程”或“工作进程”的额外信息是什么?我在 ps 手册页中没有注意到任何内容。
您正在寻找
ps -o pid,command
来自
man
页面: