Cron non esegue gli script? Ecco la soluzione
Se cron non esegue correttamente gli script su Ubuntu, se i vostri backup di Plone, Zope, Mysql non vengono avviati. Ecco la soluzione.
Problema: Cron non esegue gli script da voi indicati.
Può capitare a volte (o spesso, se siete particolarmente sfortunati) che non vengano eseguiti correttamente gli script in cron sulla vostra macchina Ubuntu server o desktop. In particolare vi mostrerò un paio di script in cui siamo incappati io e il mio collega Matteo Sorba.
Il primo riguarda il dump di un database mysql, il secondo il backup di un'istanza Zope.
Svolgimento: gli script incriminati
Ecco le righe del file mysqlbackup contenuto in /etc/cron.d
38 3 * * * root /usr/bin/mysqldump --opt --all-databases > /var/lib/mysql/mysql-all-dump.sql -u root -p'mypassword' && gzip --rsyncab le /var/lib/mysql/mysql-all-dump.sql
Lo script dovrebbe creare un dump di tutti i database e poi comprimere il file con gzip. Purtroppo questo script non veniva avviato affatto da cron, mentre lanciando l'istruzione da console "a mano" tutto sembrava funzionare correttamente.
Il secodo script utilizza Repozo ed è chiamato repozobackup nella dir /etc/cron.d
18 /2 * * * root /opt/zope/instance/bin/backup &> /var/log/repozo/backup.log
Soluzione: Ubuntu dash e bash
La soluzione per il caso esposto è consistita nel cambiare la shell di default di Ubuntu che è dash, con la ben più nota bash. Per verificare che abbiate queste impostazioni e per risolvere il problema digitate:
$ ls -l /bin/sh lrwxrwxrwx 1 root root 4 2010-05-05 16:27 /bin/sh -> dash $ sudo rm /bin/sh $ sudo ln -s /bin/bash /bin/sh $ ls /bin/sh -l lrwxrwxrwx 1 root root 9 2010-07-14 16:35 /bin/sh -> /bin/bash
Ora non resta che riavviare cron e avere tutto funzionante
$ sudo service cron restart $ sudo service cron status cron start/running, process 19268
Buon cron a tutti.
grazie