起動時に実行可能ファイルが読み取る(設定)ファイルを見つける方法

起動時に実行可能ファイルが読み取る(設定)ファイルを見つける方法

実行可能ファイルが起動時にどの(構成)ファイルを読み取るかを調べる賢い方法はありますか?たとえば、snmpdまたはsshd。 1つのオプションは、マニュアルページでまたはセクションを確認することですCONFIGURATION FILESFILES(私の考えには効果があると思う)もう一つの方法はシステムコールを追跡することですが、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"

関連情報