J'ai passé deux jours à essayer de comprendre pourquoi je ne peux pas faire fonctionner cron sur mon instance Ubuntu EC2. J'ai lu la documentation . Quelqu'un peut-il aider? Tout ce que je veux, c'est avoir un travail cron.
J'utilise une simple commande wget pour tester cron. J'ai vérifié que cela fonctionne manuellement depuis la ligne de commande:
/usr/bin/wget -O /home/ubuntu/backups/testfile http://www.nytimes.com/
Mon fichier crontab ressemble à ceci:
02 * * * * /usr/bin/wget -O /home/ubuntu/backups/testfile http://www.nytimes.com/
J'ai des espaces simples entre les commandes et j'ai une ligne vierge sous la commande. J'ai également essayé d'exécuter cette commande à partir du niveau système Sudo crontab -e
. Ça ne marche toujours pas.
Le démon cron est en cours d'exécution:
ps aux | grep crond
ubuntu 2526 0.0 0.1 8096 928 pts/4 S+ 10:37 0:00 grep crond
Le cronjob semble fonctionner:
$ crontab -l
02 * * * * /usr/bin/wget -O /home/ubuntu/backups/testfile http://www.nytimes.com/
Quelqu'un a-t-il des conseils ou des solutions possibles?
Merci pour votre temps.
Cron peut être exécuté sur un serveur Linux basé sur Amazon, comme sur n'importe quel autre serveur Linux.
crontab -e
sur la ligne de commande.* * * * * /usr/bin/uptime > /tmp/uptime
cat /tmp/uptime
).uptime
sur la ligne de commande.Le scénario ci-dessus a fonctionné avec succès sur un serveur avec Amazon Linux O/S installé, mais il devrait également fonctionner sur d'autres boîtes Linux. Cela modifie la crontab de l'utilisateur actuel, sans toucher aux crontabs du système et ne nécessite pas l'utilisateur à l'intérieur de l'entrée crontab, car vous exécutez des choses sous votre propre utilisateur. Plus simple et plus sûr!
Votre démon cron n'est pas en cours d'exécution. Lorsque vous exécutez ps aux | grep crond
le résultat montre que seule la commande grep est en cours d'exécution. Soyez conscient de cela chaque fois que vous exécutez ps aux | grep blah
.
Vérifiez l'état du service cron en exécutant cette commande.
Essayer:
Sudo service crond status
Informations supplémentaires ici: http://www.cyberciti.biz/faq/howto-linux-unix-start-restart-cron/ .
Sur certaines machines AWS Ubuntu EC2, les tâches cron ne peuvent pas être modifiées ou exécutées à l'aide de crontab -e
ou même Sudo crontab -e
(pour quelque raison que ce soit). J'ai pu obtenir des emplois cron en:
touch /home/ubuntu/crontest.log
pour créer un fichier journalSudo vim /etc/crontab
qui édite le crontab à l'échelle du système* * * * * root date && echo 'It works!'>> /home/ubuntu/crontest.log 2>&1
qui sauvegarde stdout et stderr dans le fichier journal que vous avez créé à l'étape 1cat /home/ubuntu/crontest.log
pour voir la sortie du travail cronN'oubliez pas de spécifier l'utilisateur pour l'exécuter. Essayez de créer un nouveau fichier dans votre /etc/cron.d
dossier nommé d'après ce que vous voulez faire comme getnytimes
et avoir le contenu de ce fichier juste:
02 * * * * root/usr/bin/wget -O/home/ubuntu/backups/testfile http://www.nytimes.com/
Dans mon cas, le travail cron fonctionnait mais le script a échoué, il était en cours d'exécution a échoué. La raison de l'échec est due au fait que j'ai utilisé un chemin relatif au lieu d'un chemin absolu dans ma ligne d'inclusion à l'intérieur du script.
L'une des raisons possibles pour lesquelles cronjob ne s'exécute pas: Assurez-vous que l'heure du serveur et l'heure de votre cronjob sont identiques. J'ai perdu beaucoup de temps à cause de cela.
fonctionnement
/usr/bin/wget -O /home/ubuntu/backups/testfile http://www.nytimes.com/
me donne une erreur
/home/ubuntu/backups/testfile: No such file or directory
est-ce votre problème? Je suppose que cron n'écrit pas cette erreur n'importe où vous pouvez rediriger stderr vers stdout et voir l'erreur comme ceci:
02 * * * * /usr/bin/wget -O /home/ubuntu/backups/testfile http://www.nytimes.com/ > /home/ubuntu/error.log 2&>1