読者です 読者をやめる 読者になる 読者になる

望月いちろうのREADME.md

書き溜めておいた技術記事や旅行記のバックアップです。

Pythonで時間のかかる処理をバックグラウンドで実行する。

Python Linux

コマンドnohupを使用する。

使い方

カレントディレクトリのnohupout.logに出力内容を保存する場合

nohup python3 main.py > nohupout.log &

ログを残したくない場合

sudo nohup python3 main.py > /dev/null 2>&1 &

このような表示が出たら成功

[1] 9105

これはバックグラウンドでプロセスID9105で動作していますよ〜という意味

一応、確認してみよう。

ps ax

ちゃんと動いてますね。

 9105 ?        S      0:00 sudo nohup python3 main.py
 9106 ?        Sl     0:00 python3 main.py
 9749 ?        Ss     0:00 sshd: ubuntu [priv] 
 9803 ?        S      0:00 sshd: ubuntu@pts/1  
 9804 pts/1    Ss     0:00 -bash
 9820 pts/1    R+     0:00 ps ax

注意すべきこと

長時間動かすスクリプト

モリーリークを起こさないように気をつけて設計しよう。

モリーリークを起こすとOSが強制的にプロセスを殺してしまいます。