我在Beaglebone Black上运行了几个python脚本,两者都是在initd上由systemd启动的。昨天我注意到我的eMMC闪存完全已满,原因是我有1.8 GB的日志文件。似乎这些脚本的标准输出(它们为调试目的生成了大量数据)被记录到/ var / log / syslog和/var/log/daemon.log中。此外,/ var / log / messages有大量关于“速率限制”的条目。
现在,我假设我可以通过在这些脚本上禁用标准输出来解决此问题。但是,我宁愿保留该功能,并以某种方式告诉systemd不要记录该数据。但是,我一直无法找到相关信息。
以下是我当前.service文件的示例:
[Unit]
Description=Description of my process
After=network.target
[Service]
Type=simple
ExecStart=/opt/myprocess
[Install]
WantedBy=multi-user.target
我应该注意到我最初将syslog.target作为“After”目标,只是因为我跟随的例子有它。但我已经删除它,它似乎没有解决问题。
非常感谢您对此问题的任何帮助或见解。
编辑:我可能在这里找到了答案:
http://www.kibinlabs.com/systemd-logging-tricks/
添加StandardOutput = null并查看是否修复了它。看起来很有希望。
编辑2:确实如此。
答案 0 :(得分:2)
SystemD不会自行记录/var/log
中的文件。
如果日志消息显示在/var/log
中,这表明您的系统正在运行“syslog”守护程序,它正在接收日志消息(a)通过读取systemd日志,或(b)通过应用程序直接使用syslog。
简单地禁用syslog守护程序会阻止文件写入/var/log
。消息仍将写入系统日志,但您可以使用相当灵活的控件来限制这些文件使用的空间。有关详细信息,请参阅the journald docs。