Mögliches Duplikat:
Linux-Entsprechung für Windows-Start
Ich brauche ein Programm, das jedes Mal ausgeführt wird, wenn ich mein Ubuntu-Linux starte. Also müsste ich es zu meiner Liste der Startprogramme hinzufügen. Nur ein Problem: Ich müsste es über das Terminal tun.
Sudo mv /filename /etc/init.d/
Sudo chmod +x /etc/init.d/filename
Sudo update-rc.d filename defaults
Das Skript sollte jetzt beim Booten starten. Beachten Sie, dass diese Methode auch mit festen und symbolischen Links (ln
) funktioniert.
Zu diesem Zeitpunkt des Startvorgangs ist PATH noch nicht festgelegt. Daher ist es wichtig, dass durchgehend absolute Pfade verwendet werden. ABER, wie in den Kommentaren von Steve HHH ausgeführt, den vollständigen Dateipfad explizit deklarieren (/etc/init.d/filename
) für den Befehl update-rc.d ist in den meisten Linux-Versionen nicht gültig. Gemäß der Manpage für update-rc.d ist der zweite Parameter ein Skript in /etc/init.d/*
. Der obige Code wurde aktualisiert, um dies widerzuspiegeln.
Auch wie in den Kommentaren (von Charles Brandt) ausgeführt, /filename
muss ein Skript im Init-Stil sein. Eine gute Vorlage wurde ebenfalls bereitgestellt - https://github.com/fhd/init-script-template .
Ein weiterer Link zu einem anderen Artikel, nur um eine mögliche Linkfäule zu vermeiden (obwohl es traurig wäre, wenn GitHub sterben würde) - -daemons-with-init-scripts
Wie in den Kommentaren (von Russell Yan) erwähnt, funktioniert dies nur im Standardmodus von update-rc.d.
Laut dem Handbuch von update-rc.d kann es in zwei Modi ausgeführt werden: "Die Computer, die den Legacy-Modus verwenden, haben eine Datei /etc/init.d/.legacy-bootordering
". In diesem Fall müssen Sie die Sequenz - und Runlevel - Konfiguration über Befehlszeilenargumente übergeben.
Das äquivalente Argument für das obige Beispiel lautet
Sudo update-rc.d filename start 20 2 3 4 5 . stop 20 0 1 6 .