J'ai un script shell Linux qui, lorsqu'il est exécuté à partir de la ligne de commande fonctionne parfaitement, mais lorsqu'il est programmé pour fonctionner via crontab, il ne donne pas les résultats souhaités.Le script shell ne fonctionne pas correctement
Le script est assez simple, il vérifie si mysql-proxy est en cours d'exécution ou pas en vérifiant si son pid est trouvé en utilisant la commande pidof. Si elle est désactivée, elle tente de démarrer le proxy.
# Check if mysql proxy is off
# if found off, attempt to start it
if pidof mysql-proxy
then
echo "Proxy running."
else
echo "Proxy off ... attempting to restart"
/usr/local/mysql-proxy/bin/mysql-proxy -P 172.20.10.196:3306 --daemon --proxy-backend-addresses=172.20.10.194 --proxy-backend-addresses=172.20.10.195
if pidof mysql-proxy
then
echo "Proxy started"
else
echo "Proxy restar failed"
fi
fi
echo "==============================================="
Le script est enregistré dans un fichier check-sql-proxy.sh et dispose des autorisations définies à . Quand j'exécute le script depuis la ligne de commande (sh check-sql-proxy.sh), il donne la sortie désirée.
4066
Proxy running.
===============================================
Le script est également programmé pour exécuter toutes les 5 minutes à crontab comme
*/5 * * * * bash /root/auto-restart-mysql-proxy.sh > /dev/sql-proxy-restart-log.log
Cependant, quand je vois le fichier sql-proxy-restart-log.log contient la sortie:
Proxy off ... attempting to restart
Proxy restar failed
===============================================
Il semble que pidof commande ne retourne pas le pid de l'application en cours d'exécution qui apporte le flux de l'écriture dans un état autre.
Je n'arrive pas à comprendre comment résoudre ce problème car lorsque je lance le script manuellement, cela fonctionne correctement. Est-ce que quelqu'un peut aider ce qui me manque en ce qui concerne les autorisations ou les paramètres?
Merci d'avance. Mudasser
Les autorisations ne doivent pas être définies sur 777; Cela permet à n'importe qui d'éditer votre commande à tout moment.Pour faire tout ce que vous pouvez faire. Comme 'rm -fr/home/you'. –