金曜日の午後5時から月曜日の午前5時に終わるcrontabスクリプトを毎時間実行したいと思います。
スクリプトは、その週の間に完了し、現在実行中であることを確認します。いいえ/いいえの場合は、作業を開始してください。
頭では、次のことができることを知っています。
#Mins Hours DoMonth Months DoWeek
0 5-17 * * 0,6 /bin/echo "Run Script Sat and Sun Days"
0 17-24 * * 0,5,6 /bin/echo "Run Script Fri, Sat, Sun Nights"
0 0-5 * * 6,0,1 /bin/echo "Run Script Sat, Sun, Mon Mornings"
私が考えることができるすべての方法は3つの部分(金曜日の夜、土曜日/日曜日の終日、月曜日の朝)に関連しています。
これを行うより効率的な方法はありますか?その時間内に毎時間この操作を実行できる単一/二重回線はありますか?
それとも単にこの期間内にスクリプトをチェックする方が簡単ですか(そしてその期間内にない場合は終了)。
答え1
スクリプトが現在実行中であることを確認し、そうでない場合は毎時間実行するには、次のようにします。
pgrep -x script-name.sh || script-name.sh
ただし、スクリプトに一意の名前を使用しない限り、これを実行したくありません。上記の例のように「echo」と一緒に使用しないでください。