Isso dependerá do software e de como ele foi configurado; rsyslogd
pelo menos a versão presente no Centos 7 fecha o arquivo de configuração depois de lê-lo, então uma ferramenta como lsof
não revelará esse arquivo uma vez que o daemon esteja ativo e em execução:
% 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
...
O nome do arquivo, no entanto, aparece na tabela de processos, que pode então ser pesquisada em /etc
, já que normalmente essa configuração está oculta:
% < /proc/'pidof rsyslogd'/cmdline tr '% sudo sysdig -p '%fd.name' 'proc.name = rsyslogd' | tee files-used
...
' ' ' ; 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"
Em um sistema completamente desconhecido, você pode precisar usar algo como SystemTap ou sysdig
- em outras palavras, um recurso de rastreamento de kernel - e relatar quais arquivos o daemon usa:
% 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
...
Em seguida, reinicie o daemon.
Na falta de um recurso de rastreio de kernel, um pode rastrear o daemon em questão com uma ferramenta userland como strace
ou ktrace
e, a partir das chamadas do sistema, descobrir qual é o arquivo de configuração. Talvez seja necessário comparar a saída de rastreio de um sistema configurado de maneira sensata para descobrir onde procurar a leitura do arquivo de configuração.