Der Titel fasst es so ziemlich zusammen.
Wie füge ich eine startup.sh und shutdown.sh meiner Server-App zur Start- und Shutdown-Sequenz des Debian-Betriebssystems hinzu?
Unter Debian sollten Service & Application Boot- und Shutdown-Skripte abgelegt werden /etc/init.d/
.
Debian bietet ein Beispielskript /etc/init.d/skeleton
, das Sie nach Ihrem Geschmack für Ihre spezielle Anwendung ändern können.
Sobald es vorhanden ist, rufen Sie an:
# update-rc.d YOURAPP defaults
Debian soll die /etc/rc?.d/
Symlinks für Sie hinzufügen .
Wenn Sie ein Menü oder eine grafische Oberfläche bevorzugen, schauen Sie sich das Paket sysv-rc-conf
oder ksysv
an.
Sie können Ihr Skript von /etc/rc.local vor der Zeile mit der Aufschrift exit 0 aufrufen
Was das Herunterfahren Ihrer App angeht , würde ich vorschlagen, ein Skript in /etc/rc0.d einzufügen . Sie müssen ihn mit einem K in Großbuchstaben und dann mit einer zweistelligen Zahl benennen , die die Reihenfolge angibt, in der diese Skripte ausgeführt werden. Anschließend müssen Sie einen Namen eingeben. Es wird mit einem Parameter "stop" aufgerufen, aber Sie können dies für ein einfaches Stoppskript ignorieren.
Schauen Sie sich dies für den Start an .
Erstellen Sie zum Herunterfahren einen Link / kopieren Sie Ihr Skript in einen der Ordner /etc/rcX.d, wobei X das Runlevel ist, auf dem es ausgeführt werden soll. 0 ist das Runlevel zum Herunterfahren für Debian, glaube ich.
quelle
Am einfachsten ist es, vorhandene Skripte zu ändern, die in meinem System funktionieren und für Sounds verwendet werden :)
/etc/init.d/rc.local
, füge deine sh am Ende der Datei hinzu, bevor: (es wird direkt vor dem Login "screen" ausgeführt)/etc/init.d/halt
, Add Your Sh am Anfang der Datei, kurz nach den ersten Kommentaren (es wird vor dem eigentlichen Shutdown-Befehl ausgeführt, der von dieser Skriptdatei aufgerufen wird/etc/init.d/reboot
quelle
Seit Debian Jessie wurde das alte
init
Programm durch ersetztsystemd
!Überzeugen Sie sich selbst. Run:
ls -l /sbin/init
und sehen, worauf es zeigt. In diesen Tagen zeigt es aufsystemd
(/sbin/init -> /lib/systemd/systemd
), ein neueres und besseres Initialisierungsprogramm.DIE AUSGEWÄHLTEN UND ANDEREN ANTWORTEN HIER SIND JETZT VERALTET !!!
* Obwohl Sie mit System-V-Tools weiterhin Skripts auf die alte Art installieren können, ist dies im Allgemeinen keine gute Idee.
man systemd.service
sagt: *Für neuere Debian-Systeme (dh Jessie, Stretch, Buster, etc ...)
Es ist einfacher als du denkst. (-:
Hier ist die neue und bevorzugte Methode zum Installieren von Boot- oder Shutdown-Programmen.
Mit
systemd
möchten Sie zunächst eine Unit-Datei erstellen . Eine Unit-Datei besteht hauptsächlich aus Deklarationen, nicht aus Code.Dann verwenden Sie den
systemctl
Befehl, um diese Einheit zu aktivieren oder zu starten .systemd
erledigt einen Großteil der Arbeit für Sie und erleichtert es beispielsweise, ein kritisches Programm automatisch neu zu starten, wenn es abstürzt oder auf andere Weise getötet wird. Außerdem wird Ihr Programm dort heruntergefahren, wo und wann es standardmäßig ausgeführt werden soll, ohne dass Sie zusätzliche Arbeit leisten müssen.Beginnen Sie hier zu lernen
systemd
:Von Debian und anderswo und etc und etc .
Manpages zum Einstieg:
man systemd.unit
- Über Unit-Dateien im Allgemeinenman systemd.service
- Über Service-Unit-Dateien, z. B. Daemons, und Single-Run-Programme.man systemctl
- Befehlszeilenoberflächeman journalctl
- Protokoll anzeigen, was systemd getan hatman systemd
- Über das Init-Programm selbstEs gibt auch eine Vielzahl anderer Arten von Gerätedateien, z
man systemd.target
- für Gruppen und gemeinsame synchronisierte Ziele.Wenn Sie die oben genannten Grundlagen verstanden haben, klicken Sie auf
man -k systemd
, um weitere zugehörige Hilfeseiten zu finden.Was auch immer Sie tun, verwenden Sie unter Debian keines der Folgenden :
update-rc.d
--Installieren und entfernen Sie Init-Skript-Links im System-V-Stilsysv-rc-conf
- Run-Level-Konfiguration für SysV wie Init-Script-Linksrunlevel
- Gibt den vorherigen und aktuellen SysV-Runlevel ausBUM
- B OOT U p M anager - ein grafischer Editor runlevelsystemadm
- Grafisches Frontend für den System- und Service-Manager(Übrigens, der Autor hat mir per E-Mail mitgeteilt, dass es zu kaputt ist.)
EIN BEISPIEL:
Diese Unit-Datei startet den NoIP.com-Daemon beim Booten und fährt ihn beim Herunterfahren herunter.
Dieser Dämon, von Zeit zu Zeit sendet meine aktuelle IP - Adresse zu aktualisieren meine DDNS ( D ynamische DNS ( D omain N ame S erver)) - Anbieter - Datenbank, so dass mein Domain - Namen zeigt auf meinem Computer zu halten , wo immer es reist zu.
Diese Gerätedatei befindet sich auf meinem System in der folgenden Einstellungsdatei:
/etc/systemd/system/noip2.service
Folgendes ist in der Unit-Datei enthalten:
Führen Sie eine Unit-Datei manuell aus (z. B. zum Testen):
$ sudo systemctl start noip2
.$ sudo systemctl restart noip2
.$ sudo systemctl stop noip2
.Konfigurieren Sie das System so , dass beim Starten oder Herunterfahren automatisch eine Unit-Datei ausgeführt wird:
$ sudo systemctl enable noip2
.$ sudo systemctl disable noip2
.Protokoll anzeigen
$ sudo journalctl -u noip2
quelle