知識の枝

"All is well"

「crontab」コマンドで定期作業を自動化

約661日前 2020年9月3日20:06
デジタル
コマンド

改訂履歴


2020/9/3 投稿
2021/3/2 改訂1「root」としてcrontabを登録する方法を記載

「crontab」コマンド


1. 読み方


くーろんたぶ

2. どんな時に使うか?


あらかじめ決めておいた作業を、決めておいた時間に実行するコマンド。
例)平日朝6時に目覚まし時計のアラームを鳴らす

3. 使い方、設定方法


「crontab」の設定ファイルを下記コマンドで開きます。
※viエディタで開きますので、操作方法はviエディタ準拠です。
[user@IP ~]$ crontab -e

「-e」はcrontabに備わっているオプションコマンドの1つで、
設定内容を「編集」するときに使用します。

始めは何も書いていない設定ファイルが開くと思います。
ここに下記ルールで自動化したい作業を登録します。


■時間の指定
下記は目覚ましの例:
「00 06 * * 1-5」・・・月曜から金曜の06時00分
その他例:
「30 17 15 * *」・・・毎月15日の17時30分

並び方は「分 時 日 月 曜日」の順で、5つのパラメータから成ります。
分・・・00~59
時・・・00~23
日・・・1~31
月・・・1~12
曜日・・・0~6(0=日曜日、6=土曜日)


■例えばこんなことを自動化
このホームページのサーバー証明書の更新作業はcrontabで自動化してあります。

crontabで設定する場合は下記のように書きます。
/usr/bin/certbot renew



■全体の記述
先ほどの時間の指定と組み合わせて下記のように書きます。
00 01 * * * /usr/bin/certbot renew

(毎日午前1時にサーバー証明書を更新)

crontabの設定ファイルに上記を記入したら「:wq」で上書き保存しましょう。

下記コマンドで登録済みの設定が表示されます。
[user@IP ~]$ crontab -l
00 01 * * * /usr/bin/certbot renew #しっかり登録されています

「-l」は登録されている設定の「リスト」を表示するオプションコマンドです。


改訂1
※ここで1点注意です※
[user@IP ~]$ crontab -e

設定の追加は上記コマンドで可能ですが、この設定は「user」が登録したことになっています。
実行したいコマンドが「root」権限を要求する場合、「user」では実行されません。
したがって「root」としてcrontabを登録する必要があります。

その際は
[user@IP ~]$sudo crontab -u root -e

とすることで「root」として設定を登録できるようになります。

「-u」は登録するユーザーを指定するオプションです。

以上、注意点でした。



後日、指定された日時にしっかり動作しているか確認を取りましょう。
動作していれば問題無しです。

その他(語源)


"crontab"の語源が気になったので調べてみました。

「crontable」の略で「crontab」となっているようです。

では「cron」とはなんでしょうか?

古代ギリシャ語の「χρόνος」- khrónos(クロノス)が由来です。
クロノスとは「時」を神格化したものであり、「時間の神」とされています。

日本語でも「クロノ〇〇」という言葉や作品は「時間に関係する」ものが多いと思います。

つまり・・・
「crontab」は「時間の神クロノスのToDoリスト」
ってところでしょうか。

クロノスさんはこのリストを見て、「何時に〇〇をやらなきゃ!」と思うわけです。
みなさんも「crontab」コマンドで定期的な作業を”時間の神クロノス”にやってもらいましょう!