Gebruik drush cron vanuit crontab

Posted by: 
Dominique De Cooman

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