> 운영 및 유지보수 > 리눅스 운영 및 유지 관리 > 리눅스는 프로세스가 존재하는지 감지합니다

리눅스는 프로세스가 존재하는지 감지합니다

(*-*)浩
풀어 주다: 2019-11-04 10:17:33
원래의
3214명이 탐색했습니다.

리눅스는 프로세스가 존재하는지 감지합니다

Linux에 프로세스가 존재하는지 감지                                                                                                              (추천 학습: linux 운영 및 유지 관리 )

이 문제는 매우 간단한 것 같습니다. "ps -ef | grep xx" 그냥 해보세요! 물론 이렇게 할 수도 있지만 성능을 고려한다면 이는 좋은 생각이 아닐 수도 있습니다.

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

그래서 성능 관점에서 더 나은 방법을 모색해야 합니다.

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

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

[sw@gentoo ~]$ ps
  PID TTY          TIME CMD
pts/0    00:00:00 bash
pts/0    00:00:00 ps
[sw@gentoo ~]$ kill -0 15091
[sw@gentoo ~]$ echo $?
[sw@gentoo ~]$ kill -0 15092
-bash: kill: (15092) - No such process
[sw@gentoo ~]$ echo $?
[sw@gentoo ~]$
로그인 후 복사

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

[sw@gentoo ~]$ kill 2993
-bash: kill: (2993) - Operation not permitted
[sw@gentoo ~]$ echo $?
1
[sw@gentoo ~]$
로그인 후 복사

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

위 내용은 리눅스는 프로세스가 존재하는지 감지합니다의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿