Как убить процесс nohup? - PullRequest
       50

Как убить процесс nohup?

32 голосов
/ 04 ноября 2011

Я выполнил следующую команду

$ nohup ./tests.run.pl 0 &

теперь, когда я пытаюсь убить его (и выполнение, запущенное из этого скрипта), используя

$ kill -0 <process_id>

это не работает. Как я могу убить процесс nohupped и процессы, которые запускаются через скрипт nohupped?

Спасибо

Ответы [ 5 ]

43 голосов
/ 04 ноября 2011

kill -0 не не убивает процесс. Он просто проверяет, можете ли вы отправить ему сигнал.

Просто kill pid, и если это не сработает, попробуйте kill -9 pid.

26 голосов
/ 04 ноября 2011

Просто kill <pid>, который отправит SIGTERM, который nohup не будет игнорироваться.

Вы не должны сначала отправлять SIGKILL, так как это не дает процессу восстановиться; вам следует попробовать следующее:

  • SIGTERM (15)
  • SIGINT (2)
  • SIGKILL (9)
4 голосов
/ 20 декабря 2016

Я бы сделал что-то вроде:

jobs

[1] + Running nohup ./tests.run.pl

kill %1
3 голосов
/ 12 января 2016

Если вы не знаете идентификаторы процесса и он может выполнять различные команды в оболочке (или в цикле), вы можете запустить jobs -l, чтобы вывести список заданий и PID, а затем kill их.

См. Пример:

ubuntu@app2:/usr/share/etlservice/bin$ jobs -l
[1]  27398 Running                 nohup ./extract_assessor_01.sh > job1.log &
[2]  27474 Running                 nohup ./extract_assessor_02.sh > job2.log &
[3]  27478 Running                 nohup ./extract_assessor_03.sh > job3.log &
[4]- 27481 Running                 nohup ./extract_assessor_04.sh > job4.log &
[5]+ 28664 Running                 nohup ./extract_assessor_01.sh > job1.log &
ubuntu@app2:/usr/share/etlservice/bin$ sudo kill 27398
sudo kill 27474[1]   Terminated              nohup ./extract_assessor_01.sh > job1.log
ubuntu@app2:/usr/share/etlservice/bin$ sudo kill 27474
[2]   Terminated              nohup ./extract_assessor_02.sh > job2.log
ubuntu@app2:/usr/share/etlservice/bin$ sudo kill 27478
[3]   Terminated              nohup ./extract_assessor_03.sh > job3.log
ubuntu@app2:/usr/share/etlservice/bin$ sudo kill 27481
[4]-  Terminated              nohup ./extract_assessor_04.sh > job4.log
ubuntu@app2:/usr/share/etlservice/bin$ sudo kill 28664
[5]+  Terminated              nohup ./extract_assessor_01.sh > job1.log
ubuntu@app2:/usr/share/etlservice/bin$
0 голосов
/ 12 августа 2017

убить nohup процесс

ps aux |grep nohup

grep that PID kill -15 -1 16000 (выйдет из системы) и очистите при следующем входе в систему root

...