Raspberry Pi Autostart?
Hallo,
ich wollte ein Skript beim Booten des Raspberry Pi's ausführen lassen. Ich habe es in der rc.local eingetragen, ein Skript im init.d Ordner erstellt und ein Skript im rc6.d Ordner erstellt. Dann habe ich alle ausführbar gemacht, allerdings wurde es immer noch nicht ausgeführt.
LG
Macht es Probleme, dass ich einen cd-Command in dem Skript nutze?
Wofür willst du das cd command nutzen?
Um danach einen Command an einem anderen Ort auszuführen
2 Antworten
Crontab oder systemd wäre hier das was du nutzen kannst.
CrontabEinfach in der CLI zum aufrufen der Crontab Datei
crontab -e
Eintragen und mit [Enter] bestätigen.
Er wird dich nun fragen welchen Editor du wählen willst, tue dir selbst einen Gefallen und nutze nano (VI ist für bspw hass)
Nun öffnet sich die crontab Datei, dort sollte auch schon was drinnen stehen. Dies ignorieren wir und tragen in der letzten Zeile
@reboot Befehl zum starten
Ein und betätigen erneut [Enter], denn die Datei muss mit einer Leerzeile abschließen.
Nun [Strg] + [O] zum speichern
[Strg] + [X] zum beenden.
Nun erfolgt eine Meldung das der Crontab erfolgreich installiert wurde.
SystemdDafür brauchen wir
- Skript
- Service
Dafür erstellst du ein Skript
sudo nano /path/to/script.sh
Mit folgendem Inhalt
#!/bin/bash
Das was das Skript halt machen soll, oder eben der Befehl
Das Skript muss nun ausführenbar gemacht werden
sudo chmod -x /path/to/script.sh
Ausprobieren ob dein Skript macht was es soll kannst du mit
sh /path/to/script.sh
Service
Danach brauchen wir noch den Service der dieses Skript ausführt
sudo nano /lib/systemd/system/Name.service
Diese Datei muss folgenden inhalt haben
[Unit]
Description=was macht der Service
[Service]
ExecStart=/path/to/script.sh
Type=simple
[Install]
WantedBy=multi-user.target
Das Ganze denn speichern und
sudo chmod 644 /lib/systemd/system/Name.service
Danach
sudo systemctl enable Name.service
sudo systemctl start Name.service
Ob der Service Job läuft siehat du hier
sudo systemctl status Name.service
Wie du dir denken kannst habe ich natürlich ein paar Platzhalter verwendet
/path/to/script.sh >>> das wäre dort wo du deine Skripte speichern willst und halt auch den Namen dafür verwenden
Name.service >>> hier ist Name der Platzhalter und kann von dir relativ frei gewählt werden (sofern der Name noch frei ist)
Das das Ganze über das Terminal einzugeben ist, erklärt sich hoffentlich selbst.
Dein script steht in RC.d
Und in alle rcx.d kommt ein symbolischer Link.
Besser wäre es natürlich, das script mit systemd zu steuern.
Es gibt jede Menge Anleitungen zu systemd. Ich möchte hier nicht noch eine schreiben.
Aber versuchs doch erst mal mit den symolic Links:
ln -s scriptname /etc/rc3.d/ # undsoweiter
Ja sehr gut - kurz und knackig!! (dafür war ich jetzt zu faul! ;-)