Как убить процесс nohup?
Я выполнил следующую команду
$ nohup ./tests.run.pl 0 &
теперь, когда я пытаюсь убить его (и выполнения, которые запускаются из этого скрипта), используя
$ kill -0 <process_id>
он не работает. Как я могу убить процесс nohupped и процессы, которые выполняются через скрипт nohupped?
спасибо
5 ответов
kill -0
тут не убить процесс. Он просто проверяет, можешь ли ты послать ему сигнал.
просто kill pid
, а если это не сработает, попробуй kill -9 pid
.
просто kill <pid>
который отправит SIGTERM
, который nohup
не игнорировать.
вы не должны послать SIGKILL
во-первых, поскольку это не дает процессу возможности восстановиться; вы должны попробовать следующее, в порядке:
-
SIGTERM
(15) -
SIGINT
(2) -
SIGKILL
(9)
Если вы не знаете идентификаторы процесса, и он может запускать различные команды в оболочке (или цикле), вы можете запустить jobs -l
список заданий и PIDs, затем 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$