タグ

2022年2月2日のブックマーク (3件)

  • shell スクリプト二重起動防止 - Qiita

    特に説明する部分でもないですが、cron等の繰り返し設定で2重に起動しないようにするbashです。該当シェルスクリプトの先頭に追加しておくと便利 # 二重起動防止 _process=`basename $0` _pcnt=`pgrep -fo ${_process} | wc -l` if [ ${_pcnt} -gt 1 ]; then echo "This script has been running now. proc : ${_pcnt}" exit 1 fi Register as a new user and use Qiita more conveniently You get articles that match your needsYou can efficiently read back useful informationYou can use dark them

    shell スクリプト二重起動防止 - Qiita
  • 2010-05-31

    @ksaito11: シェルの重複起動防止 URL 2010-05-31 23:08:02 via Hatena 同じシェルを複数起動しないようにするには、ロックファイルを使う方法が良く知られています。 単純明快な方法ですがシェルがkill -9で停止した場合には、タイミングによってロックファイルが削除されないことがあります。 メンテナンスフリーで重複起動を防止するには、すこしトリッキーな方法を使う必要があります。 どちらが良いというより状況により使い分けが必要となります。 続きを読む

    2010-05-31
  • A級プログラマーへの道 シェルスクリプト:ロックファイルを使わない、より良い二重起動防止方法

    シェルスクリプトの二重起動防止の方法でとても良く使われる方法は、以下のようなロックファイルを使用する方法です。 ・ロックファイルを使用した例 #!/bin/bash if [ -f .lock ] then # 既に起動済みのため終了 exit 0; fi trap 'rm -f .lock; exit 1' 1 2 3 15; touch .lock; # 任意の処理 rm -f .lock; しかし、このロックファイルを使う方法には問題があります。SIGKILL シグナルを受信して終了した場合、ロックファイルが削除されません。そのため、次回起動時にロックファイルが存在するので、シェルスクリプトを起動できなくなってしまいます。 SIGKILL シグナル(および SIGSTOP シグナル)はシェルスクリプト(プロセス)では捕捉できません。例えば、何らかの理由によりあるプロセスが暴走してしま