「crontab」コマンドで定期作業を自動化
約661日前
2020年9月3日20:06
デジタル
コマンド
2020/9/3 投稿
2021/3/2 改訂1「root」としてcrontabを登録する方法を記載
くーろんたぶ
あらかじめ決めておいた作業を、決めておいた時間に実行するコマンド。
例)平日朝6時に目覚まし時計のアラームを鳴らす
「crontab」の設定ファイルを下記コマンドで開きます。
※viエディタで開きますので、操作方法はviエディタ準拠です。
「-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で設定する場合は下記のように書きます。
■全体の記述
先ほどの時間の指定と組み合わせて下記のように書きます。
(毎日午前1時にサーバー証明書を更新)
crontabの設定ファイルに上記を記入したら「:wq」で上書き保存しましょう。
下記コマンドで登録済みの設定が表示されます。
「-l」は登録されている設定の「リスト」を表示するオプションコマンドです。
改訂1
※ここで1点注意です※
設定の追加は上記コマンドで可能ですが、この設定は「user」が登録したことになっています。
実行したいコマンドが「root」権限を要求する場合、「user」では実行されません。
したがって「root」としてcrontabを登録する必要があります。
その際は
とすることで「root」として設定を登録できるようになります。
「-u」は登録するユーザーを指定するオプションです。
以上、注意点でした。
後日、指定された日時にしっかり動作しているか確認を取りましょう。
動作していれば問題無しです。
"crontab"の語源が気になったので調べてみました。
「crontable」の略で「crontab」となっているようです。
では「cron」とはなんでしょうか?
古代ギリシャ語の「χρόνος」- khrónos(クロノス)が由来です。
クロノスとは「時」を神格化したものであり、「時間の神」とされています。
日本語でも「クロノ〇〇」という言葉や作品は「時間に関係する」ものが多いと思います。
つまり・・・
「crontab」は「時間の神クロノスのToDoリスト」
ってところでしょうか。
クロノスさんはこのリストを見て、「何時に〇〇をやらなきゃ!」と思うわけです。
みなさんも「crontab」コマンドで定期的な作業を”時間の神クロノス”にやってもらいましょう!
デジタル
コマンド
改訂履歴
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」コマンドで定期的な作業を”時間の神クロノス”にやってもらいましょう!