문제: syslogd가 시작되기 전에 발생하는 커널 로그가 내 syslog에 추가되지 않습니다.
시스템 설명: 부팅 순서가 시작되고 약 5초 후에 syslogd가 시작됩니다. 부팅 시퀀스 중 약 2초 동안 실행되는 스크립트가 /dev/kmesg에 첨부되어 있습니다. syslogd가 시작되기 전에 실행됩니다.
커널 로그를 syslog로 보내기 위해 klogd를 실행 중인데, syslogd가 시작된 후에 발생한 커널 로그만 보냅니다.
스크립트가 실행 중일 때 syslogd가 시작되지 않기 때문에 syslog의 스크립트에서 커널 로그가 누락되었습니다.
시스템 로그에서 5초 후에 모든 커널 로그를 볼 수 있습니다. 부팅 후 5초 후에 /dev/kmsg에 추가하면 syslog로 이동하는 로그가 표시됩니다.
내 /etc/syslog.conf에는 다음과 같이 syslog에 들어가도록 모든 것이 구성되어 있습니다.
./경로/to/syslog
klogd가 실행된 후 /dev/kmsg에 추가되는 내용뿐만 아니라 kmsg 링 버퍼의 기존 내용을 syslog에 기록하도록 klogd가 필요합니다. 어떻게 해야 하나요?
답변1
일단 시작되면 klogd
두 번째 사본을 실행하십시오.원샷 모드( klogd -o
). 커널 메시지 버퍼에 있는 기존 메시지를 읽고 처리한 다음 종료됩니다.
첫 번째 장기 인스턴스를 시작하면 klogd
메시지가 손실되지 않는지 확인해야 합니다.
이 작업을 수행할 수 없는 경우(예: 매우 오래된 버전 klogd
또는 busybox
유사한 임베디드 시스템 툴킷의 버전이 있는 경우) 다음을 수행할 수 있습니다.
if [ -e /var/log/dmesg.boot ]; then
mv /var/log/dmesg.boot /var/log/dmesg.prevboot
fi
dmesg > /var/log/dmesg.boot
루트 파일 시스템에 쓰기가 가능해지면?