|
|
crontabの書き方crontabの書き方です。すぐに書き方忘すれるので自分用メモです。 検証環境OS CentOS 4.4 crontabについて設定した時間になったら定期的にコマンドを実行してくれる、ナイスガイですw 設定方法をすぐに忘れるのでメモ代わりに:-p 設定方法crontab 書式crontab [ -u ユーザ名 ] { -l | -r | -e }
オプションの使い方-u オプション -u どのユーザがcrontabを設定するのかを指定します。省略した場合はcrontabコマンドを実行したユーザで設定されます。 # crontab -u tamo -l 1 * * * * echo "cron test"-l オプション -l オプションは、現在の crontab を標準出力へ表示させる。 $ crontab -l 1 * * * * echo test-r オプション -r オプションは、現在の crontab を削除する。(全ての設定が削除されるので、使用は十分に注意してください) -e オプション-e オプションは、環境変数 VISUAL もしくは EDITOR で指定されているエディターを使って、現在の crontab を編集するのに使われる。編集終了後、 変 更された crontab は自動的にインストールされる。 設定書式設定項目は左から「分」「時」「日」「月」「曜日」となっている。 * * * * * [実行コマンド] 設定可能な数値 分 0-59 時 0-23 日 1-31 月 1-12 曜日 0-7 (0または7は日曜日) 実行時間指定方法 リスト 0,10,20,30 分フィールド指定した場合は0,10,20,30分に実行します。 範囲 1-5 月フィールドで指定した場合、1,2,3,4,5月に処理を実行します。 共存 1,6,9-11 時間フィールドで指定した場合、1時、6時、9時、10時、11時に処理を実行します。 間隔 */10 分フィールドで指定した場合、10分間隔で処理を実行します。「/」の後ろに指定した値の間隔で処理を実行します。 書式基本設定cronでの実行時刻の設定例を記述します。 分単位の設定例設定できる値 0-59 設定例毎時15分になると実行 15 * * * * 時間単位の設定例設定できる値 0-23 設定例毎日AM 4:02 に実行 02 4 * * * 日にち単位の設定設定できる値 1-31 設定例毎月10日のAM 6:15 に実行 15 6 10 * * 月単位の設定設定できる値 1-12 設定例7月1日 AM 3:00に実行 00 3 1 7 * 曜日単位の設定設定可能な値 0-7 各値に対応する曜日月曜日 1 火曜日 2 水曜日 3 木曜日 4 金曜日 5 土曜日 6 日曜日 7 または 0 設定例毎週月曜日のAM 10:00に実行 00 10 * * 1 書式応用設定基本の設定のみでは対応できない場合には、以下の方法で対応できるかもしれません。 間隔設定「/」の後に実行したい間隔の値を設定することで、その間隔で実行することができます。 設定例10分ごとに実行する場合 */10 * * * * 3時間ごとに実行する場合 00 0-23/3 * * * リスト設定「,」で区切ることで、複数の値を設定することが出来ます 設定例毎日AM 4:30とAM 9:30に実行 30 4,9 * * * 毎週月、金曜日のAM 3:00に実行 00 3 * * 1,5 範囲設定「-」で指定することで、実行範囲を指定することができます。 設定例毎日AM 3:00 4:00 5:00 6:00 7:00 9:00 に実行 00 3-9 * * * 毎月10日のAM 3:15 4:15 5:15 6:15 に実行 15 3-6 10 * * 複合リストや範囲をあわせた記述も可能です。 設定例AM 1:00 6:00 9:00 10:00 11:00に実行 00 1,6,9-11 * * * 設定例「crontab -e」コマンドでcronの設定を行います。 $ crontab -e no crontab for tamo - using an empty one crontab: installing new crontab 毎時00分に「disk-space.sh」というスクリプトを実行させる設定です。 00 * * * * /root/disk-space.sh 設定内容は/var/spool/cron/[user]に保存されますが、パーミッションの関係でrootユーザでしか中身は確認できないはずです。 # ls -l /var/spool/cron/ 合計 8 -rw------- 1 root root 22 4月 2 11:39 root -rw------- 1 root tamo 20 4月 2 12:53 tamo crontabのTipscronで月末を指定情報元cron(crontab)で月末で指定する方法 ぎじゅっやさんさま 毎月28~31日の間にtestコマンドで月末かどうかをチェックしているようです。うーん、素晴らしいですね~:-) 55 23 28-31 * * /usr/bin/test $( date -d '+1 day' +%d ) -eq 1 && 実行したいコマンド 最終金曜日のみ実行情報元Blog::Rescueさま cron的には毎週金曜日testコマンドで判別をしている、最終金曜日の判定はtestコマンドにて行っています。賢いですねぇ~ 0 0 * * 5 /usr/bin/test $( date '+\%m' ) -ne $( date -v+7d '+\%m' ) && echo 'Go Ahead!' dateコマンドの種類によっては下記のように設定する必要があるそうです。 0 0 * * 5 /usr/bin/test $( date +\%m ) -ne $( date --date '7 day' +\%m ) && echo 'Go Ahead!' 間違ってcrotab -rをしないために!!eとrは隣あわせなので、間違って押してしまって編集しようとして全部削除してしまったという悲惨事件が各地で発生している模様です・・・そんな事態に陥らないようにするために aliasを設定する。(-iオプションがあればですが) usage: crontab [-u user] file
crontab [-u user] [ -e | -l | -r ]
(default operation is replace, per 1003.2)
-e (edit user's crontab)
-l (list user's crontab)
-r (delete user's crontab)
-i (prompt before deleting user's crontab)
~/.bashrcに設定する。 alias crontab='crontab -i' とする。 $ source ~/.bashrc $ crontab -r crontab: really delete tamo's crontab? n メールを出したくない場合cron設定の前に以下の行を入力 MAILTO="" これでメールは飛ばなくなります。逆に、複数のアドレスに飛ばしたいときは、カンマ区切りで複数メールアドレスを指定するとよいです。この$MAILTO変数は、デフォルトのメールアドレスを上書きします。 特定の設定のみメールを変更ただし、上記は/etc/crontab自体を変更した場合と同じく、実行するアカウントのcron設定すべての宛先に反映される。特定のスケジュールのみを宛先変更させたい場合には、次のように指定すればよい。 # crontab -e 0 2 * * * /bin/sh /etc/hogehoge 2>&1 | Mail [送信先メールアドレス] |
|
