小编Pau*_* K.的帖子

systemd 在启动服务时忽略返回码

我在为一个简单的守护进程编写单元文件时遇到了这个问题。当守护进程在启动时返回 '1' 时,systemd 只是忽略它,看起来守护进程已经成功启动,而实际上它已经死了。

例如,我有非常简单的 shell 脚本:

#!/bin/bash
exit 1
Run Code Online (Sandbox Code Playgroud)

所以单元文件看起来像这样:

[Unit]
Description=test service
After=syslog.target

[Service]
User=testuser
Group=testuser
ExecStart=/usr/local/bin/return1

[Install]
WantedBy=multi-user.target
Run Code Online (Sandbox Code Playgroud)

尝试开始,似乎没问题:

# service testservice start
# echo $?
0
Run Code Online (Sandbox Code Playgroud)

但实际上它已经死了:

# service testservice status
? testservice.service - test service
   Loaded: loaded (/etc/systemd/system/testservice.service; enabled)
   Active: failed (Result: exit-code) since Fri 2016-01-22 14:51:45 MSK; 1min 13s ago
  Process: 16416 ExecStart=/usr/local/bin/return1 (code=exited, status=1/FAILURE)
 Main PID: 16416 (code=exited, status=1/FAILURE)

Jan 22 14:51:45 servername systemd[1]: Started test service.
Jan 22 14:51:45 servername systemd[1]: testservice.service: …
Run Code Online (Sandbox Code Playgroud)

daemon systemd

8
推荐指数
1
解决办法
1万
查看次数

标签 统计

daemon ×1

systemd ×1