当可执行文件作为 systemd 服务运行时,stdout 会发生什么情况

当可执行文件作为 systemd 服务运行时,stdout 会发生什么情况

我正在将我的应用程序设置为作为 systemd 服务运行以进行测试,即该应用程序将发生变化并且它当前正在生成输出到 stdout。

这是个问题吗?如果需要,我可以实时查看输出吗?我不确定是否要记录输出,因为如果运行很长时间可能会浪费磁盘空间。但如果我确实想记录进程的输出,我该如何在进程运行时或在 systemctl stop/restart 之间执行此操作?

感谢 Ubuntu 20.04 LTS

答案1

在弄清楚要搜索什么之后,我找到了我所寻找的内容:

Systemd 提供了几种方法来查看或收集正在执行的服务单元的输出:

  • journalctl 工具,无需事先准备。它以多种形式一次显示一页输出,直到取消。可以针对特定服务单元过滤输出。
  • 必须安装 rsyslog 工具,它依赖于对服务单元文件和 rsyslog.d 配置文件的更改。rsyslog 管理服务的标准输出和标准错误。对 rsyslog 特定服务的任何更改都需要重新加载服务单元。
  • systemd 的较新版本(240 或更新版本)提供了第三种方法来重定向我们服务的 stdout 和 stderr,而无需调用 syslog 守护进程的服务

这进一步解释并提供了示例 https://www.baeldung.com/linux/redirect-systemd-output-to-file

相关内容