Ich bin neu in Linux und freue mich darauf, die Anwendung zu starten (die alle 10 Sekunden eine LED wechselt). Ich habe das Anwendungsprogramm geschrieben und es funktioniert einwandfrei, aber jetzt möchte ich es automatisch beim Booten starten.
In der Dokumentation wird angegeben , dass das Startskript in das /etc/init.d
Verzeichnis kopiert und eine symbolische Verknüpfung zu dem kopierten Skript im rc.d
Verzeichnis hergestellt werden soll.
Wie sollten die Erweiterung und der Name dieser Skriptdateien lauten? Können wir den symbolischen Link manuell hinzufügen rc.d
oder gibt es eine spezielle Vorgehensweise dafür?
Irgendein Vorschlag, wie man es erreicht?
start-stop-daemon
es besser handhabt (obwohl es vorzuziehen ist, dass das Programm selbst dämonisiert). Welche Distribution benutzt du? Außerhalb von Desktop-MIME-Typen sind Dateierweiterungen in * nix bedeutungslos und es wird bevorzugt, dass ausführbare Dateien keine haben.cron
stattdessen verwenden.Antworten:
Hier ist der Auszug aus http://www.debian-administration.org/articles/28, der Ihre Frage zu beantworten scheint.
Hinweis: Im folgenden Beispielskript fügen Sie einfach einen Aufruf zum
start)
Abschnitt " " hinzu, um Ihr Programm tatsächlich zu starten. Sie können die Funktionalität des Skripts testen, ohne das System neu zu starten: Rufen Sie es mit dem vollständigen Pfad auf und geben Sie den Parameter "start
" oder "stop
".Hier geht:
Debian verwendet ein Sys-V-ähnliches Init-System, um Befehle auszuführen, wenn sich der Runlevel des Systems ändert - zum Beispiel beim Booten und Herunterfahren.
Wenn Sie einen neuen Dienst hinzufügen möchten, der beim Starten des Computers gestartet wird, müssen Sie das erforderliche Skript zum Verzeichnis hinzufügen
/etc/init.d/
. Viele der Skripte, die bereits in diesem Verzeichnis vorhanden sind, geben Ihnen ein Beispiel für die Art der Dinge, die Sie tun können.Hier ist ein sehr einfaches Skript, das in zwei Teile unterteilt ist: Code, der immer ausgeführt wird, und Code, der ausgeführt wird, wenn er mit "start" oder "stop" aufgerufen wird.
Sobald Sie Ihre Datei am richtigen Ort gespeichert haben, stellen Sie sicher, dass sie ausführbar ist, indem Sie "
chmod 755 /etc/init.d/blah
" .Anschließend müssen Sie die entsprechenden symbolischen Links hinzufügen, damit das Skript ausgeführt wird, wenn das System ausfällt oder hochfährt.
Am einfachsten geht das mit dem Debian-spezifischen Befehl
update-rc.d
:quelle
systemd
viele Funktionen, einschließlich der Startkonfiguration. Verwenden Siesystemctl
zu steuern und konfigurierensystemd
.Am besten überprüfen Sie die Paketquelle Ihrer Distribution auf einen regelmäßigen Systemdienst, z. B. für OpenSSH - Sie werden sehen, was die bewährten Methoden sind. Schließlich liegt einer der Gründe für Open Source darin, aus den Quellen lernen zu können.
quelle
Verwenden Sie Supervisor, ein effektives Programm, das die Startanwendungen mit Argumenten verwaltet und protokolliert. Weitere Informationen finden Sie unter http://supervisord.org/running.html und (Folgen Sie den Installationsanweisungen.
Erstellen Sie eine Conf-Datei unter
/etc/supervisor/conf.d/{PROGRAM_NAME}.conf
und hier ist der Code,Führen Sie dann von der cmd-Zeile aus:
supervisorctl reload
quelle
Die Benutzung
crontab
ist viel einfacher.Verwenden Sie
crontab -e
diese Option, um die Crontab des Benutzers zu bearbeiten.Fügen Sie am Ende folgende Zeile hinzu:
Beispiele:
@reboot my_script.sh
@reboot python my_script.py arg1 arg2
Stellen Sie abschließend
crontab -l
mit sicher, dass Ihr Skript zur Liste hinzugefügt wurde.quelle
Neuere Versionen der Linux- Unterstützung
systemd
(wie @AlexanderShcheblikin sagte). Es hat mehr Funktionen und ist portabler als eine debian-spezifische Lösung.Bitte lesen Sie diese wirklich gute Anleitung .
Hier ist eine kurze Referenz des Nötigste benötigt:
myscript.sh
) mit ausführbaren Berechtigungen.myservice.service
) mit der Erweiterung ".service"/etc/systemd/system
mit 644-Berechtigungen, die den Befehl zum Ausführen des Skripts enthält. Beispielsweise,:
sudo systemctl enable myservice
, um ihn beim Booten zu starten.quelle