nohup 프로세스를 중지할 수 없습니다.

nohup 프로세스를 중지할 수 없습니다.

매우 복잡한 통계 모델을 실행하려고 하는데 모델 시간이 오래 걸릴 것으로 예상되어 nohup프로세스를 실행하곤 했습니다. 하지만 프로세스를 과소평가했고 완료하는 데 약 260일 이상이 소요될 예정이어서 프로세스를 취소하고 싶었습니다.

Get PID를 사용해 보았고 ps aux |grep nohup다음과 같은 결과를 얻었습니다.

 \<username> 4920  0.0  0.0  14224   972 pts/15   S+   01:53   0:00 grep nohup

제가 사용해보니 kill -9 14224아무런 과정이 없다고 하더군요. 그래서 ps -ef | grep beast-2제가 입력한 명령어를 다 기억하지 못해서 그걸 사용했어요 . 다음을 꺼내세요:

144039      1  0 Jul22 pts/12   00:00:00 /bin/sh /opt/anaconda3/bin/beast-2 -seed 777 -working -overwrite -instances 3 -threads 3 -beagle_SSE /home/<username>/XML/ST736_MTBD1.xml

다시 사용해서 확인해 보았 kill -9 144039으나 여전히 새 PID로 프로세스가 실행되고 있습니다.

어떡해?

답변1

grep nohup말했듯이 프로세스 14224는 ps. 따라서 프롬프트를 받으면 grep종료되므로 kill그러한 프로세스가 없다고 보고하는 것이 논리적입니다.

nohup출력에는 호출 프로세스가 표시되지 않습니다 ps.

그렇다면 죽이는 과정을 어떻게 찾나요?

저는 당신 것이 없기 때문에 beast-2시연용으로 사용하겠습니다 nohup sleep 99 &.

ps -ef | grep sleep

이것이 나에게 줄 것이다

ljm      1491988 1336776  0 16:43 pts/0    00:00:00 sleep 999
ljm      1492021 1492069  0 16:45 pts/0    00:00:00 grep sleep

1492021은 다시 내 것이므로 grep여기서는 중요하지 않습니다. 1491988은 내 기분이 좋지 않습니다 sleep. 상위 PID는 1336776입니다. 그래서 그것을 확인하면 나에게

$ ps -f 1336776
UID          PID    PPID  C STIME TTY      STAT   TIME CMD
ljm      1336776 1336769  0 Jul22 pts/0    Ss+    0:00 /bin/bash

이것은 bash. 예를 들어 다음을 사용하여 더 위로 올라갈 수 있습니다 pstree.

$ pstree -ap  1336769
konsole,1336769
  └─bash,1336776
      └─sleep,1492051 999

따라서 부모를 죽이면 더 이상 새로운 부모가 생성되지 않습니다 beast-2. 여기 내가 할게

kill 1336769

console 과 sleep 을 종료 bash하지만 nohupped sleep은 종료하지 않습니다.

$ ps -ef | grep sleep
ljm      1492051       1  0 16:48 ?        00:00:00 sleep 999
ljm      1492285 1492069  0 16:57 pts/1    00:00:00 grep sleep

이제 상위 프로세스가 1init 프로세스가 되었습니다. 지금 잠을 죽이면

$ kill 1492051
$ ps -ef | grep sleep
ljm      1492329 1492069  0 16:59 pts/1    00:00:00 grep sleep

그런 다음 모든 것이 사라졌습니다.

답변2

제 경우에는 laravel을 보호하기 위해 nohup을 사용합니다. 또한 포트에 바인딩된 프로세스를 종료해야 했습니다.

fuser 8080/tcp거기에서 발견된 PID를 사용 하고(포트를 자신의 포트로 변경) 종료하십시오.

관련 정보