web-dev-qa-db-fra.com

Comment empêcher cron d'envoyer des emails quand il n'y a rien dans STDOUT ou STDERR?

Ubuntu 14.04lts avec Perl 5.18.2.

C'est un cas particulier où Google ne m'a pas aidé. Je ne veux pas désactiver le courrier électronique pour tous les travaux cron, j'ai environ 15 emplois dans ma crontab. J'ai besoin de voir les courriels que cron m'envoie s'il y a des erreurs.

Ce travail est un cas particulier pour lequel j'ai besoin d'une solution. J'ai un script bash dans ma crontab qui appelle un script Perl configuré pour vérifier les courriels toutes les 5 minutes. (Il m'est impossible de configurer un MTA complet.) S'il n'y a pas d'e-mail, le script ne renvoie rien à STDOUT ou à STDERR, mais cron m'envoie toujours un e-mail vide avec le chemin d'accès complet du script bash dans le sujet.

  1. Je veux que cron et le script Perl m'envoient un courrier électronique si le script Perl trouve un courrier électronique et le traite, y compris s'il y a des erreurs.
  2. Je ne veux pas que cron m'envoie un email vide s'il n'y a pas de sortie du script Perl car aucun email n'a été trouvé. Le script s'exécute toutes les 5 minutes.

Quelqu'un a des idées?

EDIT: confirmé. C'était un newline errant qui était mon problème. Problème résolu. Cron n'envoie pas d'email s'il n'y a pas de sortie. Je vous remercie! Votre commentaire a aidé.

4
Bulrush

Il s’agissait d’une nouvelle ligne perdue provoquant un e-mail vierge toutes les 5 minutes.

Cron n'envoie un courrier électronique que si l'exécution du programme/travail cron a une sortie. Ma sortie était une nouvelle ligne que je ne pouvais bien sûr pas voir dans Alpine, mais elle était là. J'ai trouvé la nouvelle ligne imprimée par mon programme et je l'ai supprimée.

Maintenant, je conçois que mes programmes cron ne génèrent jamais rien à moins de passer outre la vérification des paramètres.

2
Bulrush