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.
Prego
Birra
Non và! ;(
Il codice sul crontab è il seguente:
21 11 13 4 * wget http://www.miodominio.com/prova_cron.php > /dev/null/ &
mentre il codice sulla pagina "prova_cron.php" è:
mail('miamail@miodominio.com', 'Prova crontab', 'Se leggo questa mail vuol dire che funziona');
qualcuno ha consigli?
Grazie a tutti in anticipo.
Errori nel file cron.
Con wget scarichi semplicemente lo script ma non lo esegui.
Wget non è un browser, per eseguire uno script devi usare un interprete.
Inoltre manca il nome utente con cui esegui il comando.
Probabilmente devi scrivere qualcosa del genere:
10 10 * * * nobody /usr/bin/php file.php
Fai qualche tentativo.
Grazieeeee!!!
Luca
grazie