crontab は定期実行の予定を登録するコマンドです。5つの数字の読み方、`-l` で確認して `-e` で編集する流れ、ファイルから登録する書き方を、ブラウザ上のターミナルで打ちながら確認できます。
最終更新: 2026-09-07
crontab -l # いまの予定を見る
crontab -e # 予定を編集する
crontab -r # 予定をすべて消す
登録した予定は cron が読み、時刻になると自動で実行します。
まだ何も登録していない状態です。
$ crontab -l
no crontab for user
1行が1つの予定で、先頭の5つが実行する時刻です。
分 時 日 月 曜日 コマンド
| 位置 | 意味 | 範囲 |
|---|---|---|
| 1つ目 | 分 | 0〜59 |
| 2つ目 | 時 | 0〜23 |
| 3つ目 | 日 | 1〜31 |
| 4つ目 | 月 | 1〜12 |
| 5つ目 | 曜日 | 0〜7(0と7が日曜) |
* は「毎回」という意味です。
よく使う形は、この5つだけ覚えれば足ります。
| 書き方 | いつ動くか |
|---|---|
* * * * * | 毎分 |
0 * * * * | 毎時0分 |
0 3 * * * | 毎日3時0分 |
0 3 * * 1 | 毎週月曜の3時0分 |
*/5 * * * * | 5分ごと |
予定をファイルに書いておき、それを読み込ませる形が確実です。
$ cat backup.cron
# daily backup at 03:00
0 3 * * * /home/user/project/scripts/backup.sh
$ crontab backup.cron
$ crontab -l
# daily backup at 03:00
0 3 * * * /home/user/project/scripts/backup.sh
登録されました。 ファイルに残しておけば、内容を git で管理でき、別のサーバーにも同じ設定を入れられます。
ファイルから登録すると、いまの予定はすべて置き換わります。
足すつもりのときは、crontab -l > current.cron で今のものを書き出し、それに追記してから読み込ませてください。
crontab -e を打つと、エディタが開きます。
$ crontab -e
先頭に書式の説明がコメントで入っているので、その下に予定を書いて保存します。 保存した時点で反映されます。
$ crontab -r
$ crontab -l
no crontab for user
-r は確認なしで全部消します。
消す前に crontab -l > backup-of-cron.txt を取っておくと安全です。
crontab は、人が居ない時間に動かしたい処理を仕込むコマンドです。
| 場面 | 書き方 |
|---|---|
| 毎日3時にバックアップ | 0 3 * * * /home/user/scripts/backup.sh |
| 5分ごとに死活監視 | */5 * * * * /usr/local/bin/healthcheck.sh |
| 毎週月曜にレポート | 0 9 * * 1 /home/user/scripts/report.sh |
| 結果をログに残す | 0 3 * * * /home/user/scripts/backup.sh >> /home/user/logs/backup.log 2>&1 |
cron の環境は普段のシェルと違います。
.zshrc は読まれず、PATH もほとんど通っていません。
python3 ではなく /usr/bin/python3、backup.sh ではなく /home/user/scripts/backup.sh と、フルパスで書いてください。
出力はメールに送られます。
画面には出ないので、失敗しても気づけません。
>> ログファイル 2>&1 を付けて、結果を残す形にしておきます。
% はそのまま書けません。
cron は % を改行として解釈します。
date +%Y-%m-%d のような書き方をするときは \% とエスケープが要ります。
動かないときの確認は3つです。
cron 自体が動いているか(systemctl status cron)、スクリプトに実行の権限があるか(chmod +x)、パスがフルパスか。
この順に見ていけば、たいてい原因にたどり着きます。
webterm.appこのサイト
ターミナル応用
特定場面で役立つコマンドを学ぶ
learn.webterm.app別のサイト

systemctl / journalctl / chmod / date