毎日特定の時間の間にX分ごとにPythonスクリプトをスケジュールします。

毎日特定の時間の間にX分ごとにPythonスクリプトをスケジュールします。

私のRaspberryPiには、次のように実行したいPythonスクリプトがあります。

  • 平日午後4時30分から真夜中まで30分間隔で出発
  • 週末は午前8時以降から深夜まで60分間隔で運行されます。

Cronを使用して毎日のスケジュールを取得する方法を知っています。

30 16 * * 1-5 /mnt/myHDD/myscript.py

しかし、X分ごとに実行する方法はわかりません。~までY時間。

30分ごとに走りたいのですが、これは正しいですか?ところで、16時30分から翌日02時まで毎時間実行するにはどうすればいいですか?

1-59/30 * * 1-5 /mnt/myHdd/myscript.py

編集:申し訳ありません。正確に30分ごとにする必要はありません。スクリプトは私の携帯電話からrpiで写真をダウンロードし、自宅で働いている間に頻繁に実行されることを望みます(例えば1630年以降)。 /1700 )、そして週末には一般「目覚めている時間」の毎時間。

答え1

私を見てください編集するこの答えの終わりに。

  1. この回答は、最初の要件に「近い」です。
*/30 16-23,0 * * 1-5

翻訳する:“At every 30th minute past every hour from 16 through 23 and 0 on every day-of-week from Monday through Friday.”

最初の答えは30分ごとに実行されないため、欠落しています。sleepコードに以下を追加してこの問題を解決することもできます。

time.sleep( 1800 )
  1. この回答は、最初の要件に「近い」です。
0,*/30 16-23,0 * * 1-5

翻訳する:“At minute 0 and every 30th minute past every hour from 16 through 23 and 0 on every day-of-week from Monday through Friday.”

2番目の答えは、開始する30分前の16:00に実行されたため、欠落しています。それが重要でない場合、これはあなたが言うことに「近い」かもしれません。本当に重要で17:00まで待つことができる場合は、スケジュールを変更するだけで問題が解決します。

0,*/30 17-23,0 * * 1-5
  1. 2番目の要求に対する答えは次のとおりです。
0 8-23,0 * * 6-7

編集:精神障害があります。突然そのような人がいると思いました。精密あなたの質問に答えてください。crontab2つではなく3つの項目があります。

0,*/30 17-23,0 * * 1-5 /mnt/myHDD/myscript.py
30 16 * * 1-5 /mnt/myHDD/myscript.py
0 8-23,0 * * 6-7 /mnt/myHDD/myscript.py

答え2

2つのクローンジョブを設定します。

# Mon-Fri every "half hour" from 16:30 until 23:30 and also at 12:30am and 12:59am
30,59 0,16-23 * * 1-5 /mnt/myHDD/myscript.py

# Weekends, every hour from 8am until 11pm
0 8-23 * * 0,6 /mnt/myHDD/myscript.py

ここで最良の近似は、平日の作業で30分と59分を使用したため、16:00に実行されないことです。したがって、週あたりの作業間隔は29分と31分です。問題があれば別途それ2つを入力してください:

# Mon-Fri at 16:30
30 16 * * 1-5 /mnt/myHDD/myscript.py

# Mon-Fri every half hour from 17:00 until 23:30 and also at midnight and 12:30am
0,30 0,17-23 * * 1-5 /mnt/myHDD/myscript.py

分を他の最小時間と30過去、または30過去と59過去にハードコーディングしましたが、競合作業がある場合は、希望の間隔(5と35など)を選択できます。

月曜日から金曜日までの入場時間は真夜中で、午後12時30分です。0時間フィールドを削除すると、最後の運行時間は午後11時30分です。繰り返しますが、これが問題の場合は、アイテムを分割して真夜中に実行するようにしてください。

関連情報