le titre résume assez bien.
comment ajouter un startup.sh et shutdown.sh de mon application serveur à la séquence de démarrage et d'arrêt du système d'exploitation Debian?
Sur Debian, les scripts de démarrage et d'arrêt des services et des applications doivent être placés dans /etc/init.d/
.
Debian fournit un exemple de script /etc/init.d/skeleton
que vous pouvez modifier à votre goût pour votre application particulière.
Une fois en place, appelez:
# update-rc.d YOURAPP defaults
Pour que Debian ajoute les /etc/rc?.d/
liens symboliques pour vous.
Si vous préférez un menu ou une interface graphique, jetez un œil au sysv-rc-conf
ou au ksysv
package.
Vous pouvez appeler votre script depuis /etc/rc.local , avant la ligne qui dit exit 0
En ce qui concerne la fermeture de votre application, je suggère de mettre un script dans /etc/rc0.d . Vous devez le nommer avec un K majuscule , puis un nombre à 2 chiffres qui spécifie l'ordre d'exécution de ces scripts, puis un nom. Il sera appelé avec un paramètre "stop", mais vous pouvez l'ignorer pour un simple script stop.
Pour le démarrage, jetez un œil à cela .
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 sur lequel vous souhaitez qu'il s'exécute. 0 est le niveau d'exécution d'arrêt pour Debian je crois.
la source
Le plus simple est de modifier les scripts existants, fonctionne dans mon système, utilisé pour les sons :)
/etc/init.d/rc.local
, ajout de votre sh à la fin du fichier, avant: (il l'exécutera juste avant la "screen" de connexion)/etc/init.d/halt
, ajouter 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, qui est appelée par ce fichier de script/etc/init.d/reboot
la source
Depuis Debian Jessie, l'ancien
init
programme a été remplacé parsystemd
!Vérifiez-le vous-même. Exécutez:
ls -l /sbin/init
et voyez ce qu'il pointe. De nos jours, il pointe verssystemd
(/sbin/init -> /lib/systemd/systemd
), un programme d'initialisation plus récent et meilleur.AINSI LES RÉPONSES CHOISIES ET AUTRES ICI SONT MAINTENANT MISES À JOUR !!!
* Bien que vous puissiez toujours installer des scripts à l'ancienne avec les outils System-V, ce n'est généralement pas une bonne idée.
man systemd.service
dit:*Pour les nouveaux systèmes Debian (ie Jessie, Stretch, Buster, etc ...)
C'est plus facile que vous ne le pensez. (-:
Voici la nouvelle méthode préférée pour installer des programmes de démarrage ou d'arrêt.
Avec
systemd
vous voulez d'abord créer un fichier d'unité . Un fichier d'unité est principalement des déclarations, pas du code.Ensuite, vous utiliserez la
systemctl
commande pour activer ou démarrer cette unité.systemd
fait une grande partie du travail pour vous, ce qui facilite, par exemple, le redémarrage automatique d'un programme critique s'il se bloque ou est autrement tué. Il arrête également votre programme où et quand il devrait par défaut sans aucun travail supplémentaire de votre part.Commencez à en savoir plus
systemd
ici:De Debian et ailleurs et etc et etc .
Pages de manuel pour commencer:
man systemd.unit
- À propos des fichiers d'unité en généralman systemd.service
- À propos des fichiers d'unité de service, par exemple les démons et les programmes à exécution unique.man systemctl
- Interface utilisateur en ligne de commandeman journalctl
- Afficher le journal de ce que systemd a faitman systemd
- À propos du programme init lui-mêmeIl existe également divers autres types de fichiers unitaires, par exemple
man systemd.target
- pour les groupes et les cibles synchronisées communes.Une fois que vous avez digéré les bases ci-dessus, puis explorez avec
man -k systemd
pour trouver d'autres pages de manuel connexes.Quoi que vous fassiez, sur Debian, n'utilisez aucun de ces outils :
update-rc.d
--installer et supprimer les liens de script d'initialisation de style System-Vsysv-rc-conf
- Configuration au niveau de l'exécution pour SysV comme les liens de script initrunlevel
- Imprimer le niveau d'exécution SysV précédent et actuelBUM
- B oot U p M anager - un éditeur graphique de niveau d'exécutionsystemadm
- Frontend graphique pour le système systemd et le gestionnaire de services(BTW, l'auteur m'a dit par email qu'il était trop cassé maintenant.)
UN EXEMPLE:
Ce fichier d'unité démarre le démon NoIP.com lorsque je démarre et l'arrête lorsque je ferme.
Ce démon, de temps en temps, envoie mon adresse IP actuelle de mettre à jour mon DDNS ( D ynamic DNS ( D OMAINE N amme S erver)) base de données du fournisseur, gardant ainsi mon nom de domaine pointant sur mon ordinateur partout où il se rend à.
Les fichiers de cet appareil se trouvent sur mon système dans ce fichier de paramètres:
/etc/systemd/system/noip2.service
Voici le contenu du fichier d'unité:
Exécutez manuellement un fichier d'unité (par exemple pour les tests):
$ sudo systemctl start noip2
.$ sudo systemctl restart noip2
.$ sudo systemctl stop noip2
.Configurez le système pour exécuter automatiquement un fichier d'unité lors du démarrage ou de l'arrêt:
$ sudo systemctl enable noip2
.$ sudo systemctl disable noip2
.Afficher le journal
$ sudo journalctl -u noip2
la source