Quando escrevo meu arquivo de unidade, quero que todas as saídas de Exec*
-options ( ExecStartPre=, ExecStartPost=, ExecStart=, and ExecStopPost=
) sejam enviadas para o diário. Mas, aparentemente, a saída é armazenada em buffer de alguma forma, de modo algum é certo o que será escrito para o periódico.
No meu arquivo de unidade ( ulftest.service
), tenho a seguinte seção:
...
ExecStartPre=/bin/echo 'Hello'
ExecStartPre=/usr/bin/who
ExecStart=/storage/_test/venv/bin/python /storage/_test/ulftestservice.py
...
Então, eu esperaria que houvesse uma lista de usuários logados (4 de mim) e um Olá aparecendo no diário, além das linhas normais Iniciando, Iniciado, Parando e Parado.
Isso NÃO é o caso. É totalmente (para mim, pelo menos) aleatório se eles aparecerem ou não.
Eu escrevi um pequeno testloop que reinicia o serviço a cada 2 segundos:
$ for x in 'seq 100'; do echo $x; sudo systemctl restart ulftest.service ; sleep 2; done
Depois de executar a coisa eu recebo isso no diário:
...
2017-05-10T09:40:36+0000 ulf44 systemd[1]: Started UlfTest, Administrative interface.
2017-05-10T09:40:38+0000 ulf44 systemd[1]: Stopping UlfTest, Administrative interface...
2017-05-10T09:40:38+0000 ulf44 systemd[1]: Stopped UlfTest, Administrative interface.
2017-05-10T09:40:38+0000 ulf44 systemd[1]: Starting UlfTest, Administrative interface...
2017-05-10T09:40:38+0000 ulf44 who[27344]: ulf pts/0 2017-05-04 09:07 (192.168.0.180)
2017-05-10T09:40:38+0000 ulf44 who[27344]: ulf pts/1 2017-05-04 12:36 (192.168.0.180)
2017-05-10T09:40:38+0000 ulf44 who[27344]: ulf pts/2 2017-05-05 06:48 (192.168.0.180)
2017-05-10T09:40:38+0000 ulf44 systemd[1]: Started UlfTest, Administrative interface.
2017-05-10T09:40:40+0000 ulf44 systemd[1]: Stopping UlfTest, Administrative interface...
2017-05-10T09:40:40+0000 ulf44 systemd[1]: Stopped UlfTest, Administrative interface.
2017-05-10T09:40:40+0000 ulf44 systemd[1]: Starting UlfTest, Administrative interface...
2017-05-10T09:40:40+0000 ulf44 systemd[1]: Started UlfTest, Administrative interface.
...
2017-05-10T09:42:00+0000 ulf44 systemd[1]: Stopping UlfTest, Administrative interface...
2017-05-10T09:42:00+0000 ulf44 systemd[1]: Stopped UlfTest, Administrative interface.
2017-05-10T09:42:00+0000 ulf44 systemd[1]: Starting UlfTest, Administrative interface...
2017-05-10T09:42:00+0000 ulf44 who[28161]: ulf pts/0 2017-05-04 09:07 (192.168.0.180)
2017-05-10T09:42:00+0000 ulf44 who[28161]: ulf pts/1 2017-05-04 12:36 (192.168.0.180)
2017-05-10T09:42:00+0000 ulf44 who[28161]: ulf pts/2 2017-05-05 06:48 (192.168.0.180)
2017-05-10T09:42:00+0000 ulf44 who[28161]: ulf pts/3 2017-05-05 11:44 (192.168.0.180)
2017-05-10T09:42:00+0000 ulf44 systemd[1]: Started UlfTest, Administrative interface.
2017-05-10T09:42:02+0000 ulf44 systemd[1]: Stopping UlfTest, Administrative interface...
2017-05-10T09:42:02+0000 ulf44 systemd[1]: Stopped UlfTest, Administrative interface.
2017-05-10T09:42:02+0000 ulf44 systemd[1]: Starting UlfTest, Administrative interface...
2017-05-10T09:42:02+0000 ulf44 systemd[1]: Started UlfTest, Administrative interface.
...
Observe que, para as 100 reinicializações, não obtenho nenhuma saída na maioria das vezes não recebo Hello , mas recebo 2 rodadas de saída de who
, mas com apenas uma delas completa. / p>
Estou em um novo Ubuntu 16.04. Também fiz uma pergunta semelhante e relacionada em stackoverflow .
Isso é um recurso, um bug ou apenas algo que eu estou abordando de forma totalmente errada? Por favor me avise!