Führen Sie das Programm beim Start automatisch unter Linux Ubuntu aus [geschlossen]
140
Ich brauche ein Programm, das jedes Mal ausgeführt wird, wenn ich mein Ubuntu-Linux starte. Also müsste ich es meiner Liste der Startprogramme hinzufügen. Nur ein Problem: Ich müsste es über das Terminal tun.
@Flexo Diese Antwort ist in keinem der von Ihnen angegebenen Links vorhanden. +1 auf diese Frage und Antwort
Francisco Valdez
2
Tatsächlich wird auf die Antwort hier aus der ersten dieser Fragen verwiesen.
Wilson F.
4
Für eine einfache, tragbare Möglichkeit können Sie Cron verwenden. Ausführen crontab -e, um die Crontab Ihres Benutzers zu bearbeiten. add @reboot command, um commandbei jedem Start ausgeführt zu werden.
Appas
2
Ich weiß nicht, ob es ein Duplikat ist oder nicht, aber es ist der erste Google-Hit.
Das Skript sollte jetzt beim Booten starten. Beachten Sie, dass diese Methode sowohl mit Hardlinks als auch mit symbolischen Links ( ln) funktioniert .
Bearbeiten
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, ist die explizite Deklaration des vollständigen Dateipfads ( /etc/init.d/filename) für den Befehl update-rc.d 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.
Noch eine Bearbeitung
Wie in den Kommentaren (von Charles Brandt) erwähnt, /filenamemuss es sich auch um ein Skript im Init-Stil handeln. Eine gute Vorlage wurde ebenfalls bereitgestellt - https://github.com/fhd/init-script-template .
Wie in den Kommentaren (von Russell Yan) erwähnt, funktioniert dies nur im Standardmodus von update-rc.d.
Laut Handbuch von update-rc.d kann es in zwei Modi ausgeführt werden: "Die Computer, die den Legacy-Modus verwenden, verfügen über 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
Genau wie zu Ihrer Information wird mit der Option "Standard" ein Link zum Starten des Skripts in den Laufstufen 2, 3, 4 und 5 eingefügt (und ein Link zum Stoppen in 0, 1 und 6.)
Dave Lasley
5
Ich habe dies gerade in Ubuntu Server 12.04 LTS versucht, aber in 12.04 können Sie das Präfix /etc/init.d nicht haben. Es ist nur so sudo update-rc.d filename defaults.
Steve HHH
1
@puk Sowohl Hardlinks als auch symbolische Links funktionieren mit dieser Methode
Dave Lasley
14
Ich wollte nur hinzufügen, dass / Dateiname in diesem Fall ein Skript im Init-Stil sein sollte. Hier ist eine Vorlage zum Starten Ihres eigenen benutzerdefinierten Init-Skripts: github.com/fhd/init-script-template
crontab -e
, um die Crontab Ihres Benutzers zu bearbeiten. add@reboot command
, umcommand
bei jedem Start ausgeführt zu werden.Antworten:
Das Skript sollte jetzt beim Booten starten. Beachten Sie, dass diese Methode sowohl mit Hardlinks als auch mit symbolischen Links (
ln
) funktioniert .Bearbeiten
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, ist die explizite Deklaration des vollständigen Dateipfads (
/etc/init.d/filename
) für den Befehl update-rc.d 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.Noch eine Bearbeitung
Wie in den Kommentaren (von Charles Brandt) erwähnt,
/filename
muss es sich auch um ein Skript im Init-Stil handeln. Eine gute Vorlage wurde ebenfalls bereitgestellt - https://github.com/fhd/init-script-template .Ein weiterer Link zu einem anderen Artikel, um mögliche Linkfäule zu vermeiden (obwohl es traurig wäre, wenn GitHub sterben würde) - http://www.linux.com/learn/tutorials/442412-managing-linux-daemons-with-init-scripts
noch eine andere Bearbeitung
Wie in den Kommentaren (von Russell Yan) erwähnt, funktioniert dies nur im Standardmodus von update-rc.d.
Laut Handbuch von update-rc.d kann es in zwei Modi ausgeführt werden: "Die Computer, die den Legacy-Modus verwenden, verfügen über 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 .
quelle
sudo update-rc.d filename defaults
.