Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sockets/2.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
Service 当启动/停止失败时,systemctl是否应显示输出?_Service_Systemd_Systemctl - Fatal编程技术网

Service 当启动/停止失败时,systemctl是否应显示输出?

Service 当启动/停止失败时,systemctl是否应显示输出?,service,systemd,systemctl,Service,Systemd,Systemctl,我已经用谷歌搜索了我能想到的这个问题的每一个变体,但我只是得到了关于失败服务的问题,而不是关于systemctl如何对待它们的问题。我有一个作为init.d脚本运行的服务。我们现在用的是systemctl,很好。我创建了一个服务文件,它是systemd sysv generator自动生成的文件的一个稍加修改的版本。对于ExecStart和ExecStop,它调用一个bash脚本,如果启动/停止成功,则返回0;如果启动/停止失败,则返回非零 我知道如果“systemctl启动/停止”成功,则不会

我已经用谷歌搜索了我能想到的这个问题的每一个变体,但我只是得到了关于失败服务的问题,而不是关于systemctl如何对待它们的问题。我有一个作为init.d脚本运行的服务。我们现在用的是systemctl,很好。我创建了一个服务文件,它是systemd sysv generator自动生成的文件的一个稍加修改的版本。对于ExecStart和ExecStop,它调用一个bash脚本,如果启动/停止成功,则返回0;如果启动/停止失败,则返回非零

我知道如果“systemctl启动/停止”成功,则不会有任何输出。但是如果两个调用都失败了,我也不会得到任何输出。systemctl start/stop命令的返回代码始终为0,即使源脚本的返回代码不是。很明显,它确实失败了,因为当我运行status命令时,它显示为failed

这是预期的行为吗?除非运行单独的status命令,否则它是否应该给出某些失败的指示?如果它不应该这样做,我怎么能让它表明发生了故障

服务文件如下

[Unit]
SourcePath=/my/service/script.sh

[Service]
Type=forking
Restart=no
TimeoutSec=5min
IgnoreSIGPIPE=no
KillMode=process
GuessMainPID=no
RemainAfterExit=yes
ExecStart=/my/service/script.sh start
ExecStop=/my/service/script.sh stop

CentOS 7号,这里很好。也许再检查一下script.sh是否真的返回了非零

$pwd
/etc/systemd/system
$cat me.service
[Unit]

[Service]
Type=forking
Restart=no
TimeoutSec=5min
IgnoreSIGPIPE=no
KillMode=process
GuessMainPID=no
RemainAfterExit=yes
ExecStart=/etc/systemd/system/die.sh
$cat die.sh
#!/bin/bash
echo "dying"
exit 1
$sudo systemctl start me
Job for me.service failed because the control process exited with error code. See "systemctl status me.service" and "journalctl -xe" for details.
$sudo systemctl status me.service
● me.service
   Loaded: loaded (/etc/systemd/system/me.service; static; vendor preset: disabled)
   Active: failed (Result: exit-code) since Thu 2019-09-12 17:55:02 GMT; 8s ago
  Process: 19758 ExecStart=/etc/systemd/system/die.sh (code=exited, status=1/FAILURE)

Sep 12 17:55:02 dpsdev-wkr01 systemd[1]: Starting me.service...
Sep 12 17:55:02 dpsdev-wkr01 die.sh[19758]: dying
Sep 12 17:55:02 dpsdev-wkr01 systemd[1]: me.service: control process exited, code=exited status=1
Sep 12 17:55:02 dpsdev-wkr01 systemd[1]: Failed to start me.service.
Sep 12 17:55:02 dpsdev-wkr01 systemd[1]: Unit me.service entered failed state.
Sep 12 17:55:02 dpsdev-wkr01 systemd[1]: me.service failed.