실행 파일이 시작 시 어떤 (구성) 파일을 읽는지 알아내는 영리한 방법이 있습니까? 예를 들어 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"