|
syslogを1時間おきに保存 †対象機器 CAT845
CAT845の /var/log は tmpfs(ramdisk)であるため電源を切ると消えてしまいます。 /var/log/syslog を保存するには /var/log/ に microSD や USBメモリをマウントすればよいのですが、1行書き込みごとにファイルライトすると フラッシュメディアの寿命やライト途中の電源断事故が気になります。 そこで /var/log は tmpfs(ramdisk)のままとし、1時間毎に microSD や USBメモリへコピーすることとします。 すると1日最大24回。1年で 8,760回のコピーで済みます。 syslog_日付時刻 ファイルにする †
/var/log/syslog { rotate 7 # ebihara 意味なし # daily hourly # ebihara missingok notifempty # delaycompress # ebihara # compress # ebihara nodateext # ebihara postrotate EXT=`date +"%Y%m%d_%H%M%S"` for f in $1 do test -f ${f}.1 && mv ${f}.1 ${f}_${EXT} test -f ${f}_${EXT} && gzip -9 ${f}_${EXT} # gz圧縮する場合 done invoke-rc.d rsyslog rotate > /dev/null endscript } rotate 回数は意味がなくなります。 毎時USBメモリへコピーする †# cd /etc/cron.hourly/ # cp /etc/cron.daily/logrotate . /etc/cron.daily/ に置かれたコマンドは辞書名順に実行されるため、xlogcopy は logrotate の後に実行される。
#!/bin/sh COPYDIR=/tmp/logbackup # コピー先パス。実験的に /tmp にしている。mmcblk0やusbメモリのマウント先に変更する事 # 必要があれば USBメモリや microSD を mount する test -d $COPYDIR || mkdir -p $COPYDIR # dirが無ければ作る cp -pu /var/log/syslog_* $COPYDIR # -u は 日付ファイルサイズが同じであれば skip find /var/log/ -name "syslog_*" -mtime +1 -exec rm -f {} \; # 1日経ったら消す find $COPYDIR -name "syslog_*" -mtime +300 -exec rm -f {} \; # 300日経ったら消す sync # 必要があれば USBメモリや microSD を umount する 電源を落とすとき †# /usr/sbin/logrotate -f /etc/logrotate.conf -f 強制ログローテート # /etc/cron.hourly/xlogcopy ファイルコピー 注意事項 †microSDやUSBメモリのフォーマットに FAT16 は使用しない方が良いです。
関連 †自動リンク |