web-dev-qa-db-ja.com

特定の時間間隔でcronジョブを停止します

私は一日中5分ごとに実行されるcronジョブを持っています。

日曜日の午後4時から午後5時の間に実行されているこのcronジョブを停止したいのですが、この時間の後に再開する必要があります。

どうすればこれをスクリプト化できますか?

4
akd

これを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時間目であることを検出すると、スクリプトは終了します。

4
Linker3000

どうですか:

*/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
4
DaSteph

Cronジョブがスクリプトを実行し、日曜日の午後4時から午後5時の間に実行するように設定されたプロセスの不在をチェックさせることができれば、それほど多くは必要ないかもしれません。

たとえば、15分ごとにrsyncを呼び出すcronジョブを使用しますが、rsyncがまだ実行されていない場合のみ

pidofコマンドを使用して、特定のプロセスIDが実行されているかどうかを確認します。

PID=$(pidof rsync)

if [ -z $PID ]
then 
    rsync -avz ....
fi

あなたはあなたの特定の状況のた​​めに詳細を理解する必要があるでしょう。私は今それを考えるアイデアとして提示します。

0
pavium