J'ai une nouvelle installation d'Ubuntu 12.04.1 LTS et un certain nombre de serveurs.
Je n'ai pas ajouté de tâches cron ni modifié ma crontab sur ces serveurs. Cependant, à peu près au même moment pour chaque machine, j'obtiens un pic de 75% de la CPU et les informations suivantes dans mon syslog au moment du pic:
CRON[8380]: (CRON) info (No MTA installed, discarding output)
Mono-complete est installé et j'utilise un serveur Web de pile de services.
Quel est le meilleur moyen pour moi d'empêcher que cela se produise? Je voudrais pouvoir enlever le pic du processeur.
Réponses:
Linux utilise la messagerie pour envoyer des notifications à l'utilisateur. Un service de messagerie (y compris un MTA) est installé sur la plupart des distributions Linux. Ubuntu ne le fait pas.
Vous pouvez installer un service de messagerie, postfix par exemple, pour résoudre ce problème.
Ou vous pouvez l'ignorer. Je ne pense pas que l'incapacité de cron d'envoyer des messages ait quelque chose à voir avec le pic du processeur (lié au travail sous-jacent que cron est en cours d'exécution). Il peut être plus sûr d’installer un MTA puis de lire les messages (
mutt
c’est un bon lecteur de courrier système).la source
mail
fourni parmailutils
(debian), s’il existe un meilleur moyen de postfix?Cela se produit parce que vos tâches cron produisent une sortie, puis le démon cron essaie de vous envoyer cette sortie par e-mail (c.-à-d. Root). Si vous n'avez pas besoin de cette sortie, le moyen le plus simple de résoudre ce problème est de le supprimer à la crontab:
et ajouter
>/dev/null 2>&1
à chaque travail:la source
No MTA installed, discarding output
messages dans le journal et mon programme cesse finalement de fonctionner tout seul. Je crois que c'est à cause de la pointe du processeur. Il semble que toute la réponse affichée pour cette question semble ignorer cela.logger
. Par exemple,yourCommand >/dev/null 2>&1 | logger -t mycmd
. Cela mettra la sortie dans syslog pour la garder en sécurité et arrêtera les plaintes du MTA.Dans mon cas, le message faisait allusion à un problème d'autorisations avec le script bash, mais je ne pouvais le voir qu'après avoir installé un MTA.
Comme suggéré j'ai couru:
J'ai choisi "Local" lors de l'installation et après avoir exécuté le travail cron à nouveau:
Dans mon cas j'ai remplacé
avec "root".
J'ai ensuite pu voir la sortie d'erreur liée aux autorisations.
la source
Comme indiqué dans une réponse précédente, cela se produit car vos tâches cron produisent une sortie, puis le démon cron tente de vous envoyer cette sortie par courrier électronique. Si vous ne voulez pas (ou ne pouvez pas) installer un MTA, mais que vous voulez voir le résultat, vous pouvez rediriger le résultat du travail cron vers un fichier journal. Editez votre fichier crontab avec
(utilisez
sudo
si le problème est avec la crontab de root) et ajoutez après chaque commande, comme ceci:>> /some/log/file 2>&1
Si plusieurs commandes sur une ligne, séparés par
;
,&&
ou||
, vous devez faire ci - dessus pour chaque commande, comme ceci:ou groupez-les, comme ceci:
Si vous voulez ignorer stdout et ne capturer que stderr, utilisez plutôt. Placez le fichier journal où vous le souhaitez - votre répertoire personnel ou même si vous êtes certain de ne pas le conserver.
> /dev/null 2>> /some/log/file
/var/log
/tmp
Ensuite, consultez le fichier journal une fois le travail exécuté.
la source
Dans crontab, ajoutez ceci en première ligne:
Cela empêchera cron d’essayer d’envoyer un courrier électronique.
la source
#
) aprèsMAILTO=""
ou si cela ne fonctionnera pasSi vous ne souhaitez pas installer un MTA (ce dont je n'ai actuellement pas besoin), vous pouvez diriger les résultats du travail cron vers un fichier journal.
alors avec votre travail cron ressemblerait à ceci.
alors vous pouvez simplement suivre le journal et voir ce qui s'est passé
C’est ce que j’ai fait sur n’importe quel serveur où je vois ce message dans syslog
la source
C'est une vieille question, mais une réponse supplémentaire est utile dans certaines circonstances.
Transférez le résultat de votre commande cron
logger
pour qu’ils se retrouvent dans le journal système.C'est un peu plus facile que d'installer postfix, et il met cette sortie dans syslog à côté de vos autres journaux. Cette commande capturera stdout ET stderr afin que vous ne voyiez pas le
No MTA installed
message et que toutes vos sorties apparaissent dans le journal système.Exemple d'entrée cron:
Vous pouvez afficher les journaux avec votre tag en
mycmd
utilisant:la source
Un effet secondaire consistant à ajouter
/dev/null 2>&1
à la commande cron, est que cela entraînera la perte à la foisSTDERR
etSTDOUT
(erreur standard, ainsi que la sortie). Cela fonctionne très bien si vous ne voulez pas d’emails de la part de cron. Mais si vous souhaitez que vos erreurs vous soient envoyées par courrier électronique, utilisez>/dev/null
plutôt. Lisez cet article pour plus d'explications .Vous devrez néanmoins installer un agent de transfert de courrier (MTA) pour envoyer les courriels d'erreur. Postfix est assez simple pour installer avec:
sudo apt-get install postfix
la source
Au début, installer
postfix
, cela peut résoudre le problèmeSi Ubuntu, vous pouvez éditer le
crontab
fichierAttention , éditez le fichier supérieur , pas de code dans la première ligne et entrez
Quand
cron
exécute une tâche, vous recevrez un emailla source
Vous pouvez définir une
MAILTO=””
variable au début de votrecrontab
fichier. Cela désactivera également les alertes par courrier électronique. Editez / ouvrez vos tâches cron:En haut du fichier, entrez:
https://www.cyberciti.biz/faq/disable-the-mail-alert-by-crontab-command/
la source
J'ai eu ce problème en utilisant les outils Kitematic Docker .
Allez dans le conteneur magento et cliquez sur
exe
.Puis courir
C'est si vous essayez de faire tourner magento sur kitematic. Le journal affichera cette erreur sur la machine virtuelle:
Désolé si cela vous a perdu, mais c'est comme ça que ça marche. Vous continuez à vous perdre, mais lisez à ce sujet et les morceaux se réuniront un jour. Sois patient.
la source