Quantcast
Channel: Bashタグが付けられた新着記事 - Qiita
Viewing all articles
Browse latest Browse all 2722

pythonでpgrepして多重起動を防止する(走り書き)

$
0
0
※この記事は個人的なメモです pythonの多重起動を防止するのに,ファイルの存在でチェックしたり(例外で落ちてファイルが残る),ファイルのロックを使ったり(他プログラムからファイル自体を消されたり),専用のライブラリを導入したり(わざわざ?)等いろいろありますが,bashで多重起動をしないようにする方法をそのまま利用してしまえば早いし応用性が高い(perlでも似たようなことができる). コード main_code.py import os def main(): # main codes here. if __name__ == "__main__": pid = os.getpid() scriptname = os.path.basename(__file__) oldest_pid = int(os.popen(f"pgrep -fo {scriptname}").read()) if pid == oldest_pid: main() else: print("other process already running.") 結局やってること bashで言う下記のコードを実行してます. main_code.sh #!/bin/bash main(){ # main codes here. } pid=$$ scriptname=`basename $0` oldest_pid=`pgrep -fo $scriptname` if [ $pid == $oldest_pid ]; then main else echo "other process already running." fi 注意点 スクリプト名が一緒だと別のファイルでも実行制限に引っ掛かります(笑) 参考サイト https://docs.python.org/ja/3/library/os.html https://docs.python.org/ja/3/library/subprocess.html https://www.mk-mode.com/blog/2016/02/21/linux-bash-check-double-start/

Viewing all articles
Browse latest Browse all 2722

Trending Articles