Closed. This question is off-topic。它当前不接受答案。
想改善这个问题吗? Update the question,所以它是on-topic,用于堆栈溢出。
2年前关闭。
我不确定为什么
如何使用
与
当您寻找可执行文件
例如,在这里我查看
但是
这是因为PID 1的名称为
想改善这个问题吗? Update the question,所以它是on-topic,用于堆栈溢出。
2年前关闭。
我不确定为什么
pidof
不起作用,但是pgrep
起作用。$ pidof squid
returns nothing
$ pgrep squid
returns 3322
如何使用
pidof
获取3322? 最佳答案
pidof
将返回有关实际程序名称的详细信息,而pgrep
将返回有关与所提供模式匹配的任何进程的详细信息。这在两个工具的手册页中都有明确说明。
pidof [-s] [-c] [-n] [-x] [-m] [-o omitpid[,omitpid..]] [-o omitpid[,omitpid..]..] program [program..]
与
pgrep [options] pattern
当您寻找可执行文件
squid
时,pgrep
可以将其匹配,因为模式与/usr/bin/squid*
匹配。而pidof
找不到名为squid
的程序,因为Squid守护程序可能被称为/usr/bin/squid-server
之类的东西。例如,在这里我查看
ps
的输出,并在其中查找名称为systemd
的程序:$ ps -eaf | grep systemd
root 1 0 0 Sep03 ? 00:00:05 /usr/lib/systemd/systemd --switched-root --system --deserialize 21
root 425 1 0 Sep03 ? 00:00:03 /usr/lib/systemd/systemd-journald
root 480 1 0 Sep03 ? 00:00:00 /usr/lib/systemd/systemd-udevd
dbus 630 1 0 Sep03 ? 00:00:01 /usr/bin/dbus-daemon --system --address=systemd: --nofork --nopidfile --systemd-activation
root 648 1 0 Sep03 ? 00:00:00 /usr/lib/systemd/systemd-logind
pgrep
也可以找到它们:$ pgrep -l systemd
1 systemd
425 systemd-journal
480 systemd-udevd
648 systemd-logind
但是
pidof
只找到第一个:$ pidof systemd
1
这是因为PID 1的名称为
/usr/bin/systemd
。10-02 14:42