失敗した場合は、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