36

我执行了以下命令

$ nohup ./tests.run.pl 0 &

现在当我试图杀死它(以及从这个脚本开始的执行)时使用

$ kill -0 <process_id>

这没用。如何杀死 nohupped 进程和通过 nohpped 脚本运行的进程?

谢谢

4

5 回答 5

47

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

很简单kill pid,如果这不起作用,请尝试kill -9 pid.

于 2011-11-04T09:52:37.537 回答
28

很简单kill <pid>,它会发送一个SIGTERM,它nohup不会忽略。

您不应该发送SIGKILL第一个,因为这使该过程没有机会恢复;您应该按顺序尝试以下操作:

  • SIGTERM(15)
  • SIGINT(2)
  • SIGKILL(9)
于 2011-11-04T09:53:18.370 回答
12

我会做类似的事情:

jobs

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

kill %1
于 2016-12-20T15:18:25.877 回答
6

如果您不知道进程 ID,并且它可能在 shell(或循环)中运行各种命令,您可以运行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$
于 2016-01-12T03:27:14.830 回答
2

杀死nohup进程

ps aux |grep nohup

grep PID kill -15 -1 16000(将注销您)并在下次登录根时清除

于 2017-08-12T10:09:35.917 回答