Memo/Linux/cron

http://dexlab.net/pukiwiki/index.php?Memo%2FLinux%2Fcron
 

cron


メールの抑制

cronの書式や実行時にエラーがあると、通常rootユーザのメールボックスに貯まり、頻度が高いとディスクが溢れる事がある

  • rootユーザへメールを送信しない
    1. sudo vim /etc/crontab
    2. --
    3. MAILTO=""
    4. --
    5. sudo service crontd restart
  • cron実行時の結果を syslogへ飛ばす。syslogは通常logrotateされるのでディスク溢れの心配は少なく、cronでエラーが出た場合も気づける。
    1. crontab -e
    2. --
    3. # エラー等がrootユーザへメールされてしまう
    4. 5 1 * * * command
    5.  
    6. # syslog(/var/log/message)へタグを付けて送信
    7. 5 1 * * * command | logger -i -t tag
    8. > /dev/null 2>&1
    9. --
  • 本当に不要な場合は捨てる。エラーが分からなくなるのでなるべく利用しない
    1. 5 1 * * * command >/dev/null 2>&1

crontabでログ処理

  • bash,zshで標準出力、標準エラーまとめてリダイレクト
    1. command >& /dev/null
  • syslogに記録(/var/log/messages)
    1. * * * * * /path/to/command 2>&1 | logger -i -t mycommand -p local0.info

crontabで%はエスケープが必要

crontab -eで編集する際、パラメータ等に「%」が含まれていると正常に実行されないので「\%」とエスケープが必要


ユーザ毎のcronファイル

  • CentOS 6/7: 以下にユーザ毎にファイルができる
    1. /var/spool/cron/USERNAME

sudo: sorry, you must have a tty to run sudo

CentOS5.5で、crontab内や/etc/cron.daily/内でsudoを使おうとするとこのエラーが出る。

  • 対策。rootユーザのみtty接続でなくともsudoを許可
    1. sudo /usr/sbin/visudo
    2. ----
    3. Defaults:root !requiretty
    4. ----
  • もしくはssh -tオプションで実行しろと書いてある
    1. ssh -t hostname sudo <cmd>

トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2018-01-10 (水) 16:03:34 (13d)