「毎日深夜にバックアップを自動実行したい」「5分ごとに死活監視スクリプトを動かしたい」そんなときに使うのが cron(クーロン)です。
cronとは?
cron はLinuxに標準搭載されたジョブスケジューラです。指定した日時・間隔でコマンドやスクリプトを自動実行します。設定は crontab(cron table)ファイルに記述します。
crontabの書式

crontabの編集・確認
# crontabを編集(viまたはnanoが開く)
$ crontab -e
# 現在のcrontabを表示
$ crontab -l
# 特定ユーザーのcrontabを編集(root権限が必要)
$ sudo crontab -u www-data -e
# crontabを削除(注意:すべての設定が消える)
$ crontab -r
⚠️ 重要:cronのコマンドはフルパスで指定してください。cronはシェルの PATH 環境変数が通常と異なるため、backup.sh ではなく /home/user/backup.sh のように絶対パスで指定します。
よく使う設定パターン

実践的なcron設定例
# 毎日午前2時にバックアップを実行し、ログを記録
0 2 * * * /home/user/backup.sh >> /var/log/backup.log 2>&1
# 5分ごとに死活監視スクリプトを実行(出力を捨てる)
*/5 * * * * /usr/local/bin/healthcheck.sh > /dev/null 2>&1
# 毎週月曜日の3時にaptで更新(サーバー管理の定番)
0 3 * * 1 /usr/bin/apt update && /usr/bin/apt upgrade -y > /dev/null 2>&1
# OS再起動時にアプリを起動
@reboot /home/user/start_app.sh
>> /var/log/backup.log 2>&1 の意味:標準出力と標準エラー出力の両方をログファイルに追記します。> /dev/null 2>&1 は出力をすべて捨てます。
cronのログを確認する
# cronのログをjournalctlで確認(Ubuntu 16.04以降)
$ journalctl -u cron
# syslogからcronのログを確認
$ grep CRON /var/log/syslog | tail -20
# リアルタイムでcronのログを追う
$ journalctl -u cron -f
よくあるつまずきポイント
- crontab の末尾には必ず空行を入れる:最後の行に改行がないとcronがその行を無視することがあります。
crontab -eで編集後、最終行の後に Enter を1回押しておきましょう。 - コマンドは必ずフルパスで指定:cronの
PATHは通常のシェルより短く、/usr/local/binなどが含まれないことがあります。pythonではなく/usr/bin/python3のように絶対パスで書きましょう。実行するスクリプトのパスも同様です。 - 出力はリダイレクトで保存またはメール送信される:出力を捨てる場合は
> /dev/null 2>&1、ログに残す場合は>> /path/to/logfile 2>&1を末尾に付けます。
まとめ
- crontabの書式は
分 時 日 月 曜日 コマンドの5フィールド crontab -eで編集、crontab -lで確認- コマンドは必ずフルパスで指定(PATH環境変数が異なるため)
- 出力は
>> ログファイル 2>&1でログに記録するか> /dev/null 2>&1で捨てる @rebootは起動時実行、@dailyは毎日午前0時- 実行履歴は
journalctl -u cronまたはgrep CRON /var/log/syslogで確認
関連記事
📋 Linux入門チートシート完全版で全コマンドを一気に復習できます。



コメント