crontab

Cron Check List

January 1, 2020
Cron, crontab, 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コンテナを利用したコマンドを実行する際は、実行対象のコンテナを特定すること

Cron

January 1, 2020
Cron, crontab

Cron # 日時・時刻・インターバルの指定 # 記述方法 # 時,日,月,曜日,実行コマンド 記号による指定 # 記号 内容 * 全範囲指定(ワイルドカード) - 範囲指定 / インターバル指定 , 区切り指定 曜日の指定 # 略語または数字での指定が可能 略語 数字 sun 0 mon 1 tue 2 wed 3 thu 4 fri 5 sat 6 月の指定 # 略語または数字での指定が可能 略語 数字 jan 1 feb 2 mar 3 apr 4 may 5 jun 6 jul 7 aug 8 sep 9 oct 10 nov 11 dec 12 注意事項 # 実行ディレクトリ # cron ジョブ実行時のカレントディレクトリ = ユーザーのホームディレクトリ 実行コマンドの指定は「絶対パスを指定」または「実行ディレクトリにcdで移動」すること 環境変数 # cron ジョブ実行時は最低限の環境変数のみセットされた状態、パスが通っていないケースがあるため注意 shell内での指定と異なり、右辺の環境変数が展開されないため注意 # NG PATH=/usr/local/bin:$PATH # OK PATH=/usr/local/bin:/usr/bin:/bin 毎分指定 # 日次のバッチを誤って毎分実行しないよう注意 # NG * 5 * * * /path/to/backup. ...