27

シンプルなことを行う独自の(シンプルな)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 日間、何が悪かったのかを把握しようとしています。

4

2 に答える 2

37
  • を設定Type=Forkingしましたが、サービスが機能しません。試す Type=oneshot
  • 「&」ExecStart行がありますが、これは必要ありません。
  • サービスは です。これは、起動時に開始されdisabledなかったことを意味します。起動時に開始するように設定するには、enabled実行する必要があります。systemctl enable hello

ファイルで使用できるすべてのディレクティブのインデックスを確認man systemd.directivesして見つけることができunitます。

于 2016-10-05T13:09:42.780 に答える