今天我发现/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
...
Run Code Online (Sandbox Code Playgroud)
ps aux | grep [7]825
[EMPTY RESULT]
Run Code Online (Sandbox Code Playgroud)
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
Run Code Online (Sandbox Code Playgroud)
为什么此 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
报告所有线程(轻量级进程),而不仅仅是进程。
归档时间: |
|
查看次数: |
31 次 |
最近记录: |