注意:在将此问题标记为重复之前,请注意,我已经尝试了在线上可以找到的所有解决方案,但仍然无法解决问题。
我通过以下命令运行守护进程:
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
,守护进程应该会退出。