Bash Script startet nicht automatisch, aber manuell

Vom einfachen Programm zum fertigen Debian-Paket, Fragen rund um Programmiersprachen, Scripting und Lizenzierung.
Antworten
GrayMH
Beiträge: 5
Registriert: 13.09.2022 16:57:34

Bash Script startet nicht automatisch, aber manuell

Beitrag von GrayMH » 15.09.2022 22:32:31

Hallo,

ich möchte folgenden Befehl automatisch im Hintergrund starten:

Code: Alles auswählen

ffmpeg -nostdin -loglevel panic -re -i http://mcdn.daserste.de/daserste/de/master.m3u8 -c copy -f rtp_mpegts rtp://224.2.2.2:2234
Dazu habe ich folgendes Bash erstellt:

/home/pi/dvb.sh

Code: Alles auswählen

#!/bin/bash
	
sleep 30	

ffmpeg -nostdin -loglevel panic -re -i http://mcdn.daserste.de/daserste/de/master.m3u8 -c copy -f rtp_mpegts rtp://224.2.2.2:2234 &

exit 0

Um das Script zu starten habe ich folgende Datei erstellt:

/etc/systemd/system/dvb.service

Code: Alles auswählen

[Unit]

Description=dvb.service

After=default.target

[Service]

ExecStart=/home/pi/dvb.sh


[Install]

WantedBy=default.target

Außerdem habe ich folgendes gemacht:

Code: Alles auswählen

sudo chmod +x dvb.sh

sudo chmod 755 /etc/systemd/system/dvb.service
sudo systemctl daemon-reload
sudo systemctl enable dvb.service
Das /home/pi/dvb.sh lässt sich manuell starten und ffmpeg läuft. Aber es wird nach dem booten nicht automatisch gestartet.

Wenn ich in das /home/pi/dvb.sh Script einen Befehl hinzufühge eine Datei zu erstellen, wird diese nach dem booten automatisch erstellt, aber ffmpeg nicht gestartet.
Zuletzt geändert von JTH am 15.09.2022 22:54:10, insgesamt 1-mal geändert.
Grund: [code]-Tags ergänzt

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

Re: Bash Script startet nicht automatisch, aber manuell

Beitrag von JTH » 15.09.2022 23:09:12

Moin,

benutzt doch bitte [code] … [/code]-Tags für Code und ähnliches. Das erleichtert beim Lesen das Unterscheiden von Text und eben Code und Verwandtem.

GrayMH hat geschrieben: ↑ zum Beitrag ↑
15.09.2022 22:32:31

Code: Alles auswählen

sudo chmod +x dvb.sh
Das sudo ist hier völlig überflüssig. Wenn die Datei in /home/pi liegt und deinem Benutzer pi gehört, braucht der Benutzer keine besonderen Rechte, um seine eigene Datei ausführbar zu machen.

GrayMH hat geschrieben: ↑ zum Beitrag ↑
15.09.2022 22:32:31

Code: Alles auswählen

sudo chmod 755 /etc/systemd/system/dvb.service
Das ist auch überflüssig. Eine .service-Datei muss nicht ausführbar sein.

Du solltest das & am Ende des ffmpeg-Aufrufs in deinem Skript entfernen. Es ist, wenn als Service aufgerufen, nicht notwendig, da Anwendungen innerhalb eines systemd-Services normalerweise im Vordergrund laufen.

GrayMH hat geschrieben: ↑ zum Beitrag ↑
15.09.2022 22:32:31

Code: Alles auswählen

After=default.target
Das ist ziemlich generisch. Da du hier eine Netzwerkverbindung voraussetzt, solltest du eher eine Abhängigkeit darauf angeben:

Code: Alles auswählen

[Unit]
[…]
Wants=network-online.target
After=network-online.target

Da so ein „nackter“ ffmpeg-Aufruf sich wahrscheinlich durchaus mal mit Fehler beenden kann, würde ich noch ein

Code: Alles auswählen

[Service]
[…]
Restart=on-failure
ergänzen.

GrayMH hat geschrieben: ↑ zum Beitrag ↑
15.09.2022 22:32:31

Code: Alles auswählen

WantedBy=default.target
Auch das ist recht allgemein. Üblich ist eher ein

Code: Alles auswählen

WantedBy=multi-user.target
Manchmal bekannt als Just (another) Terminal Hacker.

GrayMH
Beiträge: 5
Registriert: 13.09.2022 16:57:34

Re: Bash Script startet nicht automatisch, aber manuell

Beitrag von GrayMH » 19.09.2022 21:35:51

Vielen Dank für die ausführlichen Antworten.

Problem ist gelöst :D

Antworten