Antworten:
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.
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
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 auf systemd
( /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: *
Wenn ein Dienst unter einem bestimmten Namen angefordert wird, aber keine Einheitenkonfigurationsdatei gefunden wird, sucht systemd nach einem SysV-Init-Skript mit demselben Namen ... und erstellt dynamisch eine Diensteinheit aus diesem Skript. Dies ist nützlich für die Kompatibilität mit SysV. Beachten Sie, dass diese Kompatibilität ziemlich umfassend ist, jedoch nicht 100%.
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 Allgemeinen
man systemd.service
- Über Service-Unit-Dateien, z. B. Daemons, und Single-Run-Programme.
man systemctl
- Befehlszeilenoberfläche
man journalctl
- Protokoll anzeigen, was systemd getan hat
man systemd
- Über das Init-Programm selbst
Es 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 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:
# Comments can only go at the beginning of the line!
[Unit]
Description=Start the NoIP IP update daemon. This runs every 30 minutes and reports our current IP to NoIP.com to update Love2d.ddns.net.
Documentation=https://no-ip.com/
Documentation=file:///nobak/Installers/NoIP/noip-2.1.9-1/README.FIRST
[Service]
# 'forking' because process returns after starting daemon (traditional unix daemon).
Type=forking
# This program runs and returns, leaving the running daemon
ExecStart=/usr/local/bin/noip2
# Be in no hurry to start this. Max nice is +19.
Nice=15
# If it dies for any reason, then restart it
Restart=always
[Install]
# Installs a hook to use this unit file when the system boots or shuts down
WantedBy=multi-user.target
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