毎時1回更新をチェックするスクリプトを呼び出すcronジョブがあります。更新がある場合は、update.sh
と呼び、commands.sh
となります。新しい "commands.sh
"を正確に1回実行したいと思います。シェルスクリプトをcronjobで1回実行する
commands.sh
にそのファイルの一意のIDを付けて実行するたびに、ファイルに書き込むことを考えていました。 commands.sh
を実行する前に、ファイルにIDがcommands.sh
であるかどうかを確認します。その場合は、実行しないでください。
編集 - 詳細:
cronジョブ:
- 引っ張るとマージし、gitのレポからのフェッチがあれば変更
実行
update.sh
:#!/bin/sh ./commands.sh
I ./commands.sh
を1回だけ実行したい場合は、次の時間、cronは再び動いて、gitから引き出し、update.sh
を再度実行します。各ユニーク./commands.sh
が一度だけ実行できる方法はありますか?
gitリポジトリからの変更があった場合は、update.sh
を実行するのが一番良い方法でしょうか?
これは過剰殺人のように思われます。一度だけ実行されるbashスクリプトを書くより簡単な方法はありますか? (これが格納されていてもよいどこでも便利にパスを指定する)stampfile
と呼ばれるファイルのための
if [ -f stampfile ]; then
exit
if
touch stampfile
このチェック:commands.sh
スクリプトの開始時
次回のアップデートが予定されているときに、 'commands.sh'の以前のインスタンスがまだ実行されているという問題はありますか?誰が他のインスタンスを呼び出すのですか? –
'update.sh'から' mv commands.sh commands.sh-done-(timestamp) 'が可能ですか? – indiv
いくつかの編集を追加しました。 – Nick