Linux,Unix,BSD

쉘 명령으로 시스템 로그 남기기

채윤아빠 2021. 1. 21. 20:15
728x90
반응형

프로젝트를 진행하던 중에, 쉘 스크립트로 특정 파일을 수정 시각을 감시하다가 일정 시간 동안 파일에 추가되는 데이터가 없을 경우, 시스템을 재부팅하는 일종의 와치독과 유사한 스크립트를 작성할 일이 있었습니다.

그러던 중에 시스템에 결함이 발생하였는데, 원인 분석중 와치독 스크립트가 예외상황으로 재부팅을 한 것인지, 프로젝트 서버가 문제를 일으켜 재부팅된 것인지 구별을 할 수 있는 방법이 필요했습니다.

"/var/log/messages"의 내용을 확인했을 때, 시스템이 서버의 장애로 재부팅된 것과 와치독 스크립트가 "reboot" 명령으로 재부팅한 것을 구별할 수가 없었습니다.

그래서 와치독 스크립트에서 재부팅하였을 때, "/var/log/messages"에 그 내용을 기록하면 바로 구별이 가능하겠다고 생각하고 "/var/log/messages" 파일에 로깅할 수 있는 명령을 찾아 보니 "logger"라는 명령이 있었습니다.

사용법은 아래와 같이 아주 간단합니다.

logger "INFO: reboot by watchdog script!"

위와 같은 내용을 와치독 스크립트에 추가하였더니, "/var/log/messages"에 로그 내용과 재부팅한 시각이 기록되어 분석하기 딱 좋았습니다.

May 11 00:00:41 raspberrypi rsyslogd:  [origin software="rsyslogd" swVersion="8.1901.0" x-pid="354" x-info="https://www.rsyslog.com"] rsyslogd was HUPed
May 11 00:00:41 raspberrypi rsyslogd:  [origin software="rsyslogd" swVersion="8.1901.0" x-pid="354" x-info="https://www.rsyslog.com"] rsyslogd was HUPed
May 11 00:00:49 raspberrypi colord[869]: failed to get session [pid 1158]: No data available
May 11 20:55:09 raspberrypi pi: INFO: reboot by watchdog script!

참고자료

"Write to custom log file from a Bash script":https://stackoverflow.com/questions/15045946/