So lassen Sie Dienste in Ubuntu automatisch starten

Foto des Autors

Nach der Installation eines Programms unter Linux möchten Sie vielleicht dafür sorgen, dass es nach jedem Start verfügbar ist, also beim Booten automatisch geladen wird.

So funktioniert das Startsystem der meisten Linux-Varianten

Wenn Sie im Verzeichnis /etc/init.d nachsehen, werden Sie für alle Dienste wie mysql oder apache Einträge finden. Das sind entweder Skripte oder zumindest Links auf Skripte innerhalb der jeweiligen Programmverzeichnisse.

Diese Skripte dienen zum Starten und benden und haben alle dieselbe Logik: Ein Aufruf mit „start“ als Parameter startet den jeweiligen Dienst und „stop“ beendet ihn. Dann gibt es zum Teil noch weitere Parameter, wie „status“ oder „reload“ für andere Zwecke.

Um beispielsweise Mysql zu starten, geben Sie ein

/etc/init.d/mysql start

Dies von Hand zu machen ist eher die Ausnahme, wenn Sie zum Beispiel nach der Umkonfiguration den Dienst neu starten wollen.

Regen Gebrauch davon macht aber Linux selbst. Eine wichtig Komponente dazu sind die Runlevel. Diese durchnummerierten Modi bezeichnen einen bestimmten Systemzustand, wie etwa ein mit Kommandozeile geladenes System (Runlevel 3) oder eines, das gerade herunterfährt (Runlevel 0).

Alle Dienste, die zum Beispiel im Runlevel 3 gestartet werden sollen, bekommen im Verzeichnis /etc/rc3.d einen Link auf das zugehörige Script in /etc/init.d. Dabei bedeutet ein „S“ vor dem Namen des Link, dass es sich um ein Start-Skript handelt und damit führt Linux das Skript mit dem Parameter „start“ aus.

Ubuntu Runlevel
Ubuntu Runlevel

Diese Details müssen Sie allerdings unter Debian oder Ubuntu nicht kümmern. Um einen Dienst automatisch starten zu lassen, verfügen diese Systeme über ein einfaches Tool.

Werbung

So richten Sie den Autostart in Ubuntu und Debian ein

Sie müssen dazu den Namen des zugehörigen Skripts in /etc/init.d kennen.

Angenommen, Sie haben Mysql installiert und es ist nicht von Haus aus auf Autostart eingestellt. Dann ändern Sie das per

sudo update-rc.d mysql defaults

Das legt alle notwendigen Links für den Start der üblichen Systemzustände an, also die normalen Betriebsmodi mit der grafischen Oberfläche oder der Kommandozeile.

Wollen Sie den Dienst nicht mehr automatisch starten lassen, genügt folgende Zeile, um seinen Eintrag in jedem Runlevel zu entfernen.

sudo update-rc.d mysql remove

So verfahren Sie, wenn kein Skript vorliegt

Jedes Programmpaket, das Sie über den Paketmanager installieren, sollte automatisch ein Start/Stop-Skript in /etc/init.d anlegen.

Wenn Sie auf anderem Wege zu einem Programm kommen, etwa durch Entpacken eines Archivs, dann sollten Sie in den Verzeichnisses (meistens in …/bin) nach einem passenden Skript suchen. Das blenden Sie dann durch einen symbolischen Link im Verzeichnis /etc/init.d ein.

Ein Beispiel: Der Webserver Tomcat ist Teil vieler Java-Anwendungen. Dort finden Sie ihn dann vielleicht im Verzeichnis /opt/beispielapp/apache-tomcat.

Unterhalb dieses Pfades liegt das Verzeichnis bin mit dem Skript catalina.sh als Steuerskript (Catalina ist der Projektname von Tomcat).

Für diese Konfiguration würden Sie dann über folgendes Kommando das Skript verlinken und den Autostart einrichten:

sudo ln /opt/beispielapp/apache-tomcat/bin/catalina.sh /etc/init.d/catalina
sudo update-rc.d catalina defaults

Werbung

So schreiben Sie ein eigenes Start-/Stop-Skript

Falls Sie überhaupt kein vorgefertigtes Skript für das gewünschte Programm finden, bleibt nur der Weg, selbst eines zu schreiben.

Dazu finden Sie in /etc/init.d/skeleton eine Vorlage. Kopieren Sie diese mit einem passenden Namen ins Verzeichnis /etc/init.d und passen sie dem jeweilige Programm an.

Werbung
Foto des Autors

Markus Schraudolph

Markus ist IT-Fachjournalist der ersten Stunde. Seine ersten Texte veröffentlichte er 1987 beim legendären Markt&Technik-Verlag. Seine Spezialität sind Datenbanken und Microsoft Excel. Als PHP-Experte programmierte Markus maßgeblich die erste Version des Tippscout und ist anerkannter Experte für PHP, MySQL und Wordpress.