我正在尝试运行一个非常复杂的统计模型,我预计需要很长时间,所以我使用nohup来运行这个过程。但是,我低估了这个过程的长度,它需要像260+那样的时间来完成,所以我想取消这个过程。
我尝试使用ps aux |grep nohup获取PID,得到以下输出:
\ 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//XML/ST736_MTBD1.xml我使用kill -9 144039并再次检查,但是进程仍然运行在一个新的PID下面。
我能做什么?
发布于 2021-07-23 15:00:26
您的流程14224是grep nohup,正如ps告诉您的那样。因此,当您返回提示符时,grep结束了,因此,kill报告没有这样的进程是合乎逻辑的。
您将不会在您的nohup输出中看到S进程名为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 sleep1492021又是我的grep,所以这里不重要。1491988是我的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-2s了。
kill 1336769它杀死了控制台和bash,但没有终止睡眠:
$ 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然后一切都消失了。
https://unix.stackexchange.com/questions/659634
复制相似问题