システムが起動するたびに新しいシステムログファイルを生成し、現在の起動の異常動作(存在する場合)を検出できるように、古いデータを別のファイルに保存したいと思います。これを達成するためのsyslogd設定はありますか?それともこれを達成するには、logrotateでcrontab操作を使用する必要がありますか?
答え1
この行(シェルに拘束されないように意図されている)をに追加するか、/etc/rc.local
スクリプトファイル(前にshebangがオーム#!/bin/sh
)に入れてから実行する行を入れます/etc/rc.local
。
# find the line number for the (most recent) start of syslog
LOGSTART=$(grep -n "syslog.*start" /var/log/syslog.1|cut -f1 -d:|tail -n1)
# give up if none found
[ -n "$LOGSTART" ] || exit 0
# add preceding lines to the long-term log
sed "$LOGSTART,\$d" /var/log/syslog >>/var/log/syslog.old
# make a copy of the log
cp /var/log/syslog /tmp/syslog
# recreate the active log
sed -n "$LOGSTART,\$p" /tmp/syslog >/var/log/syslog
# remove the copy
rm /tmp/syslog
このプロセス中にsyslogd(またはrsyslogdなど)を停止して再起動する方が良いかもしれませんが、私はそれをあなたの宿題として残しました。
まずgrep "syslog.*start" /var/log/syslog
、ラインマーキングシステムのロガーの起動が実際に見つかったことを確認し、そうでない場合はこのラインを適切に修正してください。ログファイルは時々/var/log/messagesですが、syslogに言及した後はそうではないかもしれません。