Process
無法停止 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 下執行。我能做些什麼?
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 是我的 nohuppedsleep
。父 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 睡眠:$ 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
然後一切都過去了。