質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.47%
cron

cronは、Unix系OS上でデーモンプロセスとして動作する、スクリプトの自動実行が可能なジョブスケジューラです。

Q&A

解決済

3回答

10235閲覧

cronで第1営業日を指定する方法はないでしょうか?

akihiro0117

総合スコア32

cron

cronは、Unix系OS上でデーモンプロセスとして動作する、スクリプトの自動実行が可能なジョブスケジューラです。

0グッド

1クリップ

投稿2018/03/26 11:23

第1日曜日の指定方法などは、検索するとたくさん見つかるので、

shell

10 8 1-7 * * (([ $(date "+%w") -eq 1 ] || [ $(date "+%w") -eq 2 ]) && date)

というような感じで、平日の曜日をつなげればいいのかと思いましたが、それだと、月曜日も火曜日も両方とも実行されてしまいます。

何かご存じの方がいらっしゃったら、情報いただけると助かります。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答3

0

ベストアンサー

以下でどうでしょうか?

0 8 1 * 1-5 (command) 0 8 2 * 1 (command) 0 8 3 * 1 (command)

訂正

otn さん のご指摘どおり、day of month(3つ目)と week of month (5つ目)は AND ではなく OR でした。
KSwordOfHaste さん のコメントを以下にまとめます。

0 8 1 * * [ $( date "+\%w" ) -ge 1 -a $( date "+\%w" ) -le 5 ] && コマンド 0 8 2-3 * * [ $( date "+\%w" ) -eq 1 ] && コマンド

投稿2018/03/26 11:39

編集2018/03/26 16:13
TaichiYanagiya

総合スコア12146

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

KSwordOfHaste

2018/03/26 12:04

日付の方も2-3て書いちゃダメなのでしたっけ?
TaichiYanagiya

2018/03/26 12:07

あ、2-3 でもいいと思います。お好みで。
KSwordOfHaste

2018/03/26 12:15

ありがとうございました。
退会済みユーザー

退会済みユーザー

2018/03/26 12:41

5月1日(土曜) 5月2日(日曜) 5月3日(祝日) 5月4日(祭日) 5月5日(祝日) 5月6日(木曜;第一営業日)
退会済みユーザー

退会済みユーザー

2018/03/26 12:44

1月1日(祝日) 1月2日(年始) 1月3日(年始) 1月4日(土曜) 1月5日(日曜) 1月6日(月曜;第一営業日) もあるか
KSwordOfHaste

2018/03/26 12:56

そうなってくるともはや 0 8 * * * (月初営業日判定コマンド && command) などとしか書きようないですよねw;
otn

2018/03/26 15:35

> 0 8 1 * 1-5 (command) 1日または月~金に実行 > 0 8 2 * 1 (command) 2日または月曜日に実行 > 0 8 3 * 1 (command) 3日または月曜日に実行 と、質問と全然関係ないと思います。
退会済みユーザー

退会済みユーザー

2018/03/26 15:44

・q・)そういえば 日付と曜日だけはなぜかor だったか
KSwordOfHaste

2018/03/26 15:47 編集

知りませんでした・・・日付と曜日だけはor条件なんですね! --- うーん、いわれてみると多くのユースケース(?)では合理的な仕様なんですね・・・
KSwordOfHaste

2018/03/26 15:56 編集

0 8 1 * * [ $(date "+%w") -ge 1 -a $(date "+%w") -le 5 ] && command 0 8 2-3 * * [ $(date "+%w") -eq 1 ] && command こんな感じになってしまうんでしょうか・・・ 実際には実行対象でない日にもcronのログがmailboxにはいってしまうんでしょうか・・・
akihiro0117

2018/03/27 02:51

ありがとうござます! 今回は祝日は無視するので、大丈夫です。 cronログについても目をつぶります。
guest

0

国民の祝日や年末年始など無関係で、月~金(土?)は常に営業日という企業でしょうか?

こんな感じで行けると思います。FLAGファイルの場所はどこか書き込み権限があり消えない場所。ファイルは最初に作っておく必要があります。

plain

1FLAG=/path/to/somewhere 20 8 1-7 * * [ $(date -r $FLAG +\%m) != $(date +\%m) -a $(date +\%w) != 0 -a $(date +\%w) != 6 ] && (touch $FLAG ; date)

「前回実行が今月でない and 日曜日でない and 土曜日でない」ときに実行。

投稿2018/03/26 16:07

otn

総合スコア84710

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

otn

2018/03/26 16:30

ああ、4日以降になることはないのか。あまり深く考えずに書いてしまいました。 KSwordOfHaste さん のコメントで十分ですね。
akihiro0117

2018/03/27 02:48 編集

祝日まで考慮すると、手間なので今回は無視します。 有り難うございます。
guest

0

ちょっとパターンをつくってみた(間違えてるかもしれないが) 
※ cron の設定ではなく計算用としてください。

曜日備考参考
0812,3,4,5,6,7,8,9,10,11,121-51日が平日-
0822,3,4,5,6,7,8,9,10,11,1212日が月曜日月
0832,3,4,5,6,7,8,9,10,1213日が月曜土日月
08411-54日が平日(年末年始)祝休休平
0841124日が火曜土祝振火
085115日が月曜祝休休日平
086116日が月曜祝休休土日平
086546日が木曜土日祝祭祝木

休:その他休業日

投稿2018/03/26 13:18

編集2018/03/26 22:15
退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.47%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問