非常に複雑な統計モデルを実行しようとしましたが、モデルに時間がかかることが予想され、nohup
プロセスを実行しようとしました。しかし、プロセスを過小評価して完了するのに約260日以上かかる予定で、プロセスをキャンセルしたかったのです。
Get PIDを使ってみて、ps aux |grep nohup
次のような結果を得ました。
\<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は私の気分が悪いです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
console と sleep を終了します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
私の場合、laravelを保護するためにnohupを使用します。また、ポートにバインドされたプロセスを終了する必要がありました。
fuser 8080/tcp
そこで見つかったPIDを使用して(ポートを自分のポートに変更して)終了します。