我有一个 systemd (v249) 服务 ( my-script.service
),它由另一个 systemd 计时器 ( ) 每分钟运行一次my-script.timer
。一切运行正常。但 systemd 记录(到它journald
并随后到/var/log/syslog
)以下两行,表明它启动了它然后又停止了它:
Aug 11 11:46:37 hostname1 systemd[1]: Started my-scripts.
Aug 11 11:46:37 hostname1 systemd[1]: my-scripts.service: Deactivated successfully.
有没有办法禁用这个.service
/ 的日志消息.timer
?几乎所有时间都没有输出要记录(脚本启动,检查是否有任何操作,然后在无操作的常见情况下退出)。这些日志消息毫无用处,并且降低了我的日志的信噪比。
我对 systemd 还比较陌生,这可能是一个简单的问题。
答案1
日志消息的重要性可能在于,正如你可能发现的那样journald 的文档
emerg(最低日志级别,仅最高优先级消息)、alert、crit、err、warning、notice、info、debug(最高日志级别,也是最低优先级消息)
已编辑 - 将默认临界性从较低的值更改为“默认临界性从较高的值”
您可以通过编辑单元文件来配置服务的默认关键性以及您希望在日志中看到的最大关键性值。因此,如果您配置默认关键性价值 和更高值大于最大关键性(最高优先级的值为 0,调试优先级的值为 7),服务启动和结束的消息不会显示在日志中
编辑 - 更改了用数字表示的级别
[Service]
...
LogLevelMax=1
SyslogLevel=2
您应该在服务中生成优先级高于 LogLevelMax(优先级值较低)的日志(请参阅Systemd 开发者指南 III)
已编辑-添加示例
我创建了一个新的简单服务 /root/Bin/test.bash,它生成级别 1(警报)的日志
#! /bin/bash
echo "<1>Done"
我已经创建了一个新的单元(/etc/systemd/system/jmr.service):
[Unit]
Description=JMR test
[Service]
ExecStart=/root/Bin/test.bash
LogLevelMax=1
SyslogLevel=2
[Install]
WantedBy=multi-user.target
之后,我重新配置了 systemd 并重启了服务两次
# systemctl daemon-reload
# systemctl start jmr.service
# systemctl start jmr.service
我可以看到日志仅显示“完成”消息(两个日志之间没有任何内容)
# journalctl -u jmr.service | tail -n 2
ago 16 19:09:10 enreda test.bash[415488]: Done
ago 16 19:11:42 enreda test.bash[415620]: Done