En bash, j'ai créé d'un simple démon d'exécuter des commandes lorsque mes changements de connexion Internet:processus de contrôle Démarré par Bash Daemon
#!/bin/bash
doService(){
while
do
checkTheInternetConnection
sleep 15
done
}
checkTheInternetConnection(){
if unchanged since last check
return
else
execute someCommand
fi
}
someCommand(){
do something
}
doService
ce qui a travaillé assez bien pour ce que je besoin de le faire.
Le seul problème est que comme une partie de ma « unecommandequelconque » et « checkTheInternetConnection » j'utiliser d'autres utilitaires intégrés comme arp, awk, grep, tête, etc.
Cependant, 99% du temps , Je vais juste besoin d'arp.
Première question: Est-il nécessaire de garder les autres commandes ouvertes? Y at-il un moyen de tuer une commande une fois que j'ai déjà traité sa sortie?
Une autre question: (À UN NOUVEAU PROPOSÉE POST) J'ai un enfer d'un temps à essayer d'écrire une fonction « tuer tous les autres processus de démon ». Je ne veux jamais plus d'un démon en même temps. Aucune suggestion? Voilà ce que j'ai:
otherprocess=`ps ux | awk '/BashScriptName/ && !/awk/ {print $2}'| grep -Ev $$`
WriteLogLine "Checking for running daemons."
if [ "$otherprocess" != "" ]; then
WriteLogLine "There are other daemons running, killing all others."
VAR=`echo "$otherprocess" |grep -Ev $$| sed 's/^/kill /'`
`$VAR`
else
WriteLogLine "There are no daemons running."
fi
Il serait peut-être préférable de séparer la deuxième question en un nouveau message. – dpb