我在 Ubuntu 17.04 上列出了进程,注意到以下进程:
root@user-virtual-machine:~# ps xao pid=,ppid=,pgid=,sid=
1603 1 1601 1601
Run Code Online (Sandbox Code Playgroud)
但是进程 1601 不存在。
root@user-virtual-machine:~# ls /proc/1601
ls: cannot access '/proc/1601': No such file or directory
Run Code Online (Sandbox Code Playgroud)
正如你所看到的 /proc/1603/status 仍然引用 1601。
root@user-virtual-machine:~# cat /proc/1603/status
Name: VGAuthService
Umask: 0000
State: S (sleeping)
Tgid: 1603
Ngid: 0
Pid: 1603
PPid: 1
TracerPid: 0
Uid: 0 0 0 0
Gid: 0 0 0 0
FDSize: 64
Groups:
NStgid: 1603
NSpid: 1603
NSpgid: 1601
NSsid: 1601
Run Code Online (Sandbox Code Playgroud)
重要的是,我在主机上(不在容器内)。
怎么可能?如何为不存在的进程设置 setid/setpgid?