Linuxコマンド一覧

crontabコマンド|決まった時刻にコマンドを自動実行する

__ __ _ _____
\ \ / /__| |_|_ _|__ _ __ _ __ ___
\ \ /\ / / _ \ '_ \| |/ _ \ '__| '_ ` _ \
\ V V / __/ |_) | | __/ | | | | | |
\_/\_/ \___|_.__/|_|\___|_| |_| |_| |_
 
crontab を試すためのサンドボックスです。実機のファイルには影響しません。
user@webterm:~/project$
 

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/python3backup.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別のサイト

>_WEBTERM LEARN

WebTerm Learn|1つのコマンドから、使える状態へ

コマンドは単体で覚えるより、実際の作業の流れの中で使うほうが身につきます。順番に積み上げていくコースがあります。

コースを見る

関連するコマンド

systemctl / journalctl / chmod / date

よくある質問

5つの数字は何を表していますか?
左から分・時・日・月・曜日です。`0 3 * * *` なら毎日3時0分、`*/5 * * * *` なら5分ごとになります。
cron で動かすとスクリプトが失敗します。
cron の環境は普段のシェルとは別物で、PATH もほとんど通っていません。コマンドもファイルも**フルパスで書く**のが基本です。
実行結果はどこへ行きますか?
既定ではそのユーザー宛のメールに送られます。メールを見ない環境では消えてしまうので、`>> /var/log/backup.log 2>&1` のようにファイルへ書き出しておきます。
crontab -e と直接ファイルを編集するのは違いますか?
違います。`crontab -e` は書式を確かめてから反映してくれます。置き場所のファイルを直接編集すると、書式を間違えたまま登録されることがあります。
登録したのに動きません。
cron 自体が動いているか(`systemctl status cron`)、スクリプトに実行の権限があるか(`chmod +x`)、パスがフルパスか、の3つを順に確かめてください。