我查看了一个进程列表并筛选出了ssh-agent,它正确地显示了我期望的3个进程:
$ ps -ef | grep ssh-agent
belmin 1051 1 0 16:05 ? 00:00:00 ssh-agent -a /home/belmin/.ssh/.auth_sock.pineapple
belmin 2569 1 0 16:09 ? 00:00:00 ssh-agent -a /home/belmin/.ssh/.auth_sock.pineapple
belmin 2655 1 0 16:09 ? 00:00:00 ssh-agent -a /home/belmin/.ssh/.auth_sock.pineapple
belmin 5093 2596 0 16:17 pts/1 00:00:00 grep --color ssh-agent但是,如果我执行一个pgrep,它不会列出这3个进程,除非我升级到sudo:
$ pgrep -a ssh-agent
$ sudo !!
sudo pgrep -a ssh-agent
1051 ssh-agent -a /home/belmin/.ssh/.auth_sock.pineapple
2569 ssh-agent -a /home/belmin/.ssh/.auth_sock.pineapple
2655 ssh-agent -a /home/belmin/.ssh/.auth_sock.pineapple最初,我认为这是因为PPID是1,但是,这并不是其他进程的问题,因为PPID是1,所以不是这样。
我在这里错过了什么?
更新:
因此,应用命名空间参数(--ns)显然不需要sudo--不管我提供了什么名称空间:
$ for n in 'ipc' 'mnt' 'net' 'pid' 'user' 'uts'; do echo pgrep -a --ns $n ssh-agent; pgrep -a --ns $n ssh-agent; done
pgrep -a --ns ipc ssh-agent
12986 ssh-agent -a /home/belmin/.ssh/.auth_sock.pineapple
pgrep -a --ns mnt ssh-agent
12986 ssh-agent -a /home/belmin/.ssh/.auth_sock.pineapple
pgrep -a --ns net ssh-agent
12986 ssh-agent -a /home/belmin/.ssh/.auth_sock.pineapple
pgrep -a --ns pid ssh-agent
12986 ssh-agent -a /home/belmin/.ssh/.auth_sock.pineapple
pgrep -a --ns user ssh-agent
12986 ssh-agent -a /home/belmin/.ssh/.auth_sock.pineapple
pgrep -a --ns uts ssh-agent
12986 ssh-agent -a /home/belmin/.ssh/.auth_sock.pineapple还不清楚为什么。我会继续挖。
发布于 2018-04-19 12:32:08
Procps 3.3.13在名称空间上有pgrep过滤器。主要是为了避免在它的命名空间之外杀死。然而,对于某些过程,特别是SSH,由于某些原因,它给出了一些奇怪的结果。
3.3.14这一变化已恢复。
发布于 2018-04-18 23:08:09
您可以使用选项/proc设置安装hidepid文件系统。这是一个安全功能,以保护信息不受系统上其他用户的影响。有关详细信息,请参阅man页面以获取proc。通过执行grep proc /etc/mtab并查看结果是否包括hidepid=2,您可以检查是否是这种情况。您可以通过修改文件/etc/fstab来更改设置。
https://unix.stackexchange.com/questions/438600
复制相似问题