
Ich habe einige Cron-Aufgaben und manche davon hören nicht auf, mir E-Mails zu senden.
Eine Beispielaufgabe ist:
*/2 * * * * php app/konsole mautic:email:fetch > /dev/null 2>&1
(Alle Aufgaben mit diesem Problem sind Mautic-Aufgaben).
Ich habe einige Tricks ausprobiert, um E-Mails zu vermeiden:
> /dev/null
>/dev/null
>/dev/null 2>&1
>/dev/null 2>&1 || true
|| true
Alle versenden bei jedem Durchlauf weiterhin E-Mails.
Eine Beispiel-E-Mail:
/bin/sh: 1: kann nicht erstellen 1: Berechtigung verweigert
(Mir ist klar, dass das ein seltsamer Fehler ist, aber es ist ein Beispiel. Ich weiß, dass ich den Fehler beheben und nicht stummschalten muss, aber ich möchte wissen, warum ich ihn nicht mit einer normalen Methode stummschalten kann.)
Die Frage ist: Warum sendet Cron weiterhin E-Mails, selbst wenn ich das Aufgabenergebnis umleite oder || true verwende, um das Aufgabenergebnis zu ändern? Die einzige Lösung, die ich finden kann (zu der verlinkten Frage), ist das Hinzufügen
MAILTO=""
nach den „normalen“ (oder nicht spammenden) Cron-Tasks (und vor diesen anderen).
Verwandte Frage:Wie kann ich einen Cronjob nach /dev/null/? vollständig stummschalten?.
Antwort1
Der Fehler liegt wahrscheinlich daran, dass Sie bei einer Umleitung einen Tippfehler gemacht haben. Vielleicht haben Sie /bin/sh: 1: cannot create 1: Permission denied
statt oder . (Normalerweise wäre der Versuch, eine Datei mit dem Namen in Ihrem Home-Verzeichnis zu erstellen, erfolgreich, aber wenn eine Datei mit dem Namen bereits existiert und nicht beschreibbar ist, erhalten Sie diesen Fehler.)2>&1
2>1
2>1&
1
1
Der Grund, warum dieser Fehler nicht unterdrückt wird, ist, dass die Meldung nicht von dem Befehl stammt, dessen Ausgabe umgeleitet wurde. Die Meldung wird von der Shell gemeldet, während sie versucht, die Umleitung für den Befehl einzurichten. Die Ausgabe der Shell selbst wurde nicht umgeleitet, daher wird die Meldung von Ihnen gesammelt cron
und per E-Mail an Sie gesendet.