rsyslog가 기본 구성 파일이 아닌 경우 어떻게 찾을 수 있나요?

rsyslog가 기본 구성 파일이 아닌 경우 어떻게 찾을 수 있나요?

기본적으로 rsyslog 구성 파일은 /etc/rsyslog.conf에 있습니다. -f /path/to/file 옵션을 사용하여 시작 시 구성 파일 경로를 설정할 수 있습니다.

내 질문은: 구성 파일이 기본값이 아닌 다른 곳에 설정된 경우 어떻게 찾을 수 있습니까?

답변1

소프트웨어와 구성 방법에 따라 다릅니다. rsyslogd적어도 Centos 7 버전은 구성 파일을 읽은 후 닫으므로 lsof데몬이 실행되면 이와 같은 도구는 파일을 표시하지 않습니다.

% sudo lsof -p `pidof rsyslogd` | perl -nle 'print for grep -f, split'
lsof: WARNING: can't stat() fuse.gvfsd-fuse file system /run/user/1000/gvfs
      Output information may be incomplete.
/usr/sbin/rsyslogd
...

그러나 파일 이름은 프로세스 테이블에 표시되며, /etc이러한 구성은 일반적으로 숨겨져 있으므로 아래에서 검색할 수 있습니다.

% < /proc/`pidof rsyslogd`/cmdline tr '\0' ' ' ; echo
/usr/sbin/rsyslogd -n -f /nunca/adivinarás/esto
% sudo grep -r '/nunca/adivinar' /etc
/etc/sysconfig/rsyslog:SYSLOGD_OPTIONS="-f /nunca/adivinarás/esto"

완전히 알려지지 않은 시스템에서는 sysdigSystemTap이나 커널 추적 도구와 같은 도구를 사용하고 데몬이 사용하는 파일을 보고할 수 있습니다.

% sudo sysdig -p '%fd.name' 'proc.name = rsyslogd' | tee files-used
...

그런 다음 데몬을 다시 시작하십시오.

커널 추적 도구가 없으면 stracegit 또는 linux와 같은 사용자 공간 도구를 사용하여 문제의 데몬을 추적 ktrace하고 시스템 호출에서 구성 파일이 무엇인지 알아낼 수 있습니다. 구성 파일 읽기를 찾을 위치를 파악하려면 합리적으로 구성된 시스템의 추적 출력을 비교해야 할 수도 있습니다.

관련 정보