rsyslogがデフォルトの設定ファイルではない場合はどうすればわかりますか?

rsyslogがデフォルトの設定ファイルではない場合はどうすればわかりますか?

デフォルトでは、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"

完全に未知のシステムでは、sysdigSystemTapやカーネルトレースツールなどのツールを使用し、デーモンが使用しているファイルを報告できます。

% sudo sysdig -p '%fd.name' 'proc.name = rsyslogd' | tee files-used
...

その後、デーモンを再起動します。

カーネルトレースツールがない場合は、stracegitやlinuxなどのユーザースペースツールを使用して問題のデーモンを追跡し、ktraceシステムコールで設定ファイルが何であるかを判断できます。構成ファイルの読み取りを見つける場所を特定するには、合理的に構成されたシステムのトレース出力を比較する必要があります。

おすすめ記事