web-dev-qa-db-ja.com

毎日のUbuntu cronジョブ

Ubuntu 16では、平日の午前8時にcronジョブをトリガーしようとしています。これまでに試したことは次のとおりです。

0 8 * * 1-5 /path/to/command

そして

0 8 * * MON-FRI /path/to/command

動作しません

1

これらの構文は、午前8時のすべての営業日に有効です。

  • 0 8 * * 1-5 /path/to/command >/dev/null 2>&1
  • 0 8 * * 1,2,3,4,5 /path/to/command >/dev/null 2>&1あなたが言ったように @aleksandar-pavić

これらのリンクによる詳細な説明:

の用法 >/dev/null 2>&1はオプションであり、目標はすべての出力を/ dev/nullにリダイレクトすることです。

別の問題が発生する必要があります。crontab-eを使用する場合は、ユーザーも指定する必要があります。

これはcron構文のリマインダーです

* * * * * *
| | | | | | 
| | | | | +-- Year              (range: 1900-3000)
| | | | +---- Day of the Week   (range: 1-7, 1 standing for Monday)
| | | +------ Month of the Year (range: 1-12)
| | +-------- Day of the Month  (range: 1-31)
| +---------- Hour              (range: 0-23)
+------------ Minute            (range: 0-59)
4
Maximilien D

最後にテストして答えを見つけたので、1-5、またはMON-FRIが機能しません。

0 8 * * 1,2,3,4,5 /path/to/command
0

まず、 workdays ではなく、 weekdays でコマンドを実行したいようです。

平日:日曜日を除くすべての曜日、または多くの場合、土曜日と日曜日。

稼働日:作業が行われる日。就業日。

workdaysが必要な場合は、cronを使用してスクリプトを毎日スケジュールし、そのスクリプトに「今日」かどうかを判断するために必要なロジックを組み込む必要があります。は営業日であり、コマンドを実行する必要があるかどうか。

質問にはubuntu-16.04というタグが付いているので、関連する man page を確認しました。

曜日0〜7(0または7は日、または名前を使用)

monthフィールドとday of weekフィールドにも名前を使用できます。特定の日または月の最初の3文字を使用します(大文字と小文字は関係ありません)。 名前の範囲またはリストは許可されていません

次に、Ubuntu16.04サーバーでこのcrontabを試しました。

  *  *   *   * 1-5   date >> /tmp/date.txt

目的の出力が得られます。

Mon May  1 00:00:25 CEST 2017
Tue May  2 00:00:03 CEST 2017
Wed May  3 00:00:47 CEST 2017
Thu May  4 00:00:01 CEST 2017
Fri May  5 00:00:53 CEST 2017
Fri May  5 00:01:01 CEST 2017

これは、2017年5月の第1週の毎日のシステム時刻を00:00:00に設定することで取得されます。結果は、cronが1分未満の精度間隔での実行を保証していないことも示しています(興味がある場合は、 質問 このトピックについて)。

好奇心から、私は次のcrontabを試しました。

 *  *   *   * MON-FRI   date >> /tmp/date.txt

驚くべきことに、そしてドキュメントが言っていることに反して、それはまだ機能します:

Mon May  1 00:00:44 CEST 2017
Tue May  2 00:00:39 CEST 2017
Wed May  3 00:00:47 CEST 2017
Thu May  4 00:00:17 CEST 2017
Fri May  5 00:00:10 CEST 2017
0
simlev