프로세스 목록을 보고 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
이유는 불분명합니다. 계속 파헤쳐 보겠습니다.
답변1
Procps 3.3.13에는 네임스페이스에 대한 pgrep 필터가 있습니다. 주로 pkill이 네임스페이스 외부의 콘텐츠를 죽이지 않도록 하기 위함입니다. 그러나 일부 프로세스, 특히 어떤 이유로 SSH를 둘러싼 프로세스에서는 이상한 결과가 나타납니다.
이 변경 사항은 3.3.14에서 되돌려졌습니다.
답변2
/proc
옵션 세트를 사용하여 파일 시스템을 마운트 했을 수 있습니다 hidepid
. 이는 시스템 내 다른 사용자의 정보를 보호하기 위해 고안된 보안 기능입니다. 전체 정보 man
는 페이지를 참조하세요 proc
. 실행 grep proc /etc/mtab
하고 결과에 가 포함되어 있는지 확인하면 이러한 경우인지 확인할 수 있습니다 hidepid=2
. 파일을 수정하여 설정을 변경할 수 있습니다 /etc/fstab
.