今日私はこのフォルダに奇妙なことを見つけました/proc
。実行中のプロセスとしては見えないPID(7825)がありps
、作成時にプロセスIDを見ることはできませんが、ls /proc
それを使用して見ることができ、ls /proc/7825
CDに入ることができます。出力は次のとおりです。
# 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
には表示されないのはなぜですか?ps
ls /proc
特定のPID(最後の実行)がまだ実行中である(存在するかどうかを確認/proc/[LAST_RUN_PID]/exe
)確認する必要があるため、これは私のプログラムにとって非常に重要です。その場合、前の実行は「まだ実行中」と見なされます。今日、私たちは/proc/7825/exe
プログラムが実行されていなくても、ファイルが数時間そのまま残っている問題に直面しました。
誰かがなぜこれが起こるのかを詳しく説明してください。
答え1
ps
Linuxで情報を取得すると、/proc
情報は実際には変わりません。無効なpid / mount名前空間の設定により、表示された/proc
情報が現在のpid名前空間から出ていない場合でも、ps
同じエラーメッセージが報告されます。
ここで、7825は他のプロセスのスレッドである可能性が高いです。の出力で見ることができますps -ALf
。これは、プロセスだけでなくすべてのスレッド(軽量プロセス)を報告するように-L
指示します。ps