はじめに
こんにちは!今回はcrontabコマンドについて解説します。
crontabは、定期的にコマンドやスクリプトを自動実行するためのスケジュール管理コマンドです。「毎日午前3時にバックアップ」「毎週月曜日にレポート作成」「5分おきにログチェック」といった定期実行タスクを設定できます。
自動化の要!これを使いこなせると、作業がめっちゃ楽になりますよ。
crontabコマンドとは
crontabは、cron(クロン)デーモンによって実行されるスケジュールタスクを管理する外部コマンドです。“cron table"の略ですね。
各ユーザーが独自のcrontabファイルを持ち、そこに実行したいコマンドと実行スケジュールを記述します。一度設定すれば、指定した時刻に自動的にタスクが実行されるので、手動でやってた繰り返し作業から解放されます。
基本構文
|
|
crontabファイルの各行は、以下の形式で記述します。
|
|
主なオプション
| オプション | 説明 |
|---|---|
-e |
crontabファイルを編集(edit) |
-l |
現在のcrontabファイルを表示(list) |
-r |
crontabファイルを削除(remove) |
-i |
削除前に確認(-rと併用) |
-u ユーザー名 |
指定したユーザーのcrontabを操作(root権限必要) |
使用例
例1: crontabファイルを表示
|
|
実行結果:
|
|
現在設定されているcronジョブが一覧表示されます。まだ何も設定していない場合は「no crontab for user」と表示されます。
例2: crontabファイルを編集
|
|
実行結果:
|
|
初回実行時はエディタの選択を求められます。nano、vim、emacsなどから選べます。
例3: 毎日午前3時に実行
|
|
実行結果:
|
|
毎日午前3時にbackup.shスクリプトが実行されます。
例4: 毎時0分に実行
|
|
実行結果:
|
|
毎時ちょうど(1:00、2:00、3:00…)に実行されます。
例5: 5分おきに実行
|
|
実行結果:
|
|
0分、5分、10分、15分…と5分ごとに実行されます。*/5が「5分おき」を意味します。
例6: 毎週月曜日の午前9時に実行
|
|
実行結果:
|
|
曜日は0(日曜)〜6(土曜)、または7(日曜)で指定します。1は月曜日です。
例7: 毎月1日の午前0時に実行
|
|
実行結果:
|
|
毎月1日の深夜0時に月次処理が実行されます。
例8: 平日の午前8時〜午後6時、毎時0分に実行
|
|
実行結果:
|
|
月曜〜金曜(1-5)の8時〜18時の間、毎時0分に実行されます。
例9: 特定の月だけ実行
|
|
実行結果:
|
|
1月と7月の1日、午前9時に実行されます。
例10: crontabファイルを削除
|
|
実行結果:
|
|
-iオプションで確認メッセージが表示されます。安全に削除できます。
例11: 標準出力とエラー出力をログに保存
|
|
実行結果:
|
|
実行結果をログファイルに追記します。2>&1でエラー出力も同じファイルに保存されます。
例12: 環境変数を設定して実行
|
|
実行結果:
|
|
crontabの先頭で環境変数を設定できます。MAILTOを設定すると、エラーがあった時にメールで通知されます。
Tips・注意点
cron時刻指定のフォーマット
|
|
特殊文字:
*: すべての値にマッチ,: 複数の値を指定(例:1,3,5)-: 範囲を指定(例:1-5)/: 間隔を指定(例:*/5は5おき)
PATHに注意
cronで実行されるコマンドは、限定的なPATH環境変数で実行されます。
|
|
コマンドが見つからないエラーを防ぐため、フルパスで指定しましょう。
エラーの確認方法
cronのエラーは通常、システムログに記録されます。
|
|
うまく動かない時は、まずログを確認!
@記法(特殊な時刻指定)
よく使うスケジュールには、簡単な記法が用意されています。
|
|
例:
|
|
cronとcrontabの違い
- cron: タスクを実行するデーモン(常駐プログラム)
- crontab: cronのスケジュールを管理するコマンド
crontabコマンドでスケジュールを設定し、cronデーモンが実行する、という関係です。
実践的な使い方
毎日のバックアップ自動化
|
|
深夜の時間帯に自動でバックアップが実行されます。
ディスク容量の定期監視
|
|
ディスク容量をメールで定期レポート。
Webサイトの死活監視
|
|
サイトがダウンしていたら、スクリプトでアラートを送信できます。
古いログファイルの削除
|
|
ディスク容量を節約するため、古いログを自動削除。
データベースのバックアップ
|
|
日付付きでデータベースをバックアップします。%は\%とエスケープが必要です。
システム起動時にスクリプトを実行
|
|
再起動後に自動的にアプリケーションサーバーを起動します。
営業時間中の定期チェック
|
|
営業時間だけ定期処理を実行。
メンテナンス通知の送信
|
|
月の第1日曜日だけ実行する高度な例です。
まとめ
crontabコマンドのポイント:
- 定期的なタスクを自動実行するスケジュール管理ツール
- -e: crontabを編集
- -l: 現在の設定を表示
- -r: crontabを削除(-iで確認付き)
- 時刻指定:
分 時 日 月 曜日 コマンド */5で5分おき、0-23で範囲指定@daily、@hourlyなどの特殊記法も便利- コマンドはフルパスで指定すると安全
- ログファイルへのリダイレクトで実行結果を記録
- よく使う組み合わせ:
crontab -e,crontab -l
crontabで繰り返し作業を自動化すれば、人間は創造的な仕事に集中できます。最初は簡単なタスクから始めて、徐々に自動化の範囲を広げていきましょう!