我有一个直接调用 shell 脚本的 systemd 服务文件。我的期望是文件中的stdout和stderr会被journal+console捕获,但它只出现在syslog中。我应该在我的服务文件或脚本文件中进行哪些更改以使其按预期运行?
服务文件如下所示:
[Unit]
Description=Test
After=network-online.target
Wants=network-online.target
[Service]
Type=simple
Restart=always
RestartSec=5min
TimeoutSec=5min
GuessMainPID=no
ExecStart=/tmp/script start systemd
ExecStop=/tmp/script stop systemd
SuccessExitStatus=143
User=test
Group=test
LimitAS=infinity
LimitRSS=infinity
LimitNPROC=4096
LimitNOFILE=65536
StandardOutput=journal+console
[Install]
WantedBy=multi-user.target graphical.target
该脚本实际上调用了一个 jar,但为了简化,让我们考虑一个更简单的版本:
#!/bin/sh
echo "ERROR: Java not found"
exit 1
使用 systemd-cat 和 logger 我能够将 echo 语句定向到 systlog 和 journald,但日志仍然没有显示在控制台上。
将stdout和stderr定向到journal+console的正确方法是什么?