【Linux】Cronジョブチートシート - j-komatsu/myCheatSheet GitHub Wiki

Cronジョブチートシート

目的

定期的にタスクを自動化するためのcronジョブ設定と基本的な使用例をまとめる。


インデックス

  1. 基本構文
  2. スケジュールの設定
  3. Cronジョブの確認と編集
  4. 使用例
  5. ログとデバッグ
  6. 便利なヒント

1. 基本構文

  • 構文:
    * * * * * command_to_execute
    │ │ │ │ │
    │ │ │ │ └───── 曜日 (0 - 7) (日曜日は0または7)
    │ │ │ └──────── 月 (1 - 12)
    │ │ └────────── 日 (1 - 31)
    │ └──────────── 時 (0 - 23)
    └────────────── 分 (0 - 59)
    

2. スケジュールの設定

  • 例:
    • 毎分実行:
      * * * * * /path/to/command
      
    • 毎時0分に実行:
      0 * * * * /path/to/command
      
    • 毎日午前3時に実行:
      0 3 * * * /path/to/command
      
    • 毎週月曜日に実行:
      0 0 * * 1 /path/to/command
      
    • 毎月1日に実行:
      0 0 1 * * /path/to/command
      

3. Cronジョブの確認と編集

  • 現在のcronジョブを確認:
    crontab -l
    
  • cronジョブを編集:
    crontab -e
    
  • 特定のユーザーのcronジョブを確認:
    crontab -u [ユーザー名] -l
    

4. 使用例

  • バックアップスクリプトを毎晩2時に実行:
    0 2 * * * /home/user/backup.sh
    
  • ウェブサーバーを毎日午前1時に再起動:
    0 1 * * * /usr/sbin/service apache2 restart
    
  • ログを毎月末日にアーカイブ:
    0 0 28-31 * * [ "$(date +\%d -d tomorrow)" = "01" ] && /path/to/archive_logs.sh
    

5. ログとデバッグ

  • cronジョブの実行ログを確認:
    grep CRON /var/log/syslog
    
  • エラーログを確認:
    tail -f /var/log/syslog
    
  • ジョブ実行結果をメールで受け取る:
    MAILTO="[email protected]"
    

6. 便利なヒント

  • 特定の時間帯のみ実行:
    0 9-17 * * * /path/to/command
    
  • 標準出力とエラー出力をログファイルにリダイレクト:
    * * * * * /path/to/command >> /path/to/logfile 2>&1
    
  • 環境変数の設定:
    PATH=/usr/local/bin:/usr/bin:/bin