내 로그가 var/log/messages에 저장되지 않는 이유를 어떻게 알 수 있나요?

내 로그가 var/log/messages에 저장되지 않는 이유를 어떻게 알 수 있나요?

저는 리눅스를 처음 접했습니다. 저는 몇 주 분량의 로그만 백업했습니다. 이번 주에 메시지를 살펴본 결과 대략 마지막 백업 이후 지난 주에 저장이 중단된 것을 확인했습니다. 일반적으로 새 메시지 문서는 매주 거의 같은 시간에 시작됩니다. 평소와 마찬가지로 이번 주에 새 문서가 자동으로 생성되었으며 로그가 다시 저장되기 시작했습니다. 하지만 지난주에 저장을 중단한 로그가 아직도 누락되어 있습니다. 여기서 무슨 일이 일어나고 있는지에 대한 아이디어가 있는 사람이 있나요? 손실된 로그를 복구할 수 있는 방법이 있나요?

답변1

/var/log/syslog 파일이 열릴 때 이름이 변경되고 삭제되었으며 동일한 이름의 새 파일이 생성되었을 가능성이 높습니다.

이로 인해 삭제된 파일에 메시지가 전송됩니다(Unix에서는 파일이 열려 있는 동안 이 작업을 수행할 수 있습니다. 데이터는 디스크에 기록되고 사용 가능한 공간 감소에 반영됩니다).

파일이 닫히면 파일이 실제로 삭제되고 모든 데이터가 손실됩니다. 절망적인 최후의 수단으로 삭제된 여유 공간의 로그 파일 라인에 대해 root 및 grep으로 strings 명령을 통해 전체 논리 디스크를 덤프할 수 있습니다. 파일 시스템이 압축되지 않았고 삭제된 파일을 정리할 수 있는 보호 장치가 없다고 가정해 보십시오. 이 경우 노를 젓지 않고 악명 높은 개울을 따라 내려가게 됩니다.

# Assume log lines begin with YYYY-MM-DD and are from last week
# And assume that /var/log is on /dev/sda1.
# Save on a different disk or external USB device
dd if=/dev/sda1 | strings | grep "^2019-08-[23][0-9] ..:..:.. " > /mnt/usbkey/logs.txt
# After some hours, MAYBE you'll find something among all the rubbish in /mnt/usbkey/logs.txt

또는 syslog 데몬이 중지되었을 수 있습니다.

어떤 파일이 열려 있는지 확인하려면 syslog의 pid를 로케일하고 /proc/PID_OF_SYSLOG/fd를 살펴보세요. 거기에 파일 핸들이 표시됩니다. 이는 실제 열려 있는 파일에 대한 심볼릭 링크입니다.

다음과 같은 것을 본다면

3 -> /var/log/syslog [삭제됨]

저기/var/log/syslog는 삭제되지 않습니다. 즉,두 개의 서로 다른 파일입니다. syslog를 중지했다가 다시 시작하면 문제가 해결됩니다.

일부 로그 회전 스크립트는 오래된 로그 파일을 이동/이름 변경/압축/삭제할 때 때때로 이와 같은 어리석은 작업을 수행할 수 있습니다.

관련 정보