crontabで第?曜日にタスクを実行する方法を紹介します。
サンプル
日曜日にシャットダウンを実行する場合の例です。
# 第1日曜日(5月) 0 0 1-7 5 * [ "$(date '+\%w')" -eq 0 ] && /sbin/shutdown -h now # 第2日曜日(8月) 0 0 8-14 8 * [ "$(date '+\%w')" -eq 0 ] && /sbin/shutdown -h now # 第3日曜日(9、11、12月) 0 0 15-21 9,11-12 * [ "$(date '+\%w')" -eq 0 ] && /sbin/shutdown -h now # 第4日曜日(どの月でも) 0 0 22-28 * * [ "$(date '+\%w')" -eq 0 ] && /sbin/shutdown -h now # 第5日曜日(どの月でも) 0 0 29-31 * * [ "$(date '+\%w')" -eq 0 ] && /sbin/shutdown -h now
解説
日時
先頭の0 0 8-14 8 *
はcrontabの分、時、日、月、曜日の指定です。
曜日を指定しないのがミソです。
コマンド
日時指定の後に実際に実行するコマンドを定義します。
[ "$(date '+\%w')" -eq 0 ]
は、日付を取得し、そのときの曜日が日曜日(0)だったらという条件になっています。
曜日の変更は、crontabの日時設定の所で行うのではなく、コマンド内の条件部分で行います。
&&
は、前の条件が満たされたら次のコマンドを実行する条件分岐の判定文法になっています。
条件が満たされたら、/sbin/shutdown -h now
を実行し、シャットダウンを行います。
週ごとの区切りの日付を次のように定義します。
第1週 | 1-7 |
---|---|
第2週 | 8-14 |
第3週 | 15-21 |
第4週 | 22-28 |
第5週 | 29-31 |
曜日の定義は次の通りです。
月 | 1 |
---|---|
火 | 2 |
水 | 3 |
木 | 4 |
金 | 5 |
土 | 6 |
日 | 7または0 |
- 作者: 大角祐介
- 出版社/メーカー: SBクリエイティブ
- 発売日: 2015/06/06
- メディア: 大型本
- この商品を含むブログ (4件) を見る
Linuxシステム[実践]入門 (Software Design plus)
- 作者: 沓名亮典
- 出版社/メーカー: 技術評論社
- 発売日: 2013/07/03
- メディア: 単行本(ソフトカバー)
- この商品を含むブログ (13件) を見る