J'ai créé un travail cron dans ma console sous Ubuntu 12.04) en utilisant crontab -e
:
10 09 * * * /home/ram-pc/Desktop/bala/personal/dump.sh
Mais ce n'est pas en cours d'exécution. Lorsque je sauvegarde, il est installé correctement sans erreur, puis lorsque je le visualise avec, crontab -l
il affiche ma crontab, mais il ne fonctionne pas à temps.
Ma dump.sh
commande contient la sauvegarde de la base de données et si j'essaie de l'exécuter séparément, ce .sh
fichier s'exécute correctement.
Quelqu'un peut-il me dire quel est le problème?
Le contenu du dump.sh
code est:
cd
cd Desktop/bala/personal
mkdir $(date +%Y%m%d)
cd $(date +%Y%m%d)
mysqldump -u root -p*** --all-databases |gzip -9 >database-$(date +%Y%m%d).sql.gz
dampish
fichier?Réponses:
Ceci est votre travail cron et ça a l'air bien:
Mis à feu tous les jours à 9h10. Mais en regardant votre script montre le problème:
Lorsqu'un travail cron est exécuté, il ne s'exécute pas de la même manière que vous, en tant qu'utilisateur, les chemins d'accès aux fichiers binaires ne seront pas chargés. Donc, le script n'a aucune idée où
mysqldump
est. Donc, vous devriez courirwhich
pour comprendre ce que le chemin complet est comme ceci:Et la sortie devrait être quelque chose comme ça; en utilisant un exemple générique ici:
En outre, vous devez ajouter une désignation de script en tant que première ligne du fichier pour que le shell sache quel environnement doit l'exécuter. Aussi le
cd
et suivantscd Desktop/bala/personal
peuvent être simplifiés àcd ~/Desktop/bala/personal
. Ainsi, le tout nouveau script ressemblerait à quelque chose comme ceci:Essayez d’exécuter cela vous-même - à partir de la ligne de commande - pour voir si cela fonctionne. Et si c'est le cas, exécutez-le à nouveau depuis le cron.
la source
Configurez le travail cron comme indiqué ci-dessous, de manière à détecter les erreurs lors de l'exécution du script, ainsi que votre nom d'utilisateur, par exemple: charm_quark.
Vérifiez également votre permission et vos environnements
Avant d'utiliser un script personnalisé, assurez-vous qu'il est exécutable et testez-le avec le jeu limité de variables d'environnement défini par cron. Pour répliquer l'environnement qui serait utilisé pour exécuter l'entrée cron ci-dessus, utilisez:
Référence: Chapitre 12. Configuration et réglage
Étapes de dépannage
Videz le fichier dump.sh et remplacez-le par un écho
#!/usr/bin/env bash echo "this is a test" >> /home/ram-pc/Desktop/bala/personal/test.log
Vérifiez la permission du fichier .sh et changez-le.
chmod 777 /home/ram-pc/Desktop/bala/personal/dump.sh
Veuillez mettre à jour crontab pour
* * * * * charm_quark /home/ram-pc/Desktop/bala/personal/dump.sh >> /home/ram-pc/Desktop/bala/personal/cron.log
la source
777
les autorisations ne sont pas bonnes. Cela devrait au moins755
permettre à l'utilisateur de lire, écrire et exécuter, mais permettre au groupe et aux autres utilisateurs de ne lire et exécuter. Et s’il s’agit du travail cron de l’utilisateur, cela pourrait (et devrait être)700
ainsi empêché de lire les informations d’identité MySQL.