a saída do programa é diferente no console e no terminal virtual
quando eu executo o comando foono console (isto é tty1), a saída é enviada ao console.
daemon foo started successfully
Quando eu executo o mesmo comando no terminal virtual ( terminator), não vejo saída no terminal, mas a saída é enviada para syslog.
Por que isso acontece e como posso controlar para onde a saída é enviada?
Eu tenho um script de inicialização do init que executa o comando fooe a saída é enviada para tty1. Eu gostaria de enviar a saída para o syslog (como se eu tivesse iniciado o script de inicialização no terminal virtual, em vez de no console)
Respostas
Como você pode ler na página de manual do Debian para daemon , depende muito de como você implementou seu daemon em qual sistema init.
- O caminho SysV (stdin / out / err conectado a / dev / null)
- A maneira " New-style ": (stdout / stderr direcionado para systemd-journald.service)
... 10. Em vez de usar a chamada syslog () para registrar diretamente no serviço syslog do sistema, um daemon de novo estilo pode escolher simplesmente registrar o erro padrão via fprintf (), que é então encaminhado para syslog pelo sistema init ...
Neste último caso, o comportamento que você observa em seu xterm é o modo normal.
O que o daemon produz via fprintf (stdout / stderr) fica então sob o controle do syslog.
Portanto, dependendo da configuração do seu syslog (como você o encontra em seu arquivo syslog.conf) e dependendo do nível de log, as saídas do seu daemon serão ignoradas / anexadas a algum arquivo específico / ecoado no console do sistema (seu tty1), e nunca xterm.
Este é um comportamento de aplicativo, não em todo o sistema. O rsyslog só será chamado quando um aplicativo o fizer, por meio de um serviço de registro ou semelhante. A saída padrão e o fluxo de erro, a menos que redirecionado, aparecem na tela.