Como escrevo a saída para a tela do serviço systemd durante a inicialização?

5

Eu tenho um serviço systemd personalizado que é executado durante a primeira inicialização.

Se o usuário não tiver o bootsplash, eu gostaria de escrever para o console e dar algumas informações sobre o que está acontecendo. Existe uma maneira de fazer isso do meu serviço?

Aqui está o meu serviço systemd:

[Unit]
Description=Prepare operator after installation
[email protected] [email protected] [email protected] [email protected] [email protected] [email protected]
Wants=network-online.target
After=network.target network-online.target
OnFailure=emergency.target
OnFailureJobMode=replace-irreversibly

[Service]
Type=oneshot
ExecStart=/usr/bin/provision-operator

[Install]
WantedBy=multi-user.target
    
por Christoffer Reijer 17.03.2017 / 15:40

3 respostas

4

Em man systemd.directives , você pode pesquisar por "saída" e descobrir que StandardOutput= está documentado em man systemd.exec . Lá você pode encontrar opções incluindo journal+console para enviar a saída para o diário do systemd e o console do sistema. Você também pode tentar kmsg+console . De acordo com o documento kmsg "conecta saída padrão com o buffer de log do kernel que é acessível via dmesg (1),"

    
por 17.03.2017 / 18:22
0

Eu fiz assim. Eu não tenho um prompt de login em tty1. Por isso não mostra MOTD fora da caixa.

[Service]
Type=oneshot
Restart=no
ExecStartPre=/bin/sleep 10
[email protected] 
ExecStart=
ExecStart=-/bin/cat /etc/motd
StandardOutput=tty
TTYPath=/dev/tty1

Onde oneshot diz: exec apenas uma vez. Restart=no de oneshot . Não tenho certeza por que existem dois ExecStart e porque "-", isso foi copiar e colar. Eu adicionei After= / ExecStartPre= porque a mensagem não apareceu, provavelmente a tela foi apagada por outra pessoa. Por isso, deve ser após o "prompt de login" de destino.

Aviso: use essa resposta como uma coleção de ideias. Eu não queria que eles se perdessem. Faça sua própria pesquisa se tiver alguma dúvida e sinta-se à vontade para contribuir com suas descobertas.

Isso foi feito no trecho do Debian sem X.

    
por 16.08.2018 / 16:26
0

Se o seu serviço for executado como root, você poderá fazer algo como

printf "\n\nThis is my message\n\n" >/dev/console
    
por 16.08.2018 / 17:06