为什么我在 ps 列表中找不到 ping 进程?

为什么我在 ps 列表中找不到 ping 进程?

当我以普通用户身份启动“ps”列表时,为什么看不到“ping”进程?

ping 二进制文件有 setuid 位,

 ls -l /bin/ping
-rwsr-xr-x 1 root root 64424 jun 28  2019 /bin/ping

在后台运行 ping,

ping google.com > /dev/null &
[1] 28193

当我使用 ps 作为我的用户(enn)查找此进程时,我找不到它,

 ps -ef  | grep 28193

而如果我使用超级用户,我可以找到它,

sudo ps -ef | grep 28193 | grep -v grep
enn  28193  6878  0 13:49 pts/3    00:00:00 ping google.com

使用附注打印关联的 ID,我可以看到 ping 进程正在使用我的 {u,e,r}id/{g,e,r}id = 66973, 64000 运行

我能看到的唯一区别是苏伊德,设置为 0

sudo ps -e -o pid,uid,gid,euid,egid,ruid,rgid,suid,sgid,cmd | grep 28193 | grep -v grep

28193 66973 64000 66973 64000 66973 64000     0 64000 ping google.com

我无法理解其原因,有人可以帮助我理解我作为普通用户看不到该过程的原因吗?

系统信息:“Ubuntu 18.04.6 LTS”

预先感谢,娜迦

答案1

在这里工作得很好(Fedora 34)。在我的 Gnome 终端的一个选项卡上运行ping 8.8.8.8,在另一个选项卡上运行:

$ pgrep ping
295323
$ ps -ef | grep 295323 
user  295323    3772  0 18:50 pts/4    00:00:00 ping 8.8.8.8
user  295628    3726  0 18:53 pts/3    00:00:00 grep --color=auto 295323

你确定你没有把PID复制错吗(我身上大约有一半的情况发生过)?仍在ping运行(例如,如果找不到目标,它就会停止运行)?

相关内容