プロセスがなくても `/proc/xxx` への cd が動作します。

プロセスがなくても `/proc/xxx` への cd が動作します。

今日私はこのフォルダに奇妙なことを見つけました/proc。実行中のプロセスとしては見えないPID(7825)がありps、作成時にプロセスIDを見ることはできませんが、ls /procそれを使用して見ることができ、ls /proc/7825CDに入ることができます。出力は次のとおりです。

# ls /proc

...
dr-xr-xr-x   9 xxxxxxx         xxxxxxx             0 May 16 20:57 7812
dr-xr-xr-x   9 xxxxxxx         xxxxxxx             0 May 16 20:52 7820
dr-xr-xr-x   9 root            root                0 May 16 20:52 7836
dr-xr-xr-x   9 root            root                0 May 16 20:52 786
dr-xr-xr-x   9 xxxxxxx         xxxxxxx             0 May 16 20:57 7923
dr-xr-xr-x   9 xxxxxxx         xxxxxxx             0 May 16 20:52 7924
...
ps aux | grep [7]825

[EMPTY RESULT]
ls /proc/7825
attr    clear_refs  coredump_filter  environ  fdinfo   largest_task  make-it-fail  mem        mountstats  oom_adj        pagemap      root       setgroups  stat    syscall        timerslack_ns  weight
auxv    cmdline     cpuset           exe      gid_map  limits        map_files     mountinfo  net         oom_score      personality  schedstat  smaps      statm   task           uid_map
cgroup  comm        cwd              fd       io       loginuid      maps          mounts     ns          oom_score_adj  projid_map   sessionid  stack      status  time_in_state  wchan

このPIDを使用できますが、オペレーティングシステムls /proc/7825には表示されないのはなぜですか?psls /proc

特定のPID(最後の実行)がまだ実行中である(存在するかどうかを確認/proc/[LAST_RUN_PID]/exe)確認する必要があるため、これは私のプログラムにとって非常に重要です。その場合、前の実行は「まだ実行中」と見なされます。今日、私たちは/proc/7825/exeプログラムが実行されていなくても、ファイルが数時間そのまま残っている問題に直面しました。

誰かがなぜこれが起こるのかを詳しく説明してください。

答え1

psLinuxで情報を取得すると、/proc情報は実際には変わりません。無効なpid / mount名前空間の設定により、表示された/proc情報が現在のpid名前空間から出ていない場合でも、ps同じエラーメッセージが報告されます。

ここで、7825は他のプロセスのスレッドである可能性が高いです。の出力で見ることができますps -ALf。これは、プロセスだけでなくすべてのスレッド(軽量プロセス)を報告するように-L指示します。ps

関連情報