Bonjour les généreux informaticiens! J'ai donc un objet Plist du launchd qui appelle le script shell ci-dessous toutes les 30 secondes. Il vérifie si un programme est en cours d'exécution et si ce n'est pas le cas, il le redémarre. Ou du moins c'est ce que c'est censé faire.Bug Script Variable Bug?
Le problème est que même lorsque le processus a été supprimé, le script shell indique que le processus est toujours en cours d'exécution. Je pense que c'est parce que d'une certaine manière le booléen n'est pas réinitialisé (Ou quelque chose dans ce sens). De l'aide?
n=`ps -ef | grep Intel | grep -v grep | wc -l`
if [ $n -gt 0 ]
then
echo `date` CURRENTLY RUNNING. >> /Library/A_Intel_WATCHDOG/A_Intel_WatchLog.txt
else
echo `date` not running. ATTEMPTING RESTART... >> /Library/A_Intel_WATCHDOG/A_Intel_WatchLog.txt
cd /Library/LaunchAgents/
launchctl load com.Intel.plist
fi
EDIT 1
Il a été suggéré que l'ajout d'un argument 'Keep Alive' peut être une bonne solution à mon problème général. Des commentaires?
serait ici mon fichier plist mis à jour qui devrait garantir que mon application ne cesse de courir sans cesse:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>Label</key>
<string>com.Intel</string>
<key>OnDemand</key>
<true/>
<key>ProgramArguments</key>
<array>
<string>/Library/LaunchAgents/Contents/Intel</string>
</array>
<key>RunAtLoad</key>
<true/>
<key>KeepAlive</key>
<true/>
</dict>
</plist>
J'aimerais entendre si les gens pensent cela est correct ou non. Merci beaucoup!
qu'est-ce que 'ps -ef | grep Intel | grep -v grep | wc -l' ou 'ps -ef | grep Intel | grep -v grep | wc -l' sortie? le problème pourrait être que le processus est en quelque sorte encore là. – aularon
Vérifie si le processus Intel est en cours d'exécution :) –
désolé j'ai accidentellement envoyé, vérifiez maintenant :) – aularon