systemdデバイスが1つではなく複数のインスタンスを起動しました。

systemdデバイスが1つではなく複数のインスタンスを起動しました。

失敗した場合は、bashスクリプトを再起動する必要があるsystemdデバイスを設定しようとしています。

[Unit]
Description=Bash script Service

[Service]
Type=simple
Restart=always
RestartSec=1
ExecStart=/bin/bash -c '/simple/bash/script.sh'

しかし、systemctl status the_bash_script.service複数のインスタンスで始まるようです。

● the_bash_script.service - Bash script Service
   Loaded: loaded (/etc/systemd/system/the_bash_script.service; static; vendor preset: enabled)
   Active: active (running) since Thu 2016-11-03 18:16:53 CET; 3 years 6 months ago
 Main PID: 1766 (bash)
   CGroup: /system.slice/the_bash_script.service
           ├─1766 /bin/bash -c '/bin/bash -c '/simple/bash/script.sh'
           └─1778 /bin/bash -c '/bin/bash -c '/simple/bash/script.sh'

なぜ2つのpid 1766と1778があるのですか?一度に1つのインスタンスしか許可できませんか?

これがthe_bash_script.serviceの内容であれば、同時に実行される複数のインスタンスは必要ありません。

#!/bin/bash


while [ true ]; do
    cat /dev/virtual  | nc -v 192.168.1.1 5005    
    sleep 5s
done

exit

ベストアンサー1

あなたのExecStart=/bin/bash -c '/simple/bash/script.sh'include /bin/bash -c コマンドはbashシェルを起動し、スクリプトが/simple/bash/script.sh実行を開始すると/simple/bash/script.sh他のbashシェルを起動すると思います。

サービスファイルで以下を試してください。

ExecStart=/simple/bash/script.sh

また、次の行を追加してみてください。

ExecReload=/bin/kill -HUP $MAINPID
KillMode=process
Restart=on-failure

おすすめ記事