デフォルトでは、rsyslog 構成ファイルは /etc/rsyslog.conf にあります。 -f /path/to/file オプションを使用して、起動時に構成ファイルのパスを設定できます。
私の質問は:設定ファイルがデフォルト以外の場所に設定されている場合はどうすればわかりますか?
答え1
ソフトウェアと構成方法によって異なります。rsyslogd
少なくともCentos 7バージョンは設定ファイルを読んだ後に閉じるので、lsof
デーモンが実行されると、そのようなツールはファイルを表示しません。
% sudo lsof -p `pidof rsyslogd` | perl -nle 'print for grep -f, split'
lsof: WARNING: can't stat() fuse.gvfsd-fuse file system /run/user/1000/gvfs
Output information may be incomplete.
/usr/sbin/rsyslogd
...
ただし、ファイル名はプロセステーブルに表示され、/etc
これらの構成は通常隠されているため、以下から検索できます。
% < /proc/`pidof rsyslogd`/cmdline tr '\0' ' ' ; echo
/usr/sbin/rsyslogd -n -f /nunca/adivinarás/esto
% sudo grep -r '/nunca/adivinar' /etc
/etc/sysconfig/rsyslog:SYSLOGD_OPTIONS="-f /nunca/adivinarás/esto"
完全に未知のシステムでは、sysdig
SystemTapやカーネルトレースツールなどのツールを使用し、デーモンが使用しているファイルを報告できます。
% sudo sysdig -p '%fd.name' 'proc.name = rsyslogd' | tee files-used
...
その後、デーモンを再起動します。
カーネルトレースツールがない場合は、strace
gitやlinuxなどのユーザースペースツールを使用して問題のデーモンを追跡し、ktrace
システムコールで設定ファイルが何であるかを判断できます。構成ファイルの読み取りを見つける場所を特定するには、合理的に構成されたシステムのトレース出力を比較する必要があります。