Cron Check List

Crontab #

変数の設定 #

  • シェルの種類が記載されていること
    crontab 実行時のシェルの種類の初期値は /bin/sh e.g.
    SHELL=/bin/bash
    
  • エラー発生時のメール送信宛先 MAILTO=foo@bar.com が設定されていること
  • コマンド実行時に必要な変数は key=value フォーマットで上部にまとめて設定されていること
  • 各変数の使用用途と設定値のサンプルがコメントに記載されていること

日時の設定 #

  • 分 時 日 月 曜日 のフォーマットで設定されていること
  • 存在する日時/曜日が設定されていること
  • 曜日 は同時に設定しないこと
    同時に設定されている場合 AND 条件ではなく OR 条件で実行されるため

コマンドの設定 #

  • 実行コマンド内の %\(バックスラッシュ)でエスケープされていること
    コマンド内にエスケープされていない がある場合、 が改行文字に置換されそれ以降のコマンドが標準入力として渡されるため
  • ファイルを指定する場合は絶対パスを使用すること
    crontab のコマンド実行時のカレントディレクトリは ユーザー のホームディレクトリとなるため
  • /usr/bin/bin 以外の箇所にあるコマンドを実行したい場合は絶対パスを使用すること crontab 実行時のPATH環境変数は /usr/bin:/bin しか指定されていないため
  • ログが /dev/null に捨てられず、書き込み可能な箇所に出力されていること 実行ログを破棄してしまうと障害発生時の調査が難しくなるため

Docker 関連の設定 #

  • dockerコンテナを利用したコマンドを実行する際は、rootユーザー権限で実行しないこと
  • dockerコンテナを利用したコマンドを実行する際は、実行対象のコンテナを特定すること