无法停止 nohup 进程

无法停止 nohup 进程

我正在尝试运行一个非常复杂的统计模型,我预计该模型将花费很长时间,因此我曾经nohup运行该过程。然而,我低估了这个过程,大约需要 260 多天才能完成,所以我想取消这个过程。

我尝试使用ps aux |grep nohup获取 PID,得到以下输出:

 \<username> 4920  0.0  0.0  14224   972 pts/15   S+   01:53   0:00 grep nohup

当我使用时,kill -9 14224我被告知没有流程。所以我使用了,ps -ef | grep beast-2因为我不记得我输入的整个命令。拉出以下内容:

144039      1  0 Jul22 pts/12   00:00:00 /bin/sh /opt/anaconda3/bin/beast-2 -seed 777 -working -overwrite -instances 3 -threads 3 -beagle_SSE /home/<username>/XML/ST736_MTBD1.xml

kill -9 144039再次使用并检查,但该进程仍在新的 PID 下运行。

我能做些什么?

答案1

grep nohup正如告诉你的那样,你的进程 14224 是ps。因此,当您收到提示时,grep结束,因此,kill报告不存在这样的过程是合乎逻辑的。

nohup您将不会在输出中看到调用的进程ps

那么,如何找到要杀死的进程呢?

由于我没有你的beast-2,我将用 来演示nohup sleep 99 &

ps -ef | grep sleep

这会给我

ljm      1491988 1336776  0 16:43 pts/0    00:00:00 sleep 999
ljm      1492021 1492069  0 16:45 pts/0    00:00:00 grep sleep

1492021 又是我的grep,所以这里不重要。 1491988 是我的 nohupped sleep。父 PID 是 1336776。所以检查它给了我

$ ps -f 1336776
UID          PID    PPID  C STIME TTY      STAT   TIME CMD
ljm      1336776 1336769  0 Jul22 pts/0    Ss+    0:00 /bin/bash

这是一个bash。您可以进一步向上,例如使用pstree

$ pstree -ap  1336769
konsole,1336769
  └─bash,1336776
      └─sleep,1492051 999

所以,如果你杀死了父母,它将不再产生新的beast-2。在这里我会

kill 1336769

它会杀死控制台和bash,但不会杀死 nohupped sleep :

$ ps -ef | grep sleep
ljm      1492051       1  0 16:48 ?        00:00:00 sleep 999
ljm      1492285 1492069  0 16:57 pts/1    00:00:00 grep sleep

父进程现在已成为1,即 init 进程。如果你现在就扼杀睡眠,

$ kill 1492051
$ ps -ef | grep sleep
ljm      1492329 1492069  0 16:59 pts/1    00:00:00 grep sleep

然后一切都消失了。

答案2

就我而言,我使用 nohup 来保护 laravel。我还必须终止绑定到端口的进程

使用fuser 8080/tcp(根据您自己的端口更改端口)并杀死在那里找到的PID。

相关内容