当我编写单元文件时,我希望Exec*
-options ( ExecStartPre=, ExecStartPost=, ExecStart=, and ExecStopPost=
) 的所有输出都发送到日志。但显然输出以某种方式缓冲,因此无法确定将写入日志的内容。
在我的单元文件 ( ulftest.service
) 中,我有以下部分:
...
ExecStartPre=/bin/echo 'Hello'
ExecStartPre=/usr/bin/who
ExecStart=/storage/_test/venv/bin/python /storage/_test/ulftestservice.py
...
Run Code Online (Sandbox Code Playgroud)
因此,除了正常的“开始”、“已开始”、“停止”和“已停止”行之外,我希望日志中会显示一个已登录用户的列表(我有 4 个用户)和一个“ Hello” 。
不是这种情况。如果它们出现或不出现,这完全是随机的(至少对我来说)。
我编写了一个小测试循环,每 2 秒重新启动一次服务:
$ for x in `seq 100`; do echo $x; sudo systemctl restart ulftest.service ; sleep 2; done
Run Code Online (Sandbox Code Playgroud)
运行之后我在日志中得到了这个:
...
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... …
Run Code Online (Sandbox Code Playgroud)