프로세스가 없어도 `/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

관련 정보