如何在 Linux 中终止守护进程?

如何在 Linux 中终止守护进程?

注意:在将此问题标记为重复之前,请注意,我已经尝试了在线上可以找到的所有解决方案,但仍然无法解决问题。

我通过以下命令运行守护进程:

rake resque:work QUEUE='*' &

它返回给我13031。现在,我想杀死这个守护进程,并且我尝试了以下命令:

kill -9 13031
kill 13031

运行这两个命令都显示:-bash: kill: (13031) - No such process,现在我被卡住了。我不知道如何杀死守护进程。

答案1

我对此有一个可能的理论。

当您以以下方式运行应用程序时

$ rake resque:work QUEUE='*' &
[1] 13031

该应用程序内部执行fork+exit,在后台运行。

C与之等效的代码是:

if(fork()) exit(0);

因此,进程PID==13031将生成一个子进程并自行退出。子进程将继续在后台运行,并将由 init 进程 (PID==1) 继承。
您可以查看是否是这种情况,enter在启动rake命令后按另一个键。您看到这样的打印吗?

[1]+  Done                 rake resque:work QUEUE='*'

尝试ps在终端中运行。这应该会显示子进程 PID。如果这样kill,守护进程应该会退出。

相关内容