web-dev-qa-db-fra.com

Impossible de faire fonctionner cron sur Amazon EC2?

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.

17
turtle

Cron peut être exécuté sur un serveur Linux basé sur Amazon, comme sur n'importe quel autre serveur Linux.

  1. Connectez-vous à la console avec SSH.
  2. Courir crontab -e sur la ligne de commande.
  3. Vous êtes maintenant dans un éditeur vi de la crontab de l'utilisateur actuel (qui est par défaut l'utilisateur de la console, avec les droits root)
  4. Pour tester cron, ajoutez la ligne suivante: * * * * * /usr/bin/uptime > /tmp/uptime
  5. Maintenant, enregistrez le fichier et quittez vi (appuyez sur Echap et entrez: wq).
  6. Après une minute ou deux, vérifiez que le fichier de disponibilité a été créé dans/tmp (cat /tmp/uptime).
  7. Comparez-le avec la disponibilité actuelle du système en tapant la commande 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!

33
Druvision

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/ .

23
eipark

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:

  1. touch /home/ubuntu/crontest.log pour créer un fichier journal
  2. Sudo vim /etc/crontab qui édite le crontab à l'échelle du système
  3. ajoutez votre propre tâche cron sur l'avant-dernière ligne en utilisant l'utilisateur root, comme * * * * * 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 1
  4. Vérifiez qu'il fonctionne en attendant 1 minute, puis cat /home/ubuntu/crontest.log pour voir la sortie du travail cron
5
enharmonic

N'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/

3
Paul

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.

1
MikeL

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.

0
KAUSTUBH PANDEY

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 
0
Eran Chetzroni