Linux에서는 kill 명령을 사용하여 pid를 기반으로 프로세스가 존재하는지 확인할 수 있습니다. "kill -0"은 프로세스에 신호를 보내지 않지만 프로세스가 존재하는 경우 오류 검사를 수행합니다. 0입니다. 프로세스가 존재하지 않으면 반환된 결과는 1이고 구문은 "kill -0 pid"입니다.
이 튜토리얼의 운영 환경: linux7.3 시스템, Dell G3 컴퓨터.
이제 프로세스가 살아 있는지 모니터링하고 매분 확인하고 싶다고 가정해 보겠습니다. 위의 방법을 사용하면 매분 ps 명령을 실행하고 다음 작업을 수행해야 합니다. grep 일반 검색. 이 오버헤드는 서버에서는 아무 것도 아닌 것처럼 보이지만, 동일한 노드에서 수십 또는 수백 개의 프로세스를 동시에 모니터링하려면 어떻게 해야 할까요? 따라서 성능 관점에서 더 나은 방법을 모색해야 합니다.
데몬 프로세스의 경우 일반적으로 자체 PID 또는 잠금 파일이 있는지 확인하여 프로세스가 존재하는지 확인할 수 있습니다. 그러나 일부 비정상적인 상황에서는 pid 파일이 존재하는 프로세스가 존재하지 않습니다. 따라서 프로세스의 pid 파일을 사용하여 프로세스가 활성 상태인지 감지할 수 없습니다.
신뢰할 수 있는 방법은 "kill -0 pid"를 사용하는 것입니다. kill -0은 프로세스에 신호를 보내지 않지만 오류 검사를 수행합니다. 이 명령은 프로세스가 존재하면 0을 반환하고, 존재하지 않으면 1을 반환합니다.
그러나 이 방법은 일반 사용자가 자신의 프로세스를 확인하는 경우에만 사용할 수 있습니다. 다른 사용자의 프로세스에 신호를 보내면 권한 부족으로 인해 오류가 발생하고 반환 값도 1이기 때문입니다.
[sw@gentoo ~]$ kill 2993 -bash: kill: (2993) - Operation not permitted [sw@gentoo ~]$ echo $? 1 [sw@gentoo ~]$
물론, 권한이 있는 사용자로 kill 명령을 실행하면 권한 문제는 없습니다.
한편, 우리는 커널이 /proc 가상 파일 시스템을 통해 시스템에서 실행 중인 프로세스 정보를 내보낸다는 것을 알고 있습니다. 따라서 프로세스 존재 감지를 /proc/
관련 추천: "Linux 비디오 튜토리얼"
위 내용은 pid를 사용하여 Linux에 프로세스가 존재하는지 확인하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!