Proccd into
cd into /proc/xxx
即使沒有程序也可以工作
今天我發現這個
/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
os中ls /proc
?這對我的程序非常重要,因為我必須檢查某個 PID(上一次執行的)是否仍在執行(檢查是否
/proc/[LAST_RUN_PID]/exe
存在)。如果是這樣,我認為之前的執行是“仍在執行”。/proc/7825/exe
今天我們遇到了一個問題,即使沒有程序執行,文件仍然存在(幾個小時)。有人可以詳細說明為什麼/如何發生這種情況嗎?
ps
在 Linux 上獲取其資訊,/proc
因此它們的資訊不會真正不同。即使不正確的 pid/mount 命名空間設置意味著/proc
表示的資訊不是來自目前的 pid 命名空間,ps
也會報告相同的錯誤資訊。在這裡,7825 很可能是某個其他程序的執行緒,您會在 的輸出中看到它
ps -ALf
,其中-L
告訴ps
報告所有執行緒(輕量級程序),而不僅僅是程序。