시작 시 실행 파일이 읽는 (구성) 파일을 찾는 방법

시작 시 실행 파일이 읽는 (구성) 파일을 찾는 방법

실행 파일이 시작 시 어떤 (구성) 파일을 읽는지 알아내는 영리한 방법이 있습니까? 예를 들어 snmpd또는 sshd. 한 가지 옵션은 매뉴얼 페이지에서 또는 섹션을 확인하는 것입니다 CONFIGURATION FILES. FILES(내 생각엔 효과가 있다고 생각하는) 또 다른 방법은 시스템 호출을 추적하는 것이지만, snmpd적어도 다음과 같은 경우에는 효과가 없는 것 같습니다.

root@vserver:~# strace 2>&1 /usr/sbin/snmpd | grep snmpd.conf
root@vserver:~# 

마지막으로 stat파일 액세스 시간이 업데이트되지 않기 때문에 명령이 도움이 되지 않습니다. 업데이트된 경우 를 실행하여 가능한 구성 파일에 대한 일부 표시를 얻을 수 있습니다 find /etc/ -type f -amin 1. 시작 시 실행 파일이 읽는 (구성) 파일을 알아내는 다른 방법이 있습니까?

답변1

일반적인 접근 방식은 다음을 사용하는 것입니다 strace.

strace -fe trace=open,openat <command>

구성 파일은 일반적으로 .conf.로 시작하므로 결과를 grep '\.conf.

또 다른 옵션은 다음을 사용하십시오 strings.

$ strings $(which httpd) | grep '\.conf'
 -D SERVER_CONFIG_FILE="conf/httpd.conf"
conf/httpd.conf
        Allowed in *.conf 
        directive in your httpd.conf file to list a non-root

많은 프로그램은 또한 어떤 구성 파일을 읽는지 알려주는 옵션을 제공합니다 apache. 예를 들면 다음과 같습니다.

$ httpd -V | grep '\.conf'
-D SERVER_CONFIG_FILE="conf/httpd.conf"

관련 정보