시작 시 새 시스템 로그 파일 생성

시작 시 새 시스템 로그 파일 생성

시스템이 시작될 때마다 새로운 시스템 로그 파일을 생성하고 현재 시작의 비정상적인 동작(있는 경우)을 감지할 수 있도록 이전 데이터를 다른 파일에 저장하고 싶습니다. 이를 달성하기 위한 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를 언급한 이후에는 그렇지 않을 수도 있습니다.

관련 정보