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