如何杀死nohup进程?

时间:2011-11-04 09:50:34

标签: bash process kill nohup

我执行了以下命令

$ nohup ./tests.run.pl 0 &

现在当我尝试使用

杀死它(以及从此脚本启动的执行)
$ kill -0 <process_id>

它不起作用。如何杀死nohupped进程以及通过nohupped脚本运行的进程?

由于

4 个答案:

答案 0 :(得分:42)

kill -0 会杀死该进程。它只是检查你是否可以向它发送信号。

只需kill pid,如果不起作用,请尝试kill -9 pid

答案 1 :(得分:26)

只需kill <pid>即可发送SIGTERMnohup不会忽略。

您不应该首先发送SIGKILL,因为这会使进程无法恢复;你应该按顺序尝试以下方法:

  • SIGTERM(15)
  • SIGINT(2)
  • SIGKILL(9)

答案 2 :(得分:4)

我会做类似的事情:

jobs

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

kill %1

答案 3 :(得分:3)

如果您不知道进程ID并且它可能在shell(或循环)中运行各种命令,则可以运行jobs -l列出作业和PID,然后kill它们。< / p>

参见示例:

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$