Autor Thema: [HowTo]/etc/rc.local und systemD  (Gelesen 67 mal)

0 Mitglieder und 1 Gast betrachten dieses Thema.

Offline gosia

  • Held Mitglied
  • *****
  • Beiträge: 1161
  • Dankeschön: 211 mal
  • Desktop: Openbox + xfce
  • Grafikkarte: Intel HD 4000
  • Grafikkartentreiber: i915 (free)
  • Kernel: 4.9 Artix
  • Prozessor: Intel Core i5-3210M
  • Skill: Durchschnitt
  • Zweig: stable
[HowTo]/etc/rc.local und systemD
« am: 08. Mai 2018, 19:26:05 »
Wie es der Zufall so will, haben in kurzer Zeit zwei User danach gefragt, warum denn ihr selbstgestricktes Skript /etc/rclocal nicht ausgeführt wird:
https://de.manjaro.org/index.php?topic=8439.msg53250#msg53250
https://de.manjaro.org/index.php?topic=8449.msg53312#msg53312
Nun, normalerweise löst man das durch eine eigene Unit, so wie es Pig of Destiny hier sehr schön beschrieben hat
https://de.manjaro.org/index.php?topic=8439.msg53283#msg53283
Wem es aber zu kompliziert ist, sein schon vorhandenes Skript noch umzubasteln, kann es auch so machen:

/etc/rc.local funktioniert bei systemD nur, wenn der Dienst rc-local läuft. Wenn noch nicht vorhanden, muss dazu rc-local aus dem AUR extra installiert werden:
yaourt -S rc-localDas geht aber nur, wenn noch keine /etc/rc.local existiert, sonst bricht der Installationsvorgang mit einer Konfliktmeldung ab.
Also vorher unbedingt diese Datei entweder löschen (wenn sie noch unbearbeitet und funktionslos im Verzeichnis rumliegt) oder verschieben, z.B.
sudo mv /etc/rc.local /etc/rc.local.altum das zu verwendende Skript anschliessend wieder zurückkopieren zu können.

Nach der erfolgreichen Installation von rc-local kann der Dienst sogleich eingeschaltet und gestartet werden:
sudo systemctl enable --now rc-local.serviceDie Option --now erspart dabei den oft anzutreffenden Zweizeiler
sudo systemctl enable rc-local.service
sudo systemctl start rc-local.service
Dass auch ".service" weggelassen werden kann, setze ich einfach als bekannt vorraus. Noch kürzer ginge also auch
sudo systemctl enable --now rc-local
Von nun steht der Verwendung von /etc/rc.local nichts mehr im Wege ;)
Oder halt, eine Bemerkung doch noch, das selbstgebastelte Skript /etc/rc.local sollte einen exit-Wert zurückgeben, also
exit 0
im Erfolgsfall, oder eben z.B.
exit 1
bei Misserfolg.
Aber da dies gute alte Sitte für ein Skript ist, muss ich das eigentlich nicht extra erwähnen. Aber in der Hitze des Gefechtes vergisst man das doch manchmal...

Tja, und was ist nun mit /etc/rc.local.shutdown? Leider Pustekuchen, das wüsste ich auch gern ;) Scheint mit systemD nicht zu gehen, jedenfalls ist es mir noch nicht gelungen, das zum Laufen zu bringen. aber vielleicht hat jemand anders eine gute Idee, wie es trotzdem funktioniert.

Ansonsten verhält es sich mit dieser Anleitung fast wie mit den Lottozahlen, zwar nicht zufällig gezogen, aber ohne Gewähr... Aber in meiner virtuellen Maschine hat es funktioniert.

Viele Grüße gosia
« Letzte Änderung: 08. Mai 2018, 20:09:09 von Linu74 »