pgrepは私のプロセスを表示しませんが、sudo pgrepが表示するのはなぜですか?

pgrepは私のプロセスを表示しませんが、sudo pgrepが表示するのはなぜですか?

プロセスのリストを見て、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

関連情報