systemd未从shell脚本捕获echo语句
我有一个systemd服务文件,它直接调用shell脚本。我的期望是,journal+console将捕获文件中的stdout和stderr,但它只出现在syslog中。我应该在我的服务文件或脚本文件中更改什么,以使其按预期运行 服务文件如下所示:systemd未从shell脚本捕获echo语句,systemd,systemd-journald,Systemd,Systemd Journald,我有一个systemd服务文件,它直接调用shell脚本。我的期望是,journal+console将捕获文件中的stdout和stderr,但它只出现在syslog中。我应该在我的服务文件或脚本文件中更改什么,以使其按预期运行 服务文件如下所示: [Unit] Description=Test After=network-online.target Wants=network-online.target [Service] Type=simple Restart=always Resta
[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+控制台的正确方法是什么?将ExecStartPost和execstoptPost设置为“sleep 1”后,journald能够捕获日志。不确定是否有更好的方法。我观察到的另一件事是,“systemctl status…”中的日志在进程结束后消失。有没有办法不让这种情况发生?重新启动时不会触发ExecStopPost。有很多惊喜。