gpt4 book ai didi

linux - pidof 和 pgrep 之间的区别?

转载 作者:太空宇宙 更新时间:2023-11-04 04:53:51 26 4
gpt4 key购买 nike

我不知道为什么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

关于linux - pidof 和 pgrep 之间的区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52151698/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com