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.

Matteo Monti
quelle
23
@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.
Vladimir verleg

Antworten:

178
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 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 .

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 .

Dave Lasley
quelle
1
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
Charles Brandt
1
Das Lesen dieser - unix.stackexchange.com/questions/28679/… - zusammen mit der Antwort wird hilfreich sein
Arjun Sreedharan