質問: Linux上のterminalで `nohup` を付けて処理を動かしているのですが、処理が間違っていたことに気づきました。 nohup処理を止めたいのですが、どのようにすれば良いでしょうか? なお他にも動いているnohup処理はあり、そちらは止めたくありません。 (1) 実行した処理 `nohup python3 -u my_script1.py > output1.txt` `nohup python3 -u my_script2.py > output2.txt` `nohup python3 -u my_script3.py > output3.txt` 実行後、それぞれを実行したterminalを閉じてしまった。 (2) 行いたいこと `python3 -u my_script1.py > output1.txt` のみを停止したい (3) 試した内容 1新たなterminalを立ち上げて`jobs`を実行したが、何も出力されなかった。 `$ jobs # 実行した処理` `$ # 出力された結果` 以前ネット上で方法を見つけて試した記憶があるのですが、現時点で再度検索しても見つけられませんでした。日本語に自動翻訳したようなサイトは見つかりましたが、日本語が曖昧だったので不安のため、こちらで質問させて頂きます。 よろしくお願いいたします。
回答: 恐らくバックグラウンド実行をしていると思われるので、`jobs` と `fg` を使って止める方法が考えられます。 * `jobs` コマンドでバックグラウンド実行しているジョブを確認します。 表示された結果のうち、先頭の `[1]`, `[2]` が「ジョブ番号」になります。 ``` $ jobs [1]- 実行中 nohup sleep 120 & [2]+ 実行中 nohup sleep 240 & ``` * 止めたいジョブを確認したら `fg` コマンドでフォアグランド実行に戻します。 ``` $ fg 2 nohup sleep 240 ``` * `Ctrl` + `C` で中断してください。 **追記を受けて別解:** * `ps` コマンドでプロセスの一覧が表示されるので、実行したコマンドを頼りに `grep` で絞り込み、プロセスIDを確認します。 ``` $ ps -ef | grep sleep 質問の例なら... $ ps -ef | grep my_script or $ ps -ef | grep python3 ``` * 表示された結果のうち、左から二列目がプロセスIDになります。 ``` UID PID PPID C STIME TTY TIME CMD cubick 2598 28397 0 11:06 pts/0 00:00:00 sleep 120 cubick 2603 28397 0 11:06 pts/0 00:00:00 sleep 240 ``` * 止めたいプロセスIDを確認したら、`kill` コマンドで強制終了します。 ``` $ kill -9 2603 ```