J'exécute une demi-douzaine de tâches cron différentes depuis mon hébergement sur Hostmonster.com. Quand un cronjob a été exécuté, je reçois un email avec la sortie du script.
L'e-mail est au format:
De: Cron Daemon Objet: Cron/ramdisk/bin/php5 -c /home5/username/scheduled/optimize_mysql.bash
Le problème est que le sujet de l'e-mail rend très difficile la lecture du cronjob auquel l'e-mail se rapporte.
Existe-t-il un moyen de modifier le sujet d'un e-mail cronjob afin qu'il soit plus facile à lire?
Par exemple:
De: Cron Daemon Objet: Optimiser la base de données MySQL
Sur mes systèmes (la plupart de Debian), toutes les sorties, à partir d'un script/programme appelé comme entrée crontab, sont envoyées par e-mail au account@localhost
qui a initié le cron. Ces e-mails ont un sujet comme le vôtre.
Si vous souhaitez recevoir un e-mail, écrivez un script qui n'a pas de sortie à lui seul. Mais placez toutes les sorties dans un fichier texte.
Et avec
mail -s 'your subject' adress@where < textfile
vous le recevez comme vous le souhaitez.
Ou utilisez la commande sh noop (:)
0 9-17 * * 1-5 : Queue Summary; PATH=/usr/sbin qshape
Le sujet semble toujours kludgey, mais au moins il est descriptif et ne nécessite aucun script superflu.
Envoyez directement la sortie de votre tâche cron à votre courrier électronique, puis vous pourrez remplir la ligne d'objet. la syntaxe 2>&1
envoie toute sortie d'erreur qui autrement disparaîtrait.
mycmd 2>&1 | mail -s "mycmd output" myname
Prenez en charge la responsabilité de crond pour l'envoi de la sortie de commande (ou non s'il n'y en a pas) en canalisant la sortie et stderr dans 'mailx -E'. Par exemple:
0 * * * * your-command 2>&1 | mailx -E -s "Descriptive Subject" $LOGNAME
L'option "-E" de Mailx est agréable car, tout comme crond lui-même, il n'enverra pas de courrier s'il n'y a aucune sortie à envoyer.
Une autre solution consiste à écrire un script Shell avec la ligne d'objet que vous souhaitez appeler la bonne commande. Dans votre exemple, ce serait:
#Optimize_MySQL_Database.sh
/ramdisk/bin/php5 -c /home5/username/scheduled/optimize_mysql.bash
Vous pouvez inclure votre répertoire bin dans le chemin d'accès en le définissant dans le fichier crontab.
ESSAYEZ CECI - Dans la ligne de commande, implémentez le code suivant ---
/usr/local/bin/php -q /path /hostname/foldername/Page-You-want-to-execute \
| **mail -s "*SUBJECT*" [email protected].**