>운영 및 유지보수 >리눅스 운영 및 유지 관리 >pid를 사용하여 Linux에 프로세스가 존재하는지 확인하는 방법

pid를 사용하여 Linux에 프로세스가 존재하는지 확인하는 방법

WBOY
WBOY원래의
2022-04-07 12:37:416878검색

Linux에서는 kill 명령을 사용하여 pid를 기반으로 프로세스가 존재하는지 확인할 수 있습니다. "kill -0"은 프로세스에 신호를 보내지 않지만 프로세스가 존재하는 경우 오류 검사를 수행합니다. 0입니다. 프로세스가 존재하지 않으면 반환된 결과는 1이고 구문은 "kill -0 pid"입니다.

pid를 사용하여 Linux에 프로세스가 존재하는지 확인하는 방법

이 튜토리얼의 운영 환경: linux7.3 시스템, Dell G3 컴퓨터.

Pid를 사용하여 Linux에 프로세스가 존재하는지 확인하는 방법

이제 프로세스가 살아 있는지 모니터링하고 매분 확인하고 싶다고 가정해 보겠습니다. 위의 방법을 사용하면 매분 ps 명령을 실행하고 다음 작업을 수행해야 합니다. grep 일반 검색. 이 오버헤드는 서버에서는 아무 것도 아닌 것처럼 보이지만, 동일한 노드에서 수십 또는 수백 개의 프로세스를 동시에 모니터링하려면 어떻게 해야 할까요? 따라서 성능 관점에서 더 나은 방법을 모색해야 합니다.

데몬 프로세스의 경우 일반적으로 자체 PID 또는 잠금 파일이 있는지 확인하여 프로세스가 존재하는지 확인할 수 있습니다. 그러나 일부 비정상적인 상황에서는 pid 파일이 존재하는 프로세스가 존재하지 않습니다. 따라서 프로세스의 pid 파일을 사용하여 프로세스가 활성 상태인지 감지할 수 없습니다.

신뢰할 수 있는 방법은 "kill -0 pid"를 사용하는 것입니다. kill -0은 프로세스에 신호를 보내지 않지만 오류 검사를 수행합니다. 이 명령은 프로세스가 존재하면 0을 반환하고, 존재하지 않으면 1을 반환합니다.

pid를 사용하여 Linux에 프로세스가 존재하는지 확인하는 방법

그러나 이 방법은 일반 사용자가 자신의 프로세스를 확인하는 경우에만 사용할 수 있습니다. 다른 사용자의 프로세스에 신호를 보내면 권한 부족으로 인해 오류가 발생하고 반환 값도 1이기 때문입니다.

[sw@gentoo ~]$ kill 2993
-bash: kill: (2993) - Operation not permitted
[sw@gentoo ~]$ echo $?
1
[sw@gentoo ~]$

물론, 권한이 있는 사용자로 kill 명령을 실행하면 권한 문제는 없습니다.

한편, 우리는 커널이 /proc 가상 파일 시스템을 통해 시스템에서 실행 중인 프로세스 정보를 내보낸다는 것을 알고 있습니다. 따라서 프로세스 존재 감지를 /proc/ 디렉토리 존재 감지로 변환할 수 있으며 이는 훨씬 간단합니다.

관련 추천: "Linux 비디오 튜토리얼"

위 내용은 pid를 사용하여 Linux에 프로세스가 존재하는지 확인하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.