私は一日中5分ごとに実行されるcronジョブを持っています。
日曜日の午後4時から午後5時の間に実行されているこのcronジョブを停止したいのですが、この時間の後に再開する必要があります。
どうすればこれをスクリプト化できますか?
これをcronジョブスクリプトの先頭に貼り付けます(必要に応じて変更します)...
if [[ $(date +%u) -eq 7 && $(date +%H) -eq 16 ]]; then
echo "I don't run at this time"
exit 1
fi
echo "Something to do at other times here..."
「日付」の最初のインスタンスは曜日(日曜日= 7)を返し、2番目のインスタンスは時間を返します(16 = 4.00pm-4.59pm)。スクリプトが現在7日目と16時間目であることを検出すると、スクリプトは終了します。
どうですか:
*/5 * * * * job.sh > /dev/null
00 16 * * 0 touch /tmp/stopJob.lck
00 17 * * 0 rm -f /tmp/stopJob.lck
job.sh
ファイルが存在する場合は終了します:
if [ -f /tmp/stopJob.lck ]
then
exit
fi
Cronジョブがスクリプトを実行し、日曜日の午後4時から午後5時の間に実行するように設定されたプロセスの不在をチェックさせることができれば、それほど多くは必要ないかもしれません。
たとえば、15分ごとにrsync
を呼び出すcronジョブを使用しますが、rsync
がまだ実行されていない場合のみ。
pidof
コマンドを使用して、特定のプロセスIDが実行されているかどうかを確認します。
PID=$(pidof rsync)
if [ -z $PID ]
then
rsync -avz ....
fi
あなたはあなたの特定の状況のために詳細を理解する必要があるでしょう。私は今それを考えるアイデアとして提示します。