Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/silverlight/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
systemd未从shell脚本捕获echo语句_Systemd_Systemd Journald - Fatal编程技术网

systemd未从shell脚本捕获echo语句

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

我有一个systemd服务文件,它直接调用shell脚本。我的期望是,journal+console将捕获文件中的stdout和stderr,但它只出现在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+控制台的正确方法是什么?

将ExecStartPost和execstoptPost设置为“sleep 1”后,journald能够捕获日志。不确定是否有更好的方法。我观察到的另一件事是,“systemctl status…”中的日志在进程结束后消失。有没有办法不让这种情况发生?重新启动时不会触发ExecStopPost。有很多惊喜。