nginx 프로세스의 PID를 찾는 방법

nginx 프로세스의 PID를 찾는 방법

nginx 관련 문제를 해결하려고 하는데 내 컴퓨터에서 nginx 프로세스가 실행되고 있다고 생각했습니다. 이 명령을 실행하면 다음과 같은 출력이 표시됩니다.

$ ps aux -P | grep nginx
1000      3947  0.0  0.0  13596   932 pts/0    S+   14:05   0:00 grep --color=auto nginx

하지만 프로세스 1000, 3947, 13596 또는 932를 종료하려고 하면 다음과 같은 오류가 발생합니다.

bash: kill: (1000) - No such process

무슨 일이에요? nginx 프로세스를 찾고 종료하는 방법은 무엇입니까?

답변1

저는 보통 . pgrep보다 더 편리하다고 생각합니다 ps | grep. killall최종 목표가 이름으로 여러 프로세스를 삭제하는 것인지 확인하고 싶을 수도 있습니다 .

답변2

ps aux -P다음 열을 표시합니다.

$ ps aux -P | head -1
USER       PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND

두 번째 열만 pid입니다.

경고: 임의의 pid를 죽이려고 하지 마십시오.

pid 3947은 프롬프트가 표시되었을 때 종료된 grep 프로세스이므로 실제로 그러한 프로세스는 없습니다.

nginx 프로세스가 있는 경우 grep 출력에 표시됩니다. 결론: nginx가 귀하의 컴퓨터에서 실행되고 있지 않습니다.

답변3

grep명령 자체가 ps출력 에 나타나지 않도록 하는 일반적인 방법은 첫 번째 문자를 문자 클래스에 넣어 리터럴 자체와 일치하지 않도록 하는 것입니다. 즉,

$ ps aux | grep [n]ginx

이렇게 하면 grep패턴이 "nginx"와 일치하지만 출력에 표시된 리터럴 "[n]ginx"와는 일치하지 않습니다 ps.

답변4

sudo프로세스를 관리하기 위해 이를 사용해야 하는 경우가 많습니다 nginx. sudo"작업이 허용되지 않음" 오류가 발생하는 경우 아래의 모든 명령 앞에 접두어를 입력하세요. 이 질문에는 "ps"라는 태그가 붙어 있지만 다른 기회에 대해서도 언급하고 싶습니다.

nginx를 중지하려면 다음을 사용하는 것이 좋습니다.

service nginx stop

그러나 귀하의 목적이 "pid" 자체를 찾는 것이라면(예: 신호 보내기) nginx.pidnginx가 시작되면 해당 pid를 이 파일에 저장합니다.

nginx신호를 사용하여 제어할 수 있습니다. 마스터 프로세스의 프로세스 ID는 기본적으로 /usr/local/nginx/logs/nginx.pid 파일에 기록됩니다.

하지만 다른 곳에 있을 수도 있습니다.

당신이 가지고 있다면nginx를 직접 컴파일pid-path지정할 수도 있습니다.

--pid-path=pathnginx.pid- 마스터 프로세스의 프로세스 ID가 저장될 파일 이름을 설정합니다. 설치 후에는 언제든지 pid 지시어를 사용하여 nginx.conf 구성 파일에서 파일 이름을 변경할 수 있습니다. 기본적으로 파일 이름은 prefix/logs/nginx.pid입니다.

그렇지 않은 경우에는 pid 파일 경로를 명시적으로 지정할 수 있습니다 nginx.conf.

읽다Nginx 제어

따라서 신호를 보내려면 다음을 입력하십시오.

kill `cat /path/to/nginx.pid`

또는

kill $(cat /path/to/nginx.pid)

읽다PID 파일을 통해 프로세스 종료.

개인적으로 스크립트나 배포 지침을 작성할 때 nginx pid에 대한 중지나 검색을 위임하지 않습니다. pgrep특히 Windows에서는 grep로컬 컴퓨터에서 작동하더라도 마찬가지입니다. 하지만 이 경우 중지를 pkill(프로세스 종료됨) 으로 줄입니다 .

pkill nginx

관련 정보