Other

crontab

crontab [-u user] { -l | -r | -e } ■オプション内容

  • u ユーザを指定する。省略時は現在のカレントユーザになる
  • l 現在のcron設定を表示する
  • r 現在のcron設定を削除する
  • e 現在のcron設定を編集する。設定内容がない場合は新規作成する

時間情報 in hour day month week command

(凡例) min   分を指定   (*) hour   時を指定   (*) day   日を指定   (*) month   月を指定   (*) week   曜日を指定。0を日曜日とし、0-7まで   (*) command   実行するコマンド or スクリプトを指定 (*)という記号があるものは、ワイルド・カードを使用できます

crontabでのdefault設定

SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=""#これがないと実行しているユーザーにメールが飛ぶ
HOME=/ #これがないとユーザーのhome directoryになる

時間の指定方法

3時間おき

2 8-20/3 * * * root hogehoge.sh

これだと、8:02、11:02、14:02、17:02、20:02に、3時間置きに実行します。

2時間置き

* */2 * * * root hoge.sh

これだと2時間置きに実行する

mysqldumpをcronにやらせてみる

* 3 * * * * db_user mysqldump --opt -u db_user --password='hoge' db_name > /home/user1/db_backup.sql 

ここでパスワードは -p じゃなくて --passwordを使わないと、受け取ってくれない

ファイル名に日時をつけたい場合は、

* 3 * * * * touch /home/hoge/info_$(date '+\%Y\%m\%d-\%k\%M').txt

とするとinfo_200908011215.txtというファイルが出来る。

ログ設定と場所

cronのログは設定をしないと出してくれない、気がする

  1. /etc/syslog.confで
    cron.*                         /var/log/cron.log(ログの場所)
    のコメントを外し有効にしておく
  2. その後sudo /etc/init.d/sysklogd restartという風にログデーモンを再起動させる。

日曜日は0でも使えるらしいだけど、0と7だと7のほうがよいみたい。

MAILTO

特にcrontabで何かスクリプトを動かしていて(DBバックアップとか)、その中スクリプトがエラーだったり、スクリプトが何か値を返してきた場合(それかスクリプトがecho渡河していた場合)、crontabを動かしているユーザー宛にメールが飛びます。

例えばayaのcrontabで登録していたら、aya@そのサーバのMTAが認識している自FQDNをつけて送りつけてきます。

rootとかは大事なんだけど(エラー内容が多いので)、それ以外は意外とウザい。 なので消しちゃいます。

エラー

crontab -eを閉じようとすると

"/tmp/crontab.xxxx/crontab":2: bad minute
errors in crontab file, can't install.
Do you want to retry the same edit?

といわれる。間違えてない!場合は一行が長すぎて保存する時に改行されちゃって怒られているらしい


Last-modified: 2012-03-12 (月) 17:05:05 (166d)