le titre résume presque beaucoup.
comment puis-je ajouter une startup.sh and shutdown.sh de l'application de mon serveur à la séquence de démarrage et d'arrêt du système d'exploitation Debian?
Vous pouvez appeler votre script de / etc/rc.local, avant la ligne qui indique Quitter 0
En ce qui concerne la fermeture de votre application, je suggérerais de mettre un script dans / etc/rc0.d. Vous devez le nommer avec une majuscule [~ # ~ # ~] k [~ # ~ ~], puis un numéro de 2 chiffres qui spécifie la commande que ces scripts sont exécutés, puis un nom. Il sera appelé avec un paramètre "STOP", mais vous pouvez l'ignorer pour un script d'arrêt simple.
Pour le démarrage, regardez ceci .
Pour l'arrêt, Créez un lien/Copiez votre script dans l'un des dossiers /etc/rcx.d où X est le niveau d'exécution que vous souhaitez exécuter à. 0 est la ferme d'arrêt pour Debian je crois.
Depuis Debian Jessie, l'ancien programme init
a été remplacé par systemd
!
Vérifiez-le vous-même. Courir: ls -l /sbin/init
Et voir ce que ça pointe. Ces jours-ci, il pointe de systemd
(/sbin/init -> /lib/systemd/systemd
), un programme d'initialisation plus récent et meilleur.
Donc, les réponses choisies et autres ici sont maintenant obsolètes !!!
* Pendant que vous pouvez toujours installer des scripts l'ancienne façon avec les outils System-V, ce n'est pas une bonne idée de manière générale.
man systemd.service
dit:*
Si un service est demandé sous un certain nom mais aucun fichier de configuration de l'unité n'est trouvé, SystemD recherche un script SYSV init du même nom ... et crée dynamiquement une unité de service à partir de ce script. Ceci est utile pour la compatibilité avec SYSV. Notez que cette compatibilité est assez complète mais pas 100%.
C'est plus facile que vous ne le pensez. (-:
Voici la méthode nouvelle et préférée pour installer des programmes de démarrage ou d'arrêt.
Avec systemd
vous souhaitez d'abord créer un fichier unitaire. Un fichier unitaire est principalement des déclarations, pas de code.
Ensuite, vous utiliserez la commande systemctl
commande à Activer ou Démarrer cette unité.
systemd
fait une grande partie du travail pour vous, ce qui facilite la tâche, par exemple, d'avoir un programme critique redémarrer automatiquement s'il se bloque ou est autrement tué. En outre, il arrête votre programme où et quand il devrait par défaut sans travail supplémentaire de votre part.
Commencez à en savoir plus sur systemd
ici:
debian et ailleurs et etc et etc .
Pages de l'homme pour commencer:
man systemd.unit
- À propos des fichiers unitaires en général
[.____] man systemd.service
- À propos des fichiers de l'unité de service, par exemple Daemons et programmes d'exécution unique.
man systemctl
- Interface utilisateur de ligne de commande
[.____] man journalctl
- voir le journal de ce que SystemD a fait
man systemd
- À propos du programme init lui-même
Il existe également une variété d'autres types de fichiers unitaires, par ex.
man systemd.target
- Pour les groupes et les cibles courantes synchronisées.
Une fois que vous avez digéré les bases ci-dessus, puis creuser avec man -k systemd
Pour trouver d'autres pages d'homme associées.
Quoi que vous fassiez, sur Debian N'utilisez aucun de ces:
update-rc.d
--install et supprimer des liens de script init de style System-V Stylesysv-rc-conf
- Configuration du niveau d'exécution pour SYSV comme des liens de script initrunlevel
- Impression de sysv runlevel précédent et actuelBUM
- B oot U p M Anager - Un éditeur de runlevel graphiquesystemadm
- Frontend graphique pour le système SystemD System et Service ManagerCe fichier d'unité démarre le démon Noir.com lorsque je démarre et la ferme vers le bas lorsque je fermeture.
Ce démon, de temps à autre, envoie mon adresse IP actuelle pour mettre à jour mes DDNS ([~ # ~] d [~ # ~ ~] Ynamic [[~ # ~] DNS [~ # ~]] ([~ # ~] d [~ # ~ ~] OMAIN [~ # ~] n [~ # ~]] AME - S erver)) la base de données du fournisseur, gardant ainsi mon nom de domaine pointant sur mon ordinateur partout où il se déroule.
Cet appareil est situé sur mon système dans ce fichier de paramètres: /etc/systemd/system/noip2.service
Voici ce qui est dans le fichier de l'unité:
# 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
Run manuellement Un fichier unitaire, (par exemple pour tester):
$ Sudo systemctl start noip2
.$ Sudo systemctl restart noip2
.$ Sudo systemctl stop noip2
.Configurer le système Pour exécuter automatiquement un fichier de l'unité lors du démarrage ou de la fermeture:
$ Sudo systemctl enable noip2
.$ Sudo systemctl disable noip2
.Voir le journal
$ Sudo journalctl -u noip2
Le plus facile est de modifier les scripts existants, fonctionne dans mon système, utilisé pour les sons :)
/etc/init.d/rc.local
, ajoutez votre SH à la fin du fichier, avant: (il l'exécutera juste avant la connexion "écran")/etc/init.d/halt
, ajoutez votre SH au début du fichier, juste après les commentaires initiaux (il sera exécuté avant la commande d'arrêt réelle, appelée par ce fichier de script./etc/init.d/reboot