[gelöst] Systemd Service installieren

Vom einfachen Programm zum fertigen Debian-Paket, Fragen rund um Programmiersprachen, Scripting und Lizenzierung.
Antworten
Exxter
Beiträge: 385
Registriert: 10.01.2003 00:15:15
Lizenz eigener Beiträge: GNU General Public License

[gelöst] Systemd Service installieren

Beitrag von Exxter » 29.09.2020 08:38:23

Hallo,

ich möchte einen Systemd Service installieren für folgendes Tool: https://github.com/splitbrain/Watcher

Habe dazu die /etc/systemd/system/watcher.service angelegt mit folgendem Inhalt:

Code: Alles auswählen

[Unit]
Description=Watcher
After=network.target

[Service]
Type=simple
Restart=always
ExecStart=/root/scripte/watcher/watcher.py start -c /root/scripte/watcher/watcher.ini

[Install]
WantedBy=multi-user.target
Wenn ich den Befehl so eingebe:

/root/scripte/watcher/watcher.py start -c /root/scripte/watcher/watcher.ini

startet und läuft der Dienst sauber durch. Aber wenn ich systemctl start watcher ; systemctl status watcher mache kommt:

Code: Alles auswählen

root@ycloud:/var/log$ systemctl status watcher
● watcher.service - Watcher
   Loaded: loaded (/etc/systemd/system/watcher.service; enabled; vendor preset: enabled)
   Active: failed (Result: exit-code) since Tue 2020-09-29 08:16:08 CEST; 11min ago
  Process: 23877 ExecStart=/root/scripte/watcher/watcher.py start -c /root/scripte/watcher/watcher.ini (code=exited, status=1/FAILURE)
 Main PID: 23877 (code=exited, status=1/FAILURE)

Sep 29 08:16:08 ycloud systemd[1]: watcher.service: Service RestartSec=100ms expired, scheduling restart.
Sep 29 08:16:08 ycloud systemd[1]: watcher.service: Scheduled restart job, restart counter is at 5.
Sep 29 08:16:08 ycloud systemd[1]: Stopped Watcher.
Sep 29 08:16:08 ycloud systemd[1]: watcher.service: Start request repeated too quickly.
Sep 29 08:16:08 ycloud systemd[1]: watcher.service: Failed with result 'exit-code'.
Sep 29 08:16:08 ycloud systemd[1]: Failed to start Watcher.
root@ycloud:/var/log$
Natürlich habe ich auch schon systemctl enable watcher gemacht. In der syslog steht:

Code: Alles auswählen

Sep 29 08:30:34 ycloud watcher.py[29148]: pidfile /var/run/watcher-script.pid already exists. Daemon already running?
Sep 29 08:30:34 ycloud systemd[1]: watcher.service: Main process exited, code=exited, status=1/FAILURE
Sep 29 08:30:34 ycloud systemd[1]: watcher.service: Failed with result 'exit-code'.
Sep 29 08:30:35 ycloud systemd[1]: watcher.service: Service RestartSec=100ms expired, scheduling restart.
Sep 29 08:30:35 ycloud systemd[1]: watcher.service: Scheduled restart job, restart counter is at 1.
Sep 29 08:30:35 ycloud systemd[1]: Stopped Watcher.
Sep 29 08:30:35 ycloud systemd[1]: Started Watcher.
Sep 29 08:30:35 ycloud watcher.py[29149]: pidfile /var/run/watcher-script.pid already exists. Daemon already running?
Sep 29 08:30:35 ycloud systemd[1]: watcher.service: Main process exited, code=exited, status=1/FAILURE
Sep 29 08:30:35 ycloud systemd[1]: watcher.service: Failed with result 'exit-code'.
Sep 29 08:30:36 ycloud systemd[1]: watcher.service: Service RestartSec=100ms expired, scheduling restart.
Sep 29 08:30:36 ycloud systemd[1]: watcher.service: Scheduled restart job, restart counter is at 2.
Sep 29 08:30:36 ycloud systemd[1]: Stopped Watcher.
Sep 29 08:30:36 ycloud systemd[1]: Started Watcher.
Sep 29 08:30:36 ycloud watcher.py[29150]: pidfile /var/run/watcher-script.pid already exists. Daemon already running?
Sep 29 08:30:36 ycloud systemd[1]: watcher.service: Main process exited, code=exited, status=1/FAILURE
Sep 29 08:30:36 ycloud systemd[1]: watcher.service: Failed with result 'exit-code'.
Sep 29 08:30:36 ycloud systemd[1]: watcher.service: Service RestartSec=100ms expired, scheduling restart.
Sep 29 08:30:36 ycloud systemd[1]: watcher.service: Scheduled restart job, restart counter is at 3.
Sep 29 08:30:36 ycloud systemd[1]: Stopped Watcher.
Sep 29 08:30:36 ycloud systemd[1]: Started Watcher.
Sep 29 08:30:36 ycloud watcher.py[29151]: pidfile /var/run/watcher-script.pid already exists. Daemon already running?
Sep 29 08:30:36 ycloud systemd[1]: watcher.service: Main process exited, code=exited, status=1/FAILURE
Sep 29 08:30:36 ycloud systemd[1]: watcher.service: Failed with result 'exit-code'.
Sep 29 08:30:36 ycloud systemd[1]: watcher.service: Service RestartSec=100ms expired, scheduling restart.
Sep 29 08:30:36 ycloud systemd[1]: watcher.service: Scheduled restart job, restart counter is at 4.
Sep 29 08:30:36 ycloud systemd[1]: Stopped Watcher.
Sep 29 08:30:36 ycloud systemd[1]: Started Watcher.
Sep 29 08:30:36 ycloud watcher.py[29152]: pidfile /var/run/watcher-script.pid already exists. Daemon already running?
Sep 29 08:30:36 ycloud systemd[1]: watcher.service: Main process exited, code=exited, status=1/FAILURE
Sep 29 08:30:36 ycloud systemd[1]: watcher.service: Failed with result 'exit-code'.
Sep 29 08:30:36 ycloud systemd[1]: watcher.service: Service RestartSec=100ms expired, scheduling restart.
Sep 29 08:30:36 ycloud systemd[1]: watcher.service: Scheduled restart job, restart counter is at 5.
Sep 29 08:30:36 ycloud systemd[1]: Stopped Watcher.
Sep 29 08:30:36 ycloud systemd[1]: watcher.service: Start request repeated too quickly.
Sep 29 08:30:36 ycloud systemd[1]: watcher.service: Failed with result 'exit-code'.
Sep 29 08:30:36 ycloud systemd[1]: Failed to start Watcher.
Aber auch wenn ich die /var/run/watcher-script.pid lösche und dann starte kommt die Meldung.

Ich habe das so schon mal unter Stretch eingerichtet, dort hat es so funktioniert. Seit der Neuinstallation mit Buster funktioniert es so nicht mehr.

Hat jemand eine Idee?

Edit: habe auch probiert, wie im Internet zu lesen ist, die Zeilen

[Install]
WantedBy=multi-user.target

zu entfernen. Danach systemctl daemon-reload, systemctl start watcher und systemctl status watcher. Fehler bleibt.
Zuletzt geändert von Exxter am 01.10.2020 08:39:36, insgesamt 1-mal geändert.

Colttt
Beiträge: 3012
Registriert: 16.10.2008 23:25:34
Wohnort: Brandenburg
Kontaktdaten:

Re: Systemd Service installieren

Beitrag von Colttt » 29.09.2020 09:10:02

mach mal unter [Service] noch folgendes dazu/ändere es entsprechend:

Code: Alles auswählen

Restart=on-failure
RestartSec=5s
btw: warum nutzt du dafür nicht Wiki-Artikel zum Thema iwatch?
Debian-Nutzer :D

ZABBIX Certified Specialist

Exxter
Beiträge: 385
Registriert: 10.01.2003 00:15:15
Lizenz eigener Beiträge: GNU General Public License

Re: Systemd Service installieren

Beitrag von Exxter » 29.09.2020 10:06:42

Colttt hat geschrieben: ↑ zum Beitrag ↑
29.09.2020 09:10:02
mach mal unter [Service] noch folgendes dazu/ändere es entsprechend:

Code: Alles auswählen

Restart=on-failure
RestartSec=5s
Wars leider nicht:

Code: Alles auswählen

Sep 29 10:03:30 ycloud systemd[1]: Stopped Watcher.
Sep 29 10:03:30 ycloud systemd[1]: Started Watcher.
Sep 29 10:03:30 ycloud watcher.py[63788]: pidfile /var/run/watcher-script.pid already exists. Daemon already running?
Sep 29 10:03:30 ycloud systemd[1]: watcher.service: Main process exited, code=exited, status=1/FAILURE
Sep 29 10:03:30 ycloud systemd[1]: watcher.service: Failed with result 'exit-code'.
Sep 29 10:03:35 ycloud systemd[1]: watcher.service: Service RestartSec=5s expired, scheduling restart.
Sep 29 10:03:35 ycloud systemd[1]: watcher.service: Scheduled restart job, restart counter is at 422.
Sep 29 10:03:35 ycloud systemd[1]: Stopped Watcher.
Sep 29 10:03:35 ycloud systemd[1]: Started Watcher.
Sep 29 10:03:35 ycloud watcher.py[63790]: pidfile /var/run/watcher-script.pid already exists. Daemon already running?
Sep 29 10:03:35 ycloud systemd[1]: watcher.service: Main process exited, code=exited, status=1/FAILURE
Sep 29 10:03:35 ycloud systemd[1]: watcher.service: Failed with result 'exit-code'.
Sep 29 10:03:40 ycloud systemd[1]: watcher.service: Service RestartSec=5s expired, scheduling restart.
Sep 29 10:03:40 ycloud systemd[1]: watcher.service: Scheduled restart job, restart counter is at 423.
Sep 29 10:03:40 ycloud systemd[1]: Stopped Watcher.
Sep 29 10:03:40 ycloud systemd[1]: Started Watcher.
Sep 29 10:03:40 ycloud watcher.py[63791]: pidfile /var/run/watcher-script.pid already exists. Daemon already running?
Sep 29 10:03:40 ycloud systemd[1]: watcher.service: Main process exited, code=exited, status=1/FAILURE
Sep 29 10:03:40 ycloud systemd[1]: watcher.service: Failed with result 'exit-code'.
Sep 29 10:03:46 ycloud systemd[1]: watcher.service: Service RestartSec=5s expired, scheduling restart.
Sep 29 10:03:46 ycloud systemd[1]: watcher.service: Scheduled restart job, restart counter is at 424.
Sep 29 10:03:46 ycloud systemd[1]: Stopped Watcher.
Sep 29 10:03:46 ycloud systemd[1]: Started Watcher.
Sep 29 10:03:46 ycloud watcher.py[63792]: pidfile /var/run/watcher-script.pid already exists. Daemon already running?
Sep 29 10:03:46 ycloud systemd[1]: watcher.service: Main process exited, code=exited, status=1/FAILURE
Sep 29 10:03:46 ycloud systemd[1]: watcher.service: Failed with result 'exit-code'.
Sep 29 10:03:49 ycloud systemd[1]: Stopped Watcher.
Sep 29 10:04:09 ycloud systemd[1]: Started Watcher.
Sep 29 10:04:09 ycloud watcher.py[63799]: pidfile /var/run/watcher-script.pid already exists. Daemon already running?
Sep 29 10:04:09 ycloud systemd[1]: watcher.service: Main process exited, code=exited, status=1/FAILURE
Sep 29 10:04:09 ycloud systemd[1]: watcher.service: Failed with result 'exit-code'.
Colttt hat geschrieben: ↑ zum Beitrag ↑
29.09.2020 09:10:02
btw: warum nutzt du dafür nicht Wiki-Artikel zum Thema iwatch?
Weil watcher sehr simpel aufgebaut ist und bisher gut funktioniert hat. iWatch habe ich noch nicht gesehen, ich schau mal ob ich das konfiguriert bekomme...

Colttt
Beiträge: 3012
Registriert: 16.10.2008 23:25:34
Wohnort: Brandenburg
Kontaktdaten:

Re: Systemd Service installieren

Beitrag von Colttt » 29.09.2020 10:18:41

ok, kannst du den dienst bitte einmal sauber stoppen und gucken ob noch ein prozess irgendwo läuft?

Code: Alles auswählen

systemctl stop watcher
ps aux |grep watcher
kill -9 <PID_von_watcher>
wenn das erledigt ist prüfen ob das pidfile noch existiert und wenn ja bitte auch das löschen, wenn das alles erledigt ist mal den Dienst wieder starten und gucken ob es dann geht. wenn nicht mal bei type fork eingeben
Debian-Nutzer :D

ZABBIX Certified Specialist

Exxter
Beiträge: 385
Registriert: 10.01.2003 00:15:15
Lizenz eigener Beiträge: GNU General Public License

Re: Systemd Service installieren

Beitrag von Exxter » 29.09.2020 11:01:26

Colttt hat geschrieben: ↑ zum Beitrag ↑
29.09.2020 10:18:41
ok, kannst du den dienst bitte einmal sauber stoppen und gucken ob noch ein prozess irgendwo läuft?

Code: Alles auswählen

systemctl stop watcher
ps aux |grep watcher
kill -9 <PID_von_watcher>
wenn das erledigt ist prüfen ob das pidfile noch existiert und wenn ja bitte auch das löschen, wenn das alles erledigt ist mal den Dienst wieder starten und gucken ob es dann geht. wenn nicht mal bei type fork eingeben
OK:

Code: Alles auswählen

root@ycloud:/var/log$ ps ax|grep watcher
 9498 pts/5    S+     0:00 tail -f /var/log/watcher.log
16289 pts/3    R+     0:00 grep watcher
root@ycloud:/var/log$ ls -al /var/run/|grep watcher
root@ycloud:/var/log$ systemctl start watcher
root@ycloud:/var/log$
Syslog:

Code: Alles auswählen

Sep 29 10:55:17 ycloud systemd[1]: Started Watcher.
Sep 29 10:55:18 ycloud systemd[1]: watcher.service: Succeeded.
Aber:

Code: Alles auswählen

root@ycloud:/var/log$ systemctl status watcher
● watcher.service - Watcher
   Loaded: loaded (/etc/systemd/system/watcher.service; enabled; vendor preset: enabled)
   Active: inactive (dead) since Tue 2020-09-29 10:55:18 CEST; 59s ago
  Process: 17336 ExecStart=/root/scripte/watcher/watcher.py start -c /root/scripte/watcher/watcher.ini (code=exited, status=0/SUCCESS)
 Main PID: 17336 (code=exited, status=0/SUCCESS)

Sep 29 10:55:17 ycloud systemd[1]: Started Watcher.
Sep 29 10:55:18 ycloud systemd[1]: watcher.service: Succeeded.
root@ycloud:/var/log$
und die /etc/systemd/system/watcher.service:

Code: Alles auswählen

[Unit]
Description=Watcher
After=network.target

[Service]
Type=fork
ExecStart=/root/scripte/watcher/watcher.py start -c /root/scripte/watcher/watcher.ini
Restart=on-failure
RestartSec=5s

[Install]
WantedBy=multi-user.target
Es wird kein Sync ausgeführt, der Dienst läuft nicht.

Bei iWatch sehe ich noch nicht durch, das ist deutlich komplexer ... :?

Colttt
Beiträge: 3012
Registriert: 16.10.2008 23:25:34
Wohnort: Brandenburg
Kontaktdaten:

Re: Systemd Service installieren

Beitrag von Colttt » 29.09.2020 12:43:25

ok fork scheint nicht zu gehen und wenn du bei simple bleibst? steht denn was in der watcher.log?


Edit.. ich sehe grade es heisst forking und nicht fork.. probier es bitte nochmal mit forking.. wenn das nicht geht dann bitte simple und mit der watcher option debug (statt start)
Debian-Nutzer :D

ZABBIX Certified Specialist

Exxter
Beiträge: 385
Registriert: 10.01.2003 00:15:15
Lizenz eigener Beiträge: GNU General Public License

Re: Systemd Service installieren

Beitrag von Exxter » 29.09.2020 14:07:11

Colttt hat geschrieben: ↑ zum Beitrag ↑
29.09.2020 12:43:25
ok fork scheint nicht zu gehen und wenn du bei simple bleibst? steht denn was in der watcher.log?


Edit.. ich sehe grade es heisst forking und nicht fork.. probier es bitte nochmal mit forking.. wenn das nicht geht dann bitte simple und mit der watcher option debug (statt start)
Ich habe es auch mit forking probiert, aktuell steht in der syslog:

Code: Alles auswählen

Sep 29 13:57:00 ycloud systemd[1]: Started Watcher.
Sep 29 13:57:00 ycloud systemd[1]: watcher.service: Succeeded.
Aber ps ax zeigt keinen Prozess an. Und

Code: Alles auswählen

root@ycloud:/var/log$ systemctl status watcher
● watcher.service - Watcher
   Loaded: loaded (/etc/systemd/system/watcher.service; enabled; vendor preset: enabled)
   Active: inactive (dead) since Tue 2020-09-29 13:57:00 CEST; 5min ago
  Process: 16156 ExecStart=/root/scripte/watcher/watcher.py start -c /root/scripte/watcher/watcher.ini (code=exited, status=0/SUCCESS)
 Main PID: 16156 (code=exited, status=0/SUCCESS)

Sep 29 13:57:00 ycloud systemd[1]: Started Watcher.
Sep 29 13:57:00 ycloud systemd[1]: watcher.service: Succeeded.
root@ycloud:/var/log$
Wenn ich es aber mit debug starte, läuft er weiter:

Code: Alles auswählen

Sep 29 14:04:23 ycloud systemd[1]: Started Watcher.
Sep 29 14:04:23 ycloud watcher.py[18981]: 2020-09-29 14:04:23.177778 Daemon started
Sep 29 14:04:23 ycloud watcher.py[18981]: 2020-09-29 14:04:23.177846 job1: /var/www/Dateien/UploadFormulare
Sep 29 14:04:59 ycloud watcher.py[18981]: sending incremental file list
Sep 29 14:04:59 ycloud watcher.py[18981]: Musteranlage/
Sep 29 14:04:59 ycloud watcher.py[18981]: Musteranlage/jzfjhghg
Sep 29 14:04:59 ycloud watcher.py[18981]: Musteranlage/testghhghhjhj87zuz87sfsdfsf
Sep 29 14:04:59 ycloud watcher.py[18981]: sent 2.23K bytes  received 76 bytes  1.54K bytes/sec
Sep 29 14:04:59 ycloud watcher.py[18981]: total size is 922.01K  speedup is 400.18
Sep 29 14:04:59 ycloud watcher.py[18981]:
Sep 29 14:04:59 ycloud watcher.py[18981]: ##########################################################
Sep 29 14:04:59 ycloud watcher.py[18981]: fertig: Di 29. Sep 14:04:59 CEST 2020
Sep 29 14:04:59 ycloud watcher.py[18981]: ##########################################################
Sep 29 14:04:59 ycloud watcher.py[18981]:

Code: Alles auswählen

root@ycloud:~$ ps ax|grep atcher
18981 ?        Ssl    0:00 python /root/scripte/watcher/watcher.py debug -c /root/scripte/watcher/watcher.ini
20045 pts/4    S+     0:00 grep atcher
root@ycloud:~$
Watcher ruft ein Script auf, welches per rsync ein Verzeichnis synchronisiert. Sehr seltsam..

Colttt
Beiträge: 3012
Registriert: 16.10.2008 23:25:34
Wohnort: Brandenburg
Kontaktdaten:

Re: Systemd Service installieren

Beitrag von Colttt » 29.09.2020 15:28:57

wenn du es im debug laufen lässt läuft es im hintergrund, da brauchst du dann type simple wenn du es so nicht laufen lässt, sondern mit start, dann sollte es mit type forking gehen, nicht vergessen nach jeder änderung ein reload von systemd zu machen
Debian-Nutzer :D

ZABBIX Certified Specialist

JTH
Moderator
Beiträge: 3077
Registriert: 13.08.2008 17:01:41
Wohnort: Berlin

Re: Systemd Service installieren

Beitrag von JTH » 30.09.2020 23:13:08

Colttt hat geschrieben: ↑ zum Beitrag ↑
29.09.2020 15:28:57
wenn du es im debug laufen lässt läuft es im hintergrund
Im Vordergrund ;)

Ich würde dir auch empfehlen, die debug-Variante zu wählen – wenn das nun ansonsten funktioniert wie gewollt. Forking beim Start eines Services per systemd ist seltenst notwendig und verkompliziert Dinge nur (wie du gerade merkst). Auf das Type=simple kannst du auch verzichten, das ist der Standardwert, wenn nicht explizit angegeben.
Manchmal bekannt als Just (another) Terminal Hacker.

Exxter
Beiträge: 385
Registriert: 10.01.2003 00:15:15
Lizenz eigener Beiträge: GNU General Public License

Re: Systemd Service installieren

Beitrag von Exxter » 01.10.2020 08:39:19

Mit:

Code: Alles auswählen

[Unit]
Description=Watcher
After=network.target

[Service]
Type=simple
ExecStart=/root/scripte/watcher/watcher.py debug -c /root/scripte/watcher/watcher.ini

[Install]
WantedBy=multi-user.target
startet es jetzt zuverlässig nach jedem Neustart.

Danke für eure Hilfe!

Antworten