cron設定の基本とよく使う書き方|crontabの書き方からログ・メール通知設定まで

コマンドリファレンス

cron(クロン)とは?

cron(クロン)は、LinuxなどのUNIX系OSで、スクリプトやコマンドをあらかじめ指定した日時に定期実行するためのデーモンプロセスです。バックアップの自動化、ログのローテーション、定期的なデータ同期など、サーバー運用において必須の機能です。

cronの設定は、通常 crontab コマンドを使って行います。設定ファイルには「いつ」「何を」実行するかを1行ずつ記述していきます。

cron設定の基本フォーマット(分 時 日 月 曜日)

cronの設定ファイル(crontab)には、左から順に5つの日時フィールドと、実行したいコマンドを空白区切りで記述します。

分 時 日 月 曜日 実行するコマンド

各フィールドで指定できる値の範囲は以下の通りです。

フィールド 指定できる値 説明
0〜59 何分に実行するか
0〜23 何時に実行するか
1〜31 何日に実行するか
1〜12 何月に実行するか
曜日 0〜7 何曜日に実行するか(0と7は日曜日)

特殊な記号を使った指定方法

  • *(アスタリスク): 「すべて」を意味します。たとえば「月」が * なら「毎月」実行されます。
  • ,(カンマ): 複数の値を指定します。(例:0,30 なら 0分と30分)
  • -(ハイフン): 範囲を指定します。(例:1-5 なら 1から5まで)
  • /(スラッシュ): 間隔を指定します。(例:*/10 なら 10ごと)

crontabコマンドでの設定方法

ユーザー個別のcronを設定・編集するには crontab コマンドを使用します。

設定を編集する(crontab -e)

crontab -e

このコマンドを実行すると、デフォルトのエディタ(viなど)が立ち上がり、cronの設定を編集できます。編集後に保存して終了すると、自動的に設定が反映され、デーモンの再起動などは不要です。

設定を確認する(crontab -l)

crontab -l

現在登録されているcronの設定内容を標準出力に表示します。編集前に現在の設定を確認する際によく使います。

【注意】設定を削除する(crontab -r)

crontab -r

現在のユーザーのcron設定をすべて削除します。確認プロンプトなしに消去されてしまうため、誤って -r を押してしまわないよう注意してください。

日常で使えるcron設定のサンプル表

よく使われる日常的なcron設定の記述例をまとめました。

実行タイミング cronの記述例
毎日 夜20時00分 0 20 * * * /path/to/script.sh
毎日 深夜3時30分 30 3 * * * /path/to/script.sh
毎時 0分(1時間に1回) 0 * * * * /path/to/script.sh
毎分(1分に1回) * * * * * /path/to/script.sh
10分おき */10 * * * * /path/to/script.sh
毎週 月曜日の朝9時00分 0 9 * * 1 /path/to/script.sh
毎月 1日の深夜0時00分 0 0 1 * * /path/to/script.sh

ログ出力とメール通知の設定

cronを実運用する上で、実行結果のログを記録したり、不要なメール通知を停止したりする設定は非常に重要です。

ログをファイルに出力する

cronで実行されたコマンドの標準出力と標準エラー出力をログファイルに保存するには、リダイレクトを使います。

0 2 * * * /path/to/script.sh >> /var/log/cron_job.log 2>&1

>> で追記モードにし、2>&1 でエラー出力も同じファイルにリダイレクトしています。

メール通知をオフにする(捨てる)

cronは標準出力やエラー出力があると、デフォルトで実行ユーザー宛にメールを送信しようとします。これが不要な場合は、出力を /dev/null に捨てることでメール送信を防げます。

0 2 * * * /path/to/script.sh > /dev/null 2>&1

または、crontabファイルの先頭に以下のように記述することで、全体のメール通知を無効化することもできます。

MAILTO=""

cronが動かない場合の確認ポイント

設定したcronが期待通りに動かない場合は、以下の3点を確認してみてください。

  1. 絶対パスで記述しているか
    cron実行時は通常のログイン時と環境変数(特に PATH)が異なります。コマンドやスクリプトへのパスは、省略せずに絶対パス(例: /usr/bin/python3)で記述するのが鉄則です。
  2. 実行権限(パーミッション)が付与されているか
    実行するスクリプトファイルに実行権限がないとエラーになります。chmod +x /path/to/script.sh で権限を付与してください。
  3. cronデーモンが起動しているか
    OSによってはcron(またはcrond)サービスが停止している可能性があります。systemctl status cron または systemctl status crond で状態を確認しましょう。
Bash玄

はじめまして!Bash玄です。

エンジニアとしてシステム運用に携わる中で、手作業の多さに限界を感じ、Bashスクリプトを活用して業務を効率化したのがきっかけで、この道に入りました。「手作業は負け」「スクリプトはシンプルに」をモットーに、誰でも実践できるBashスクリプトの書き方を発信しています。

このサイトでは、Bashの基礎から実践的なスクリプト作成まで、初心者でもわかりやすく解説しています。少しでも「Bashって便利だな」と思ってもらえたら嬉しいです!

# 好きなこと
- シンプルなコードを書くこと
- コマンドラインを快適にカスタマイズすること
- 自動化で時間を生み出すこと

# このサイトを読んでほしい人
- Bashに興味があるけど、何から始めればいいかわからない人
- 定型業務を自動化したい人
- 効率よくターミナルを使いこなしたい人

Bashの世界に一歩踏み出して、一緒に「Bash道」を極めていきましょう!

Bash玄をフォローする

コメント