PID가 실행되고 있지 않은 경우 / proc / PID가 계속 존재할 수 있습니까?


11

/proc/4587PID 4587이있는 프로세스가 없어도 같은 폴더 가 존재할 수 있습니까?


1
/ proc / N 검사가 PID N이 실행 중인지 확인하는 안전하고 신뢰할 수있는 방법인지 궁금하십니까?
Andy Lester

프로세스가 끝난 후 이론적으로 / proc에 잔류 물이있을 수 있는지 궁금합니다.
David Dai

답변:


25

경우 /proc에만 인이 proc마운트 (아무도 오버레이 트릭을 재생되지 않음), 아니, PID를 기반 폴더 만 (좀비로 포함) 한 해당 프로세스가 어떤 상태로 존재로 존재한다. 실제로 프로세스 ID에 대한 디렉토리 항목을 반환하기 직전에 커널은 프로세스의 존재를 재확인합니다. 따라서 디렉토리 항목이 반환되는 순간 해당 프로세스가 여전히 존재합니다. 디렉토리 액세스는 해당 프로세스를 찾아서 시작합니다. 줄 번호가 변경되면 proc_pident_instantiate및을 찾으십시오 proc_pident_lookup.

/proc나중에 결과 를 나열 하고 사용하여 (몇 마이크로 초 후에도) 발생하는 문제가 발생할 수 있습니다. 목록을 표시 할 때 프로세스가 실행 중일 수 있으며 /proc결과를 처리하기 전에 중지 할 수 있습니다 .


3
실행이 완료 wait()되었지만 호출되지 않은 프로세스는 어떻습니까?
el.pescado

2
좋은 점 @ el.pescado, 빠른 검사는 좀비 프로세스에 여전히 디렉토리가 있음을 나타냅니다. 답변을 업데이트하겠습니다. 감사합니다.
Stephen Kitt

기본적으로 ps프로세스가 표시되면 해당 /proc디렉토리가 존재해야합니다.
Barmar

@Barmar는 실제로“필수”: 표시되는 정보를 찾기 위해 ps액세스 /proc합니다.
Stephen Kitt
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.