статус systemctl показывает неактивные мертвые

Я пытаюсь написать свой собственный (простой) systemd-сервис, который делает что-то простое.(Например, запись чисел от 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

Это мой скрипт.

#!/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

пытался выяснить, что пошло не так за последние 2 дня. Кто-нибудь может мне помочь? здесь?

С уважением, nandanator

2 ответов


  • установлен Type=Forking, но ваш сервис не работает. Попробуй!--1-->
  • у вас есть "&" ваш ExecStart строка, которая не нужна.
  • сервис disabled, что означает, что это не было enabled для начала при загрузке. Вы должны бежать systemctl enable hello чтобы установить его для запуска при загрузке.

вы можете проверить man systemd.directives, чтобы найти индекс всех указаний, которые вы можете использовать в своем unit файлы.


несколько моментов:

  1. если вы используете Type=forking, рекомендуется указать PidFile.

  2. в вашем случае, Type=simple, и ExecStart без & будет работать.

  3. использовать systemctl start service-name для запуска службы

  4. затем использовать systemctl status service-name чтобы проверить его состояние. статус будет неактивным / мертвым, если служба не запущена.