it-swarm.com.de

"(CRON) info (Kein MTA installiert, Ausgabe wird verworfen)" Fehler im Syslog

Ich habe eine Neuinstallation von Ubuntu 12.04.1 LTS und eine Reihe von Servern.

Ich habe auf diesen Servern keine cron-Jobs hinzugefügt oder meine crontab bearbeitet. Zum Zeitpunkt des Spikes erhalte ich jedoch ungefähr zur gleichen Zeit für jeden Computer einen CPU-Spitzenwert von 75% und die folgenden Informationen in meinem Syslog:

CRON[8380]: (CRON) info (No MTA installed, discarding output)

Ich habe Mono-Complete installiert und betreibe einen Service-Stack-Webserver.

Wie kann ich das am besten verhindern? Ich möchte in der Lage sein, die CPU-Spitze zu entfernen.

193
sungiant

Linux verwendet Mail zum Senden von Benachrichtigungen an den Benutzer. Bei den meisten Linux-Distributionen ist ein Mail-Dienst (einschließlich eines MTA) installiert. Ubuntu allerdings nicht.

Sie können einen Mail-Dienst, z. B. Postfix, installieren, um dieses Problem zu beheben.

Sudo apt-get install postfix

Oder du kannst es ignorieren. Ich glaube nicht, dass die Unfähigkeit von cron, Nachrichten zu senden, irgendetwas mit dem CPU-Anstieg zu tun hat (der mit dem zugrunde liegenden Job zusammenhängt, den cron ausführt). Es ist möglicherweise am sichersten, einen MTA zu installieren und dann die Nachrichten durchzulesen (mutt ist ein guter System-Mail-Reader).

170
martin

Dies geschieht, weil Ihre Cron-Jobs eine Ausgabe erzeugen und der Cron-Daemon dann versucht, diese Ausgabe per E-Mail an Sie (d. H. Root) zu senden. Wenn Sie diese Ausgabe nicht benötigen, können Sie sie am einfachsten auf der crontab löschen:

Sudo crontab -e

und füge >/dev/null 2>&1 zu jedem Job hinzu:

* * * * * yourCommand >/dev/null 2>&1
78
rob

In meinem Fall deutete die Nachricht auf ein Berechtigungsproblem mit dem Bash-Skript hin, aber ich konnte es erst sehen, nachdem ich einen MTA installiert hatte.

Wie vorgeschlagen lief ich:

Sudo aptitude install postfix

Ich habe während des Setups und nach dem erneuten Ausführen des Cron-Jobs "Lokal" ausgewählt:

Sudo tail -f /var/mail/<user>

In meinem Fall habe ich ersetzt

<user>

mit "root".

Ich konnte dann die Fehlerausgabe in Bezug auf Berechtigungen sehen.

53
Martin Carstens

Wie bereits in einer früheren Antwort erwähnt, geschieht dies, weil Ihre Cron-Jobs eine Ausgabe erzeugen. Anschließend versucht der Cron-Daemon, diese Ausgabe per E-Mail an Sie zu senden. Wenn Sie keinen MTA installieren möchten (oder können), die Ausgabe jedoch anzeigen möchten, können Sie die Ausgabe des Cron-Jobs in eine Protokolldatei umleiten. Bearbeiten Sie Ihre crontab-Datei mit

crontab -e

(Verwenden Sie Sudo, wenn das Problem bei der crontab von root liegt.) Fügen Sie nach jedem Befehl >> /some/log/file 2>&1 hinzu, wie folgt:

0 3 * * * cmd  >> / some/log/file 2> & 1

Befinden sich mehrere Befehle in einer Zeile, die durch ;, && oder || getrennt sind, sollten Sie für jeden Befehl wie folgt vorgehen:

0 3 * * * cmd1  >> / some/log/file 2> & 1; cmd2  >> / some/log/file 2> & 1

oder gruppiere sie wie folgt:

0 3 * * * (cmd1cmd2)  >> / some/log/file 2> & 1

Wenn Sie stdout ignorieren und nur stderr erfassen möchten, verwenden Sie stattdessen > /dev/null 2>> /some/log/file. Platzieren Sie die Protokolldatei an einem beliebigen Ort - in Ihrem Home-Verzeichnis, /var/log oder sogar /tmp, wenn Sie sicher sind, dass Sie sie nicht aufbewahren müssen.

Schauen Sie sich dann die Protokolldatei an, nachdem der Job ausgeführt wurde.

31
G-Man

In crontab füge dies als erste Zeile hinzu:

MAILTO=""

Dadurch wird verhindert, dass cron versucht, eine E-Mail zu senden.

28
88weighed

Wenn Sie keinen MTA installieren möchten (den ich derzeit nicht benötige), können Sie die Ergebnisse des Cron-Jobs in eine Protokolldatei umleiten.

Sudo crontab -e

dann mit deinem cron job würde das so aussehen.

0 3 * * * /cmd/to/run >> /var/log/somelogfile.log

dann können Sie einfach das Protokoll verfolgen und sehen, was passiert ist

Sudo tail -f -n 50 /var/log/somelogfile.log

Dies ist, was ich auf jedem Server getan habe, auf dem ich diese Nachricht im Syslog sehe

22

Dies ist eine alte Frage, aber es gibt eine zusätzliche Antwort, die unter bestimmten Umständen nützlich ist.

Leiten Sie die Ausgabe Ihres Cron-Befehls durch logger, damit sie im Syslog landen.

Es ist etwas einfacher als die Installation von Postfix und fügt diese Ausgabe zusammen mit Ihren anderen Protokollen in Syslog ein. Dieser Befehl erfasst stdout AND stderr, sodass die Meldung No MTA installed nicht angezeigt wird und Ihre gesamte Ausgabe im Syslog angezeigt wird.

Beispiel für einen Cron-Eintrag:

0 3 * * * (cmd1;  cmd2) 2>&1 | logger -t mycmd

Sie können Protokolle mit Ihrem Tag mycmd anzeigen, indem Sie Folgendes verwenden:

grep 'mycmd' /var/log/syslog
14
Michael Hunter

Ein Nebeneffekt des Hinzufügens von /dev/null 2>&1 zum Befehl cron job besteht darin, dass sowohl STDERR als auch STDOUT (Standardfehler sowie Ausgabe) verworfen werden. Dies funktioniert gut, wenn Sie keine E-Mails von cron möchten. Wenn Sie jedoch Ihre Fehler per E-Mail erhalten möchten, verwenden Sie stattdessen >/dev/null. Lesen Sie diesen Blog-Beitrag für weitere Erläuterungen .

Sie müssen jedoch noch einen MTA (Mail Transfer Agent) installieren, um die Fehler-E-Mails zu senden. Postfix ist einfach zu installieren mit: Sudo apt-get install postfix

10
paneer_tikka
  1. Installieren Sie zunächst postfix, um das Problem zu beheben

    Sudo apt-get install postfix
    
  2. Unter Ubuntu können Sie die Datei crontab bearbeiten

    Sudo vim /etc/crontab
    
  3. Achtung , editiere die Top-Datei , keinen Code in der ersten Zeile , und gib ein

    MAILTO=root // current system user
    
  4. Wenn cron eine Aufgabe ausführt, erhalten Sie eine E-Mail

    mail
    
2
shahramlu

Ich hatte dieses Problem mit den Kitematic Docker-Tools.
Gehen Sie zum Magento-Container und klicken Sie auf exe.

Dann renne

apt-get update

Dies ist der Fall, wenn Sie versuchen, Magento auf kitematic zum Laufen zu bringen. Das Protokoll zeigt diesen Fehler auf der virtuellen Maschine an:

brauche Update.

Tut mir leid, wenn Sie sich dadurch verlaufen haben, aber so funktioniert es. Sie verlieren sich immer wieder, aber lesen Sie einfach darüber und eines Tages werden die Teile zusammenkommen. Sei geduldig.

1
Ali Bayati

Sie können die Variable MAILTO=”” am Anfang Ihrer crontab -Datei festlegen. Dadurch wird auch die E-Mail-Benachrichtigung deaktiviert. Bearbeiten/Öffnen Sie Ihre Cron-Jobs:

$ crontab -e

Geben Sie oben in der Datei Folgendes ein:

MAILTO=""

https://www.cyberciti.biz/faq/disable-the-mail-alert-by-crontab-command/

1