本文へスキップ
BecomeCoder

シェルスクリプトコース · 第8章 cron で定期実行 · レッスン36

予定を登録する ― crontab の編集

ブラウザで完結

導入

読めるようになったら、次は自分で登録します。crontab の編集は「エディタで開いて書く」のが本来の形ですが、ファイルから読み込ませるやり方を覚えておくと、設定をGitで管理できて実務で強いです。

説明

crontab の操作は3つだけ覚えれば足ります。

コマンド意味
crontab -l一覧を表示(list)
crontab -eエディタで編集(edit)
crontab ファイルファイルの内容でまるごと入れ替える
crontab -r全部削除(remove。取り消せない)

上のエディタで予定表そのものを書き、crontab コマンドで登録してみましょう。

#!/bin/bash
# ↓ これは crontab に登録する予定表を作るスクリプト

cat <<'EOF' > my.cron
# 毎日3時にバックアップ
0 3 * * * /home/user/scripts/backup.sh
# 5分おきに監視
*/5 * * * * echo "監視しています"
EOF

crontab my.cron
crontab -l

# から始まる行はコメントとして無視されます。何のための予定かを書き添えるのは、cron では特に大切です。半年後に「この行は何だっけ」となりがちだからです。

flowchart LR
    A["my.cron<br/>(ファイルで管理)"] -->|"crontab my.cron"| B["ユーザーの予定表"]
    B -->|"crontab -l"| C["確認"]
    A -.->|"Gitで履歴管理"| D["いつ誰が変えたか残る"]

crontab -r は予定表を全消しします。-l の隣のキーなので、押し間違いで全部消した——という事故が実在します。本番サーバーでは、消す前に crontab -l > backup.cronバックアップを取るのが鉄則です。

crontab -e で開くエディタは、環境変数 EDITOR で決まります(既定は vi のことが多い)。このシミュレータではエディタを開けないので、上のエディタ+ crontab ファイル の形で体験します。ファイル管理のほうが実務でも推奨される方法です。

やってみよう

スクリプトを実行して、crontab -l に自分で書いた2行が入ることを確かめましょう。次に cronsim 03:00cronsim 09:05 を実行して、それぞれ別の予定が動くことを見てください。最後に端末で crontab -rcrontab -l として、予定が空になることも確認しましょう(このシミュレータは「最初からやり直す」で元に戻せます)。

演習

*/5 * * * * に登録した監視の予定を、cronsim 09:05 で動かして 監視しています と表示させてください。

ヒント1を見る

まずスクリプトを実行して crontab my.cron を済ませておきます。

ヒント2を見る

そのあと端末で cronsim 09:05

実際に動かしてみよう

本文のサンプルや演習のコードは、コードブロック右上の「コピー」ボタンでコピーして、下のエディタに貼り付ければそのまま実行できます。

シェルスクリプト(シミュレート)

スクリプトを書くエディタと、それを動かす仮想シェルを読み込みます(本物のbashではなく、動きを再現した学習用の環境です)。
スクロールして表示された時点でも自動で読み込まれます。