15日ごとにコマンドを実行するには、crontabで1,15または* / 15を使用する必要がありますか?

15日ごとにコマンドを実行するには、crontabで1,15または* / 15を使用する必要がありますか?

私が知っている限り、crontabには左から右に始まるこれらのフィールドがあります。

1   minutes 0-59
2   hours 0-23
3   days of month 0-31
4   month 1-12
5   day of the week 0-6
6   command

15日ごとに15時30分にfooコマンドを実行したいと思います。これは、コマンド1と15が実行される月が30日(31日)であるため、15日ごとに実行されるため、これは正しいです。

30 15 1,15 * * /sbin/foo -a 1> /dev/null

この構文も正しいですか?

30 15 */15 * * /sbin/foo -a 1> /dev/null

システムはDillon Cronを使用するSlackware Linuxです。

ベストアンサー1

構文は30 15 */15 * *正確ですが、thisと同じようには機能しません30 15 1,15 * *

後者は「月」フィールドに固定のカンマ区切り値を提供するため、今月と月ごとの1stコマンドを実行します。15th

/最初から毎日実行されるように定義されたステップは*/15、(すべての月に対して)および(31日があるすべての月について)を意味します。1511st16th31th


前述したように、man crontab(5)ステップ値は範囲と共に使用することができる。したがって、/構文を使用して同じ結果を得るには、次のようにします。30 15 1-15/14 * *これは30 15 1,15 * *

別の例として、15日ごとに実行しますが、毎月5日と20日に実行したい場合:5-20/15。もちろん、この場合はと書く方が読みやすくなります5,20。ただし、範囲とステップを組み合わせることで、範囲実行の開始と終了を定義できます。

毎月1日、3日、5日、7日などの日:*/2

毎月2日、4日、6日、8日などの場合:2-30/2

Minutes(0-59)とHours(0-23)の場合、最初の有効な値は次のとおりです00 */2 * * *atなどを意味します00:0002:0004:00

おすすめ記事