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.
Antworten:
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.
Oder du kannst es ignorieren. Ich denke 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 zu lesen (dies
mutt
ist ein guter System-Mail-Reader).quelle
mail
bietetmailutils
(debian), wenn es eine bessere Möglichkeit gibt, Postfix zu installieren.Dies geschieht, weil Ihre Cron-Jobs eine Ausgabe erzeugen und der Cron-Daemon dann versucht, diese Ausgabe per E-Mail an Sie (dh root) zu senden. Wenn Sie diese Ausgabe nicht benötigen, können Sie sie am einfachsten auf der crontab löschen:
und
>/dev/null 2>&1
zu jedem Job hinzufügen :quelle
No MTA installed, discarding output
Meldungen im Protokoll und mein Programm hört schließlich von selbst auf zu laufen. Ich glaube, es liegt an der CPU-Spitze. Es sieht so aus, als ob alle Antworten auf diese Frage dies ignorieren.logger
. Zum BeispielyourCommand >/dev/null 2>&1 | logger -t mycmd
. Dadurch wird die Ausgabe zur sicheren Aufbewahrung in syslog abgelegt und die MTA-Beschwerden werden gestoppt.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:
Ich habe während des Setups und nach dem erneuten Ausführen des Cron-Jobs "Lokal" ausgewählt:
In meinem Fall habe ich ersetzt
mit "root".
Ich konnte dann die Fehlerausgabe in Bezug auf Berechtigungen sehen.
quelle
Wie bereits in einer früheren Antwort erwähnt, geschieht dies, weil Ihre Cron-Jobs eine Ausgabe erzeugen und der Cron-Daemon dann versucht, 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
(Verwenden Sie
sudo
diese Option, wenn das Problem bei der crontab von root liegt.) Fügen Sie nach jedem Befehl Folgendes hinzu :>> /some/log/file 2>&1
Wenn mehrere Befehle auf einer Linie sind, getrennt durch
;
,&&
oder||
, sollten Sie für jeden Befehl die oben tun, wie folgt aus :oder gruppiere sie wie folgt:
Wenn Sie stdout ignorieren und nur stderr erfassen möchten, verwenden Sie stattdessen. Platzieren Sie die Protokolldatei an einem beliebigen Ort - in Ihrem Home-Verzeichnis, oder auch dann, wenn Sie sicher sind, dass Sie sie nicht aufbewahren müssen.
> /dev/null 2>> /some/log/file
/var/log
/tmp
Schauen Sie sich dann die Protokolldatei an, nachdem der Job ausgeführt wurde.
quelle
In crontab füge dies als erste Zeile hinzu:
Dadurch wird verhindert, dass cron versucht, eine E-Mail zu senden.
quelle
#
) nachMAILTO=""
oder es wird nicht funktionierenWenn Sie keinen MTA installieren möchten (den ich derzeit nicht benötige), können Sie die Ergebnisse des Cron-Jobs in eine Protokolldatei umleiten.
dann mit deinem cron job würde das so aussehen.
dann können Sie einfach das Protokoll verfolgen und sehen, was passiert ist
Dies ist, was ich auf jedem Server getan habe, auf dem ich diese Nachricht im Syslog sehe
quelle
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 Sie die
No MTA installed
Meldung nicht sehen und Ihre gesamte Ausgabe im Syslog sehen.Beispiel für einen Cron-Eintrag:
Sie können Protokolle mit Ihrem Tag anzeigen,
mycmd
indem Sie Folgendes verwenden:quelle
Ein Nebeneffekt des Hinzufügens
/dev/null 2>&1
zum Cron-Job-Befehl ist, dass er sowohlSTDERR
undSTDOUT
(Standardfehler als auch Ausgabe) verwirft . Dies funktioniert gut, wenn Sie keine E-Mails von cron möchten. Wenn Sie jedoch möchten, dass Ihre Fehler per E-Mail an Sie gesendet werden, verwenden Sie>/dev/null
stattdessen. Lesen Sie diesen Blog-Beitrag für weitere Erklärungen .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
quelle
Installieren Sie zunächst
postfix
, um das Problem zu behebenUnter Ubuntu können Sie die
crontab
Datei bearbeitenAchtung , editiere die Top-Datei , keinen Code in der ersten Zeile , und gib ein
Wenn Sie
cron
eine Aufgabe ausführen, erhalten Sie eine E-Mailquelle
Sie können die
MAILTO=””
Variable am Anfang Ihrercrontab
Datei festlegen . Dadurch wird auch die E-Mail-Benachrichtigung deaktiviert. Bearbeiten / Öffnen Sie Ihre Cron-Jobs:Geben Sie oben in der Datei Folgendes ein:
https://www.cyberciti.biz/faq/disable-the-mail-alert-by-crontab-command/
quelle
Ich hatte dieses Problem mit den Kitematic Docker-Tools .
Gehe in den Magento Container und klicke auf
exe
.Dann renne
Dies ist der Fall, wenn Sie versuchen, Magento auf kitematic zum Laufen zu bringen. Das Protokoll zeigt diesen Fehler auf der virtuellen Maschine an:
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.
quelle