Linux
MacOSX
UNIX
バックグラウンド実行

バックグラウンド実行で時間短縮しよう!!

More than 3 years have passed since last update.


はじめに


 久しぶりに研究したら、nohupコマンドと&での実行(バックグラウンド実行)方法を少し忘れていたので、やり方を残しておく。

 pythonで実行するけど、どの言語・実行でも可能。


バックグラウンドで実行する。



まずは普通に

 普通の実行方法だと、

$ python main.py

 これで実行すると、長い処理だと処理が終わるまで何もできなくなって困る。タブを開いてもいいけどめんどくさいし、sshで接続してる時とかは通信が途切れても大丈夫なようにしないといけない。

 その時に使うのが、nohupコマンドと&です。

$ nohup python main.py &

 このように、nohupと&で挟むだけでバックエンドで実行できます。


出力先を変える

 普通に実行すると、nohup.outというファイルに結果が溜まってしまうので、また実行した時とかにもどんどん溜まり、gitで扱う時とかもファイルが大きくなってめんどくさくなる。

 そこで、出力先を変更する。まずは出力先用ディレクトリを作ると便利。

$ nohup python main.py > ~/output_log/out.log &

 これで、output_logというディレクトリにout.logというファイル名で保存される。2回目以降はファイル名をout2.logとか好きなように変更すれば良い。


バックグラウンドの状況を確認する。


 バックグラウンドの実行状況が確認したい時はこのようにする。

$ ps u

 これで、実行状況が確認できる。


バックグラウンド実行している処理を止める


 バックグラウンドで実行している処理が長すぎて、これエラー何じゃない??って時は、killコマンドでプロセスを殺します。

$ kill -KILL PID

 PIDのところには、ps uで確認したプロセスIDを書けばOK!!


終わりに


 さくっと書いたけどこんな感じです。これで、処理を実行させて家に帰って、次の日の朝に確認ってできるので、効率的に作業できますね!

 エラーの出力先を指定するっていう方法もあるので、参考も見てみてください。


参考