Systemd startet Skript ständig neu

samedi 22 août 2015

Ich möchte das ein Skript beim Booten gestartet wird und ständig läuft, also neu gestartet wird wenn es terminiert und dazu habe ich dieses Beispiel als Anfang gemacht:

Code:

#!/bin/bash
# file /root/bin/foo.sh

LOGFILE="/root/tmp/foo0.txt"

PIDFILE=/run/foo.pid

echo $$ > $PIDFILE
#echo $BASHPID > $PIDFILE

echo number of arguments: $# >> $LOGFILE

for var in "$@"
do
    echo "$var" >> $LOGFILE
done

while true
do
  date >> $LOGFILE
  sleep 12
done

exit 0


Code:

# file /etc/systemd/system/foo.service, use "systemd-analyze verify foo.service" to verify, enable via "systemctl enable foo.service"
[Unit]
Description=Logger Service
# start after syslog
After=syslog.target

[Service]
ExecStart=/bin/bash /root/bin/foo.sh
Type=forking
# at termination: Send sigterm to the process and childs
KillMode=mixed
# respawn
Restart=always
PIDFile=/run/foo.pid
User=root
Group=root
RemainAfterExit=yes
# Give a reasonable amount of time for the server to start up/shut down
TimeoutSec=2

[Install]
# start on runlevel [2345]
WantedBy=multi-user.target


Aber das funktioniert nicht ganz:

Code:

> systemctl start foo.service
Job for foo.service failed because a timeout was exceeded. See "systemctl status foo.service" and "journalctl -xe" for details.


Und das Skript wird alle zwei Sekunden terminiert und neu gestartet, wie die Log-Datei zeigt:

Code:

number of arguments: 0
Mi 19. Aug 20:30:29 UTC 2015
number of arguments: 0
Mi 19. Aug 20:30:32 UTC 2015
number of arguments: 0
Mi 19. Aug 20:30:34 UTC 2015
number of arguments: 0
Mi 19. Aug 20:30:37 UTC 2015

Wieso killt systemd das Skript? :confused:

Von allein terminiert das Skript nicht; es bleibt in der while-Schleife und schreibt alle 12 Sekunden die Zeit in die Logdatei.


0 commentaires:

Enregistrer un commentaire

 

Lorem

Ipsum

Dolor