A daemon process doesn't have stdout at all.
Não é verdade. Se os daemons de alguém estão sendo gerenciados por uma das daemontools da família de conjuntos de ferramentas ( link ), então o daemon terá herdado um descritor de arquivo de saída padrão aberto, para um pipe que o conecta a um serviço de log. Se alguém estiver usando systemd, então (na configuração padrão) o daemon terá herdado um descritor de arquivo de saída padrão aberto, para um soquete que o conecta ao serviço de diário do systemd.
Em qualquer caso, você está combinando o script init.d
, que gerencia o daemon, com o próprio daemon. Com o System V rc
e com o systemd, o script init.d
simplesmente faz com que o processo de início e parada seja iniciado corretamente. (No caso do System V rc
, ele faz isso com helpers como start-stop-daemon
. No caso do systemd, ele usa systemctl
para enviar comandos sobre o D-Bus RPC para processar o # 1.) Não é o daemon processo em si.
A saída padrão do processo do daemon não é necessariamente uma relação com a saída padrão do script init.d
. E é a saída padrão do último que você está endereçando com log_daemon_msg
. Esta função shell, e seus parentes, imprimem mensagens amistosas do script de gerenciamento do daemon , mostrando o que o script de gerenciamento está fazendo ao tentar executar comandos de controle do daemon. Eles não estão sendo usados no próprio daemon .
log_daemon_msg
se tornam irrelevantes, pois qualquer script de gerenciamento que origina /lib/lsb/init-functions
acaba desviando todos os comandos de controle para systemctl
.
How can I redirect the init logs to a system log file so that I can debug boot time issues?
Você tem uma tarefa. Você decidiu que uma subtarefa dessa tarefa é de alguma forma endereçável com log_daemon_msg
e aqui está perguntando como obter log_daemon_msg
para fazer algo que não foi projetado para fazer. Concentre-se na sua pergunta real .
O Ubuntu 14.04 usa upstart. Que tem um trabalho de arranque /etc/init/rc.conf
que fornece compatibilidade com versões anteriores com o System V rc
executando realmente o Sistema V rc
sempre que ocorre um evento de nível de execução. Esse trabalho é listado no Cookbook iniciante e, como você pode ver, usa a sub-rotina console output
.
Como você pode ver no Cookbook , com upstart - também - daemons (por padrão) herdam um descritor de arquivo de saída padrão aberto que está conectado ao mecanismo de registro por job da upstart. Mais uma vez, a noção de que dæmons "não tem saída padrão" está errada. O trabalho /etc/init/rc.conf
usa a opção (não padrão) de conectar a saída padrão ao console. Isso, claro, também redireciona a saída dos vários scripts de gerenciamento de daemon que o System V rc
gera, por sua vez.
Portanto, se você quiser registrar a saída de seu trabalho /etc/init/rc.conf
e todos os scripts de gerenciamento do System V que ele gera, em outro lugar, modifique essa especificação de trabalho.
Se você deseja depurar problemas de inicialização, então use os mecanismos descritos em o Cookbook iniciante (e também no AskUbuntu Stack Exchange em várias respostas) para depuração de tempo de inicialização.