J'ai un robot de scrapy sur une application élastique beanstalk que je peux courir par SSH comme ceci:Cronjob sur Elastic Beanstalk ne fonctionne pas
source /opt/python/run/venv/bin/activate
source /opt/python/current/env
cd /opt/python/current/app
scrapy crawl spidername
Je veux configurer un cronjob pour exécuter ceci pour moi. J'ai donc suivi les suggestions here.
Mon fichier setup.config
ressemble à ceci:
container_commands:
01_cron_hemnet:
command: "cat .ebextensions/spider_cron.txt > /etc/cron.d/crawl_spidername && chmod 644 /etc/cron.d/crawl_spidername"
leader_only: true
Mon fichier spider_cron.txt
ressemble à ceci:
# The newline at the end of this file is extremely important. Cron won't run without it.
* * * * * root sh /opt/python/current/app/runcrawler.sh &>/tmp/mycommand.log
# There is a newline here.
Mon fichier runcrawler.sh
est situé à /opt/python/current/app/runcrawler.sh
et ressemble à ce
#!/bin/bash
cd /opt/python/current/app/
PATH=$PATH:/usr/local/bin
export PATH
scrapy crawl spidername
Je peux naviguer à /etc/cron.d/
et voir que crawl_spidername
existe là. Mais quand je cours crontab -l
ou crontab -u root -l
il dit qu'aucun crontab n'existe.
Je n'obtiens aucune erreur de journal, aucune erreur de déploiement et le fichier /tmp/mycommand.log
que j'essaie de sortir du fichier cron n'est jamais créé. On dirait que le cronjob n'est jamais commencé.
Des idées?
Vous êtes sûr que votre code est sans erreur? –
Pas d'erreurs dans le journal, pas d'erreurs de déploiement, et je peux exécuter "scrapy crawl spidername" par SSH sans erreurs. C'est juste que le cronjob ne fonctionne pas, ou peut-être qu'il fonctionne mais la commande ne fait rien (?). Est-il correct d'écrire la commande * * * * * nom d'utilisateur, comme je le fais? –