Wie kann ich einen Dienst so konfigurieren, dass er beim Start ausgeführt wird?

244

Ich habe einen Daemon, der einwandfrei läuft, wenn ich ihn manuell mit dem folgenden serviceBefehl starte:

ricardo@ricardo-laptop:~$ sudo service minidlna start                   
 * Starting minidlna minidlna                                                              [ OK ] 

Es ist jedoch nicht für den automatischen Start beim Neustart des PCs konfiguriert.

Wie kann ich es so konfigurieren, dass es automatisch startet, auch wenn niemand am PC angemeldet ist?

Ricardo Reyes
quelle
@ user154721 Welche Argumente haben Sie für update-rc.d angegeben, damit der Autostart funktioniert? Ich habe verschiedene Optionen ausprobiert, aber kein Glück gehabt.
BennyTheBen
Autostart-Programme werden in autostartManifesten oder in *.serviceDateien an mehreren Speicherorten sowie in init.doder konfiguriert crontab. Siehe: unix.stackexchange.com/a/525845/43233
Noam Manos,

Antworten:

281
sudo update-rc.d minidlna defaults

Dies sollte den Dienst zum automatischen Startsystem hinzufügen. Aber wenn Sie bekommen:

System start/stop links for /etc/init.d/minidlna already exist.

Mach den Befehl

sudo update-rc.d minidlna enable

PS : Weitere Informationen finden Sie in der Manpage für update-rc.d, indem Sie den Befehl eingebenman update-rc.d

LassePoulsen
quelle
7
danke, aber was ist, wenn ich diese Ausgabe bekomme, wenn ich diesen Befehl ausführe ?:System start/stop links for /etc/init.d/minidlna already exist.
Ricardo Reyes
1
Wenn minidlna nicht in ein Logfile schreibt, werden Sie es nirgendwo finden. Schlägt dies möglicherweise fehl, weil beim Starten keine Netzwerkverbindung besteht? Versuchen Sie, die Konfiguration zu überprüfen, wenn es möglich ist, das Debuggen und / oder Protokollieren zu aktivieren, um herauszufinden, was falsch ist.
LassePoulsen
8
Mit @RicardoReyes werden sudo update-rc.d -f minidlna removedie vorhandenen Links entfernt.
Dogweather
5
Ich erhalte folgende Fehlermeldung: update-rc.d: /etc/init.d/usermanage: Datei existiert nicht
Rizwan Patel
2
Mir ist auch der selbe Fehler unterlaufen update-rc.d: /etc/init.d/mongod: file does not exist. Dann sudo systemctl enable mongod.servicearbeitete für mich.
Explorer
36

Manchmal müssen Sie beim Booten ein Skript ausführen, z. B. eine iptables-Konfiguration beim Booten. Sie müssen das Skript also nicht bei jedem Neustart manuell ausführen.

Sie können Ihr Skript beim Booten in Ubuntu ausführen, indem Sie es zur /etc/init.d/rc.localDatei hinzufügen . Schauen Sie sich die folgenden Schritte an.

  1. /etc/rc.localDatei mit diesem Befehl öffnen :

    vim /etc/rc.local
    
  2. Fügen Sie dort Ihr Skript hinzu, das Sie beim Booten ausführen möchten, zum Beispiel:

    sh /home/ivan/iptables.sh 
    echo 'Iptable Configured!'
    
  3. Überprüfen Sie die in dieser Datei enthaltenen Kommentare und stellen Sie sicher, dass am Ende ein Exit 0 steht.

  4. Speichern Sie die Dateien. Und Ihr Skript wird beim Booten ausgeführt.

hhlp
quelle
2
In den Kommentaren von /etc/init.d/rc.local in Ubuntu 12.04 heißt es: "Kurzbeschreibung: Führen Sie /etc/rc.local aus, falls vorhanden". Vielleicht ist es besser, die Skripte zu /etc/rc.local hinzuzufügen.
Sanghyun Lee
Würde diese Methode den Befehl "shutdown" an den Dienst senden oder den Prozess nur beim Herunterfahren des Betriebssystems beenden?
Vadim Chekan
Vadim, rc.local wird nur beim Booten ausgeführt, beim Herunterfahren wird nichts erreicht. Der Prozess würde höchstwahrscheinlich vom Betriebssystem beim Herunterfahren abgebrochen.
Weboide
1
Zu rc.localIhrer Information : Der Unterschied zwischen dem Hinzufügen zu init und dem Hinzufügen zu init besteht darin, dass rc.local am Ende der Startsequenz von init ausgeführt wird und nicht als Teil davon
BobTuckerman,
35
  • So starten Sie einen Daemon beim Start:

    update-rc.d service_name defaults
    
  • Zu entfernen:

    update-rc.d -f service_name remove
    

Standardwerte => Standardlaufebenen 2,3,4 und 5

Beispiel:

update-rc.d tomcat7 defaults
Lakal Malimage
quelle
1
Wenn ich diesen Befehl ausführe, erhalte ich "System-Start / Stopp-Links für /etc/init.d/tomcat7 sind bereits vorhanden". Beim Neustart wird Tomcat jedoch nicht gestartet. Ich muss immer "service tomcat7 start" ausführen.
John Little
In meinem Fall wird der myservice- Standard von sudo update-rc.d immer ohne Ausgabe beendet und der Dienst startet beim Booten nicht oder mit myservice-Start von sudo, der ebenfalls unbemerkt beendet wird. sudo /etc/init.d/myservice Start funktioniert jedoch
Axk
13

Seit Ubuntu 15.10 (bzw. Debian 8 "jessie") müssen Sie den folgenden Befehl verwenden, um Ihren Dienst so minidlnazu konfigurieren , dass er beim Start ausgeführt wird:

sudo systemctl enable minidlna.service

Und um es wieder daran zu hindern, beim Booten zu starten:

sudo systemctl disable minidlna.service

Dies funktioniert mit allen Dienstnamenreferenzen, die Sie finden können ls /lib/systemd/system/*.service.

Tanius
quelle