Quantcast
Channel: ソフラボの技術ブログ
Viewing all articles
Browse latest Browse all 166

crontabで第?曜日にタスクを実行する方法

$
0
0

crontabで第?曜日にタスクを実行する方法を紹介します。

サンプル

日曜日にシャットダウンを実行する場合の例です。

# 第1日曜日(5月)001-75 * ["$(date '+\%w')"-eq0]&& /sbin/shutdown -h now
# 第2日曜日(8月)008-148 * ["$(date '+\%w')"-eq0]&& /sbin/shutdown -h now
# 第3日曜日(9、11、12月)0015-219,11-12 * ["$(date '+\%w')"-eq0]&& /sbin/shutdown -h now
# 第4日曜日(どの月でも)0022-28 * * ["$(date '+\%w')"-eq0]&& /sbin/shutdown -h now
# 第5日曜日(どの月でも)0029-31 * * ["$(date '+\%w')"-eq0]&& /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


新しいLinuxの教科書

新しいLinuxの教科書

Linuxシステム[実践]入門 (Software Design plus)

Linuxシステム[実践]入門 (Software Design plus)


Viewing all articles
Browse latest Browse all 166

Trending Articles