Ubuntu 14.04 Trusty Tahr
Ubuntu 12.04 Precise Pangolin
Möchte man eigene Dienste, Skripte oder Programme, die keinen Eintrag in den Runleveln besitzen, beim Systemstart automatisch laden, so kann man diese in die Datei /etc/rc.local eintragen. Dabei entfällt die Verwendung von sudo – Einträge werden immer mit Root-Rechten ausgeführt.
Diese Datei kann auch in Kombination mit systemd genutzt werden, das bei neueren Ubuntu-Versionen für den Systemstart zuständig ist (siehe unten).
Allerdings gelten Einträge in dieser Datei nur für Programme ohne eine grafische Oberfläche. Möchte man Programme wie Pidgin oder Skype nach dem Anmelden automatisch starten, hilft der Artikel Autostart weiter.
Man kann die Datei /etc/rc.local in einem Texteditor [2] mit Root-Rechten [3] öffnen und bearbeiten. Eigene Einträge muss man vor
exit 0
hinzufügen. Das exit 0 muss immer am Ende der Datei bleiben. Sinnvoll ist die Angabe des vollständigen Pfads zum gewünschten Programm, also statt foo
besser /usr/bin/foo
. Beispiel:
#!/bin/sh -e # # rc.local # # This script is executed at the end of each multiuser runlevel. # Make sure that the script will "exit 0" on success or any other # value on error. # # In order to enable or disable this script just change the execution # bits. # # By default this script does nothing. ## Beispiele: /usr/bin/foo # ein Programm /usr/local/bin/bar.sh # ein Shellskript /etc/init.d/foobar start # ein Dienst exit 0
Anschließend werden die eingetragenen Befehle beim nächsten Start des Systems ausgeführt. Es sind keine weiteren Schritte nötig.
Da Upstart asynchron arbeitet, kann es passieren, dass manche Dienste oder auch eigene Befehle quasi zu früh ausgeführt werden und damit unter Umständen der gewünschte Effekt nicht eintritt. Dem kann entgegengewirkt werden, in dem man die Ausführung mit sleep verzögert bzw. wiederholt. Ein Beispiel:
# startet den Dienst powernowd nach 60 Sekunden neu (/bin/sleep 60 && /etc/init.d/powernowd restart)
sleep x
kann auch in eigenen Skripten genutzt werden.
Des Weiteren kann es passieren, dass die Datei nicht vollständig ausgeführt wird. Dazu kommt es, wenn einer der eingefügten Befehle einen Fehler erzeugt (Returncode != 0). Da in der ersten Zeile #!/bin/sh -e
standardmäßig die Option -e
angegeben ist, wird die Ausführung sofort abgebrochen. Um dieses Verhalten abzustellen, verkürzt man die 1. Zeile auf #!/bin/sh
.
Eine weitere Alternative ist die Verwendung eines eigenen Upstart-Skriptes.
In seltenen Fällen kann es erforderlich sein, nach dem Wiederaufwachen aus Suspend oder Hibernate Befehle auszuführen. Dann hilft /etc/rc.local nicht weiter, da diese Datei nur beim Rechnerstart berücksichtigt wird. Wie man dennoch Abhilfe schaffen kann, wird im Artikel pm-utils erklärt.
Diese Revision wurde am 19. Juli 2016 19:57 von aasche erstellt.