Comment faire pour exécuter un Script Shell avant l'arrêt sur CentOS
Je veux envoyer un e-mail lorsque le système est en train de l'arrêt à un e-mail ID. J'ai CentOS 6.4. Ci-dessous mon Script.
cat /ect/init.d/sendshtmail
#!/bin/bash
EMAIL="[email protected]"
SHUTDOWNSUBJECT="["`hostname`"] - System Shutdown"
SHUTDOWNBODY="This is an automated message to notify you that "`hostname`" is shutting down.
LOCKFILE=/var/lock/subsys/SystemEmail
echo "${SHUTDOWNBODY}" | mutt -s "${SHUTDOWNSUBJECT}" ${EMAIL}
Il a l'autorisation appropriée. Tout en exécutant manuellement ça fonctionne parfaitement. J'ai juste un lien symbolique dans /etc/rc0.d/dossier. Par l'émission de commande ci-dessous.
ln -s /etc/init.d/sendshtmail /etc/rc0.d/K00sendshtmail
Mais le script n'est pas l'envoi de mail lors de l'arrêt. Merci à l'Avance.
OriginalL'auteur linuxnewbee | 2013-09-19
Vous devez vous connecter pour publier un commentaire.
Essayer de définir les autorisations d'exécutables pour votre script. Parfois, vous avez besoin de le faire pour l'activer.
Également essayer d'utiliser des chemins absolus pour votre commande, en citant les autres variables.
Une autre tentative est de passer en utilisateur de votre compte courant par exemple
Veuillez voir le jour. Et vous pouvez également déboguer votre script en ajoutant
set -x
au début de l'année. Vous devriez voir au moins les lignes exécutées dans le script.Encore pas de chance..
Avec un set-x au début du script (après le #! l'en-tête), vous devriez avoir vu les lignes du script en cours d'montré avant qu'ils ne soient exécutés. Si non, votre script n'est probablement pas en cours d'exécution à tous (sauf stderr est supprimée par le système rc qui est peu probable). S'il fonctionne, mais encore l'envoi ne fonctionne pas, veuillez mettre à jour le thread avec ces messages de débogage vous voyez donc, les gens pourraient donner des idées à ce sujet.
pouvez-vous définir le CHEMIN d'accès au début du script, plutôt que d'utiliser des chemins absolus pour les commandes? @konsolebox
OriginalL'auteur konsolebox
Placer votre script shell dans /etc/init.d avec l'exécutable de l'autorisation et symlink nom doit commencer par K##. Si vous voulez exécuter votre script à la première place immédiatement après l'arrêt puis le nommer avec K00scriptname. Script a commencé à volonté K sera exécuté en premier fondé sur l'ordre croissant puis le script avec S.
ln -s /etc/init.d/script /etc/rc0.d/K00scriptname
De la commande d'arrêt enverra le signal d'arrêt de script, votre script (K00scriptname) doit avoir la fonction d'arrêt comme exemple
Plus important, K00scriptname s'exécute uniquement si il y aurait de verrouillage de fichiers présents dans /var/lock/subsys dossier, afin de faire "touch /var/lock/subsys/nomduscript", puis la case en faisant de l'arrêt.
OriginalL'auteur Mahattam
Le lien nom doit commencer par un S - pour Commencer (K pour Kill)
Les deux chiffres indique que l'ordre d'exécution de votre script, le plus petit numéro de être exécuter en premier.
OriginalL'auteur suhas