使用 systemd 启动的进程正在记录到 /var/log/syslog 和 /var/log/daemon.log
Processes started with systemd are logging to /var/log/syslog and /var/log/daemon.log
我在 Beaglebone Black 上 运行 编写了几个 python 脚本,它们都是在 systemd 初始化时启动的。我昨天注意到我的 eMMC 闪存完全满了,原因是我有 1.8 GB 的日志文件。这些脚本的标准输出(它们生成大量用于调试目的的数据)似乎被记录到 /var/log/syslog 和 /var/log/daemon.log。此外,/var/log/messages 有大量关于 "rate-limiting".
的条目
现在,我想我可以通过禁用这些脚本的标准输出来解决这个问题。但是,我更愿意保留该功能并以某种方式告诉 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:确实如此。
SystemD 本身不会在 /var/log
中记录文件。
如果日志消息显示在 /var/log
中,这表明您的系统是 运行 一个 "syslog" 守护进程,它正在接收日志消息 (a) 通过读取 systemd日志,或 (b) 由应用程序直接使用系统日志。
简单地禁用您的 syslog 守护程序将阻止文件写入 /var/log
。消息仍将写入系统日志,但您可以使用相当灵活的控件来限制这些文件使用的 space。有关详细信息,请参阅 the journald docs。
我在 Beaglebone Black 上 运行 编写了几个 python 脚本,它们都是在 systemd 初始化时启动的。我昨天注意到我的 eMMC 闪存完全满了,原因是我有 1.8 GB 的日志文件。这些脚本的标准输出(它们生成大量用于调试目的的数据)似乎被记录到 /var/log/syslog 和 /var/log/daemon.log。此外,/var/log/messages 有大量关于 "rate-limiting".
的条目现在,我想我可以通过禁用这些脚本的标准输出来解决这个问题。但是,我更愿意保留该功能并以某种方式告诉 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:确实如此。
SystemD 本身不会在 /var/log
中记录文件。
如果日志消息显示在 /var/log
中,这表明您的系统是 运行 一个 "syslog" 守护进程,它正在接收日志消息 (a) 通过读取 systemd日志,或 (b) 由应用程序直接使用系统日志。
简单地禁用您的 syslog 守护程序将阻止文件写入 /var/log
。消息仍将写入系统日志,但您可以使用相当灵活的控件来限制这些文件使用的 space。有关详细信息,请参阅 the journald docs。