J'essaie d'exécuter mon travail cron avec mon utilisateur (utilisateur).
Le travail cron n'a pas de problème d'installation et le script fonctionne si je l'exécute simplement. Il est exécutable et j'ai le drapeau bash
pour indiquer qu'il s'agit d'un script bash.
J'ai créé le script en exécutant crontab -e
connecté en tant que user
.
À des fins de test, je lancerai ce script toutes les minutes, mais le changerai finalement en 10 minutes.
mon travail cronjob doit exécuter mon script qui envoie une requête ping au serveur googles toutes les 10 minutes et en crée un journal afin que je puisse savoir si mes appareils perdent jamais la connexion Internet pour suivre un problème. J'ai un autre script qui déplace le fichier journal tous les jours, puis le consigne avec une date. Ce script doit ensuite créer un autre fichier journal. actuellement, il ne s'agit pas de créer un fichier avec ce fichier cronjob ou de le mettre à jour une fois le script exécuté.
mon cronjob
*/1 * * * * bash /home/user/ping_scripts/ping-test.sh
mon script
#!/bin/bash
if [ "$(id -u)" != "0" ]; then
exec Sudo "$0" "$@"
fi
if [ ! -e /var/log/ping.log ];then
touch /var/log/ping.log
fi
ping -q -c5 google.com > /dev/null
if [ $? -eq 0 ];then
echo -e "[$(date)] \t\t google ping successful" >> /var/log/ping.log
else
echo -e "[$(date)] \t\t google ping failed" >> /var/log/ping.log
fi
J'ai lu quelques autres solutions sur, mais non avaient corrigé mon erreur.
(Je ne peux pas décrire en quoi mon message est différent d'une simple question, une question à laquelle je ne trouvais pas de réponse en allant Pourquoi les scripts crontab ne fonctionnent-ils pas? qui correspond à des erreurs uniques à cron et la solution n'était pas vraiment propre à cron en particulier, mais plutôt à mon script. Pour obtenir la réponse, veuillez simplement vous reporter à la réponse cochée ci-dessous.)
Mon problème était que mon utilisateur n'était pas un sudoer
.
Ce problème peut être résolu en ajoutant votre utilisateur au fichier /etc/sudoers
ou en ajoutant le travail cron sous le nom root
.
Sudo su
crontab -e
et y placer le travail cron
Essayez de donner le travail comme
* 1 * * * cd /home/user/ping_scripts/ && ./ping-test.sh
et assurez-vous également que le script est exécutable