Gebruik drush cron vanuit crontab
On:
woensdag, December 8, 2010 - 09:29
De vorige blog post vermelde reeds dat drush cron ook kan worden opgeroepen vanuit crontab. Hoewel dit nogal straightforward leek, blijkt het toch voor enkele problemen te zorgen.
Wat je moet doen om drush te laten lopen vanuit crontab is:
$ crontab -e * * * * * drush -r /path/to/drupal
Zonder gevolg... Ik probeerde ook om het volledige adres op te geven naar drush install
$ crontab -e * * * * * /usr/local/bin/drush -r /path/to/drupal
...maar ook dit werkte niet voor mij.
Onderstaand is de code om de output van je commando te zien
$ tail -f /var/mail/root
En dit gaf mij:
Command core-cron needs a higher bootstrap level to run - you will [error]
need invoke drush from a more functional Drupal environment to run
this command.
The drush command 'cron' could not be executed. [error]
Drush was not able to start (bootstrap) the Drupal database. [error]
Hint: This error often occurs when Drush is trying to bootstrap a
site that has not been installed or does not have a configured
database.
Waarom? Blijkt dat de omgevingsvariablen niet dezelfde zijn wanneer het commando wordt opgeroepen vanuit terminal als vanuit crontab.
Probeer nu dit:
$ crontab -e * * * * * env > /tmp/cronenv.log
Dit zal de env vars uitbrengen wanneer crontab het commando zal uitvoeren.
In de termina breng je dan de normal env vars in:
$ env > /tmp/bashenv.log
Differencieer nu de beiden:
$ diff /tmp/bashenv.log /tmp/cronenv.log
In mijn geval werkte het om PATH te kopiëren naar het hoofd van crontab:
$ crontab -e PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin 0 * * * * /usr/bin/drush -r /path/to/drupal cron
Reactie toevoegen