systemctl status显示非活动死亡

时间:2016-10-05 10:45:37

标签: linux sh systemd systemctl

我正在尝试编写自己的(简单的)systemd服务,它可以做一些简单的事情。(就像使用shell脚本将数字1到10写入文件一样)。 我的服务文件如下所示。

[Unit]
Description=NandaGopal
Documentation=https://google.com
After=multi-user.target

[Service]
Type=forking  
RemainAfterExit=yes
ExecStart=/usr/bin/hello.sh &

[Install]
RequiredBy = multi-user.target

这是我的shell脚本。

#!/usr/bin/env bash

source /etc/profile
a=0
while [ $a -lt 10 ]
do
   echo $a >> /var/log//t.txt
        a=`expr $a + 1`
done

由于某种原因,服务没有出现,systemctl显示以下输出。

root@TARGET:~ >systemctl status -l hello
* hello.service - NandaGopal
   Loaded: loaded (/usr/lib/systemd/system/hello.service; disabled; vendor     preset: enabled)
   Active: inactive (dead)
    Docs: https://google.com

试图找出过去两天出了什么问题。 有人可以帮我吗?

此致 nandanator

2 个答案:

答案 0 :(得分:14)

  • 您已设置Type=Forking,但您的服务无效。试试 Type=oneshot
  • 你有一个"&"你的ExecStart行,这是没有必要的。
  • 服务为disabled,这意味着启动时不是enabled。您应该运行systemctl enable hello将其设置为在启动时启动。

您可以查看man systemd.directives以查找可在unit文件中使用的所有指令的索引。

答案 1 :(得分:4)

几点:

  1. 如果您使用Type=forking,建议您指定PidFile。

  2. 在您的情况下,Type=simple和没有&的ExecStart将有效。

  3. 使用systemctl start service-name启动服务

  4. 然后使用systemctl status service-name检查其状态。 如果没有开始服务,状态将处于非活动状态/死亡状态。