development

nohup 프로세스를 종료하기 위해 프로세스 ID를 얻는 방법은 무엇입니까?

big-blog 2020. 5. 15. 19:59
반응형

nohup 프로세스를 종료하기 위해 프로세스 ID를 얻는 방법은 무엇입니까?


서버에서 nohup 프로세스를 실행 중입니다. 그것을 죽이려고하면 퍼티 콘솔이 대신 닫힙니다.

이것이 프로세스 ID를 찾는 방법입니다.

ps -ef |grep nohup 

이것은 죽이는 명령입니다

 kill -9 1787 787

사용하는 경우 nohup당신은 백그라운드에서 작업을 넣어, 배경 연산자 ( &) 프롬프트 명령에 당신에게 PID를 제공 할 것입니다. 계획이 프로세스를 수동으로 관리하려는 경우 PID를 저장하고 나중에 PID를 저장하여 필요할 경우 kill PID또는 kill -9 PID강제로 강제 종료해야하는 경우 프로세스 를 강제 종료 할 수 있습니다. 또는 나중에 ps -ef | grep "command name"PID를 찾아 PID를 찾을 수 있습니다. 참고 nohup키워드 / 명령 자체가 표시되지 않는 ps문제의 명령의 출력.

스크립트를 사용한 경우 다음과 같은 작업을 수행 할 수 있습니다.

nohup my_command > my.log 2>&1 &
echo $! > save_pid.txt

이것은 실행 my_command에 모든 출력 저장 my.log(스크립트의를 $!마지막 프로세스의 PID 실행 나타낸다). 2표준 오류에 대한 파일 기술자 (인 stderr) 및 2>&1표준 출력 (파일 기술자로 라우팅 표준 오류 출력에 쉘을 알려줍니다 1). &1쉘이 파일 이름이 아닌 해당 컨텍스트에서 파일 디스크립터임을 알 수 있도록 요구합니다 1. 2>&1일반적으로 우리에 표준 오류에 기록되는 오류 메시지를 캡처하기 위해 필요 my.log(표준 출력에서 오는) 파일을. 쉘을 사용한 I / O 리디렉션 처리에 대한 자세한 내용 I / O 리디렉션 을 참조하십시오.

명령이 정기적으로 출력을 보내면을 사용하여 가끔 출력을 확인 tail my.log하거나 "실시간"을 따라 가려면을 사용할 수 있습니다 tail -f my.log. 마지막으로 프로세스를 종료해야하는 경우 다음을 통해 수행 할 수 있습니다.

kill -9 `cat save_pid.txt`
rm save_pid.txt

VPS 서버 (및 SSH-putty를 통해)에서 Red Hat Linux를 사용하고 있습니다.

먼저 실행중인 모든 프로세스를 나열합니다.

ps -ef

그런 다음 첫 번째 열에 사용자 이름이 있습니다. 나는 그것을 다음 세 번 발견했다.

  • 하나는 SSH 연결이었습니다
  • 두 번째는 FTP 연결이었습니다
  • 마지막은 nohup 프로세스였습니다

그런 다음 두 번째 열에서 nohup 프로세스의 PID를 찾을 수 있으며 다음을 입력하십시오.

kill PID 

(물론 nohup 프로세스의 PID로 PID를 대체합니다)

그리고 그게 다야!

이 답변이 bash 및 SSH를 처음 접하는 사람에게 유용하지만 여기에서 필요한 지식의 95 %를 찾았습니다. :)


아래 명령으로 백그라운드에서 루비 스크립트를 실행한다고 가정하십시오.

nohup ruby script.rb &

그런 다음 명령 이름을 지정하여 위의 백그라운드 프로세스의 pid를 얻을 수 있습니다. 제 경우에는 명령이 루비입니다.

ps -ef | grep ruby

산출

ubuntu   25938 25742  0 05:16 pts/0    00:00:00 ruby test.rb

kill 명령을 사용하여 프로세스를 쉽게 종료 할 수 있습니다.

kill 25938

jobs -l 은 nohup 프로세스 목록에 대한 pid를 제공해야합니다. 그들을 부드럽게 (-9) 죽이십시오. ;)


당신은 시도 할 수 있습니다

kill -9 `pgrep [command name]`

이것은 작동합니다 Ubuntu

이것을 입력하여 PID

ps aux | grep java

자바에 관한 모든 실행중인 프로세스가 표시됩니다

내 경우에는

johnjoe      3315  9.1  4.0 1465240 335728 ?      Sl   09:42   3:19 java -jar batch.jar

자 죽여 kill -9 3315

좀비 프로세스가 마침내 중단되었습니다.


다음 명령으로 django 서버를 시작했습니다.

nohup manage.py runserver <localhost:port>

이것은 CentOS에서 작동합니다.

:~ ns$netstat -ntlp
:~ ns$kill -9 PID 

nohup으로 Java 프로그램을 실행한다고 가정하면 Java 프로세스 ID를 얻을 수 있습니다.

`ps aux | grep java`

산출

xxxxx     9643  0.0  0.0  14232   968 pts/2   

다음을 입력하여 프로세스를 종료 할 수 있습니다

sudo kill 9643

또는 모든 Java 프로세스를 종료해야한다고 말하면됩니다.

sudo killall java

this command kills all the java processors. you can use this with process. just give the process name at the end of the command

sudo killall {processName}

when you create a job in nohup it will tell you the process ID !

nohup sh test.sh &

the output will show you the process ID like

25013

you can kill it then :

kill 25013

Today I met the same problem. And since it was a long time ago, I totally forgot which command I used and when. I tried three methods:

  1. Using the STIME shown in ps -ef command. This shows the time you start your process, and it's very likely that you nohup you command just before you close ssh(depends on you) . Unfortunately I don't think the latest command is the command I run using nohup, so this doesn't work for me.
  2. Second is the PPID, also shown in ps -ef command. It means Parent Process ID, the ID of process that creates the process. The ppid is 1 in ubuntu for process that using nohup to run. Then you can use ps --ppid "1" to get the list, and check TIME(the total CPU time your process use) or CMD to find the process's PID.
  3. Use lsof -i:port if the process occupy some ports, and you will get the command. Then just like the answer above, use ps -ef | grep command and you will get the PID.

Once you find the PID of the process, then can use kill pid to terminal the process.

참고URL : https://stackoverflow.com/questions/17385794/how-to-get-the-process-id-to-kill-a-nohup-process

반응형