找出启动时可执行文件读取哪些(配置)文件的方法

找出启动时可执行文件读取哪些(配置)文件的方法

有哪些巧妙的方法可以找出可执行文件在启动时读取哪些(配置)文件?例如snmpdsshd.一种选择可能是检查手册页上的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"

相关内容