오늘 저는 이 폴더에서 이상한 점을 발견했습니다 /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