"(CRON) info (chybí instalace MTA, vyřazení výstupu)" chyba v syslogu

148

Mám novou instalaci Ubuntu 12.04.1 LTS a řadu serverů.

Nepřišel jsem žádné cron úlohy, ani jsem na těchto serverech editoval můj crontab, avšak v témže okamžiku pro každý stroj dostal 75% CPU špičku a následující informace v mém syslog v době špice:

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

Mám nainstalovaný mono-kompletní a provozuji server webových serverů.

Jaký je nejlepší způsob, jak to zastavit? Chtěl bych být schopen odstranit špičku procesoru.

    
dané sungiant 27.11.2012 11:25

11 odpovědí

140

Linux používá poštu pro zasílání upozornění uživateli. Většina linuxových distribucí má nainstalovanou poštovní službu (včetně MTA). Ubuntu to však není.

Chcete-li vyřešit tento problém, můžete nainstalovat poštovní službu, například postfix.

sudo apt-get install postfix

Nebo ji můžete ignorovat. Nemyslím si, že neschopnost cronu posílat zprávy má něco společného s CPU špičkou (to je spojeno s tím, co běží cron). Mohlo by být nejbezpečnější instalovat MTA a pak si přečíst zprávy (mutt je dobrá čtečka systémových pošty).

    
odpověděl martin 01.01.2013 09:56
64

Stává se to proto, že vaše úlohy cron produkují výstup a potom se démon cron pokusí zaslat tento výstup e-mailu (tj. root). Pokud tento výstup nepotřebujete, nejsnazší způsob, jak to vyřešit, je zrušit na crontab:

sudo crontab -e

a přidejte>/dev/null 2>&1 do každé úlohy:

* * * * * yourCommand >/dev/null 2>&1
    
odpověděl rob 26.04.2013 12:27
43

V mém případě zpráva hádala o problému s oprávněním skriptu bash, ale nemohl jsem ji vidět, dokud jsem nenainstaloval MTA.

Jak jsem navrhoval, že jsem běžel:

sudo aptitude install postfix

Při instalaci jsem si zvolil "Local" a poté znovu spustil úlohu cron:

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

V mém případě jsem nahradil

<user>

s "root".

Byl jsem pak schopen vidět chybový výstup související s oprávněními.

    
odpověděl Martin Carstens 10.07.2015 16:28
20

V crontabu přidejte toto jako první řádek:

MAILTO=""

Zabrání tomu, aby se aplikace cron pokoušela odeslat e-mail.

    
odpověděl 88weighed 27.08.2015 15:06
19

Pokud nechcete nainstalovat protokol MTA (pro který momentálně nemusím), můžete výsledky úlohy cron doručit do souboru protokolu.

sudo crontab -e

a vaše cron úloha by vypadala takto.

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

, pak můžete zadat záznam a zjistit, co se stalo

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

To je to, co jsem dělal na libovolném serveru, který vidím v syslog

    
odpověděl Andrew MacNaughton 17.04.2016 21:37
14

Jak bylo uvedeno v dřívější odpovědi, to se děje, protože vaše úlohy cron produkují výstup, a potom se démon cron pokusí odeslat tento výstup. Pokud nechcete (nebo nemůžete) nainstalovat MTA, ale chcete vidět výstup, můžete přesměrovat výstup úlohy cron do souboru protokolu. Upravte soubor crontab pomocí

crontab -e

(použijtesudo, pokud je problém s crontabem rootu) a přidejte>> /some/log/file 2>&1 po každém příkazu, jako je tento:

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

Pokud je na řádku více příkazů, oddělených;,&& nebo||, měli byste postupovat výše pro každý příkaz, například:

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

nebo je seskupte takto:

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

Pokud chcete ignorovat stdout a zachytit pouze stderr, použijte místo toho> /dev/null 2>> /some/log/file. Vložte soubor protokolu kdekoli chcete - váš domovský adresář, /var/log, nebo dokonce/tmp, pokud si nejste jisti, že ji nebudete muset udržet.

Poté se podívejme na soubor protokolu po spuštění úlohy.

    
odpověděl G-Man 29.07.2016 04:40
10

Jeden z vedlejších efektů přidání příkazu/dev/null 2>&1 do příkazu cron úloha spočívá v tom, že zruší jakSTDERR takSTDOUT (standardní chyba i výstup). To funguje dobře, pokud nechcete žádné e-maily z cronu. Pokud chcete, aby vám vaše chyby byly zaslány emailem, použijte místo toho>/dev/null. Přečtěte si tento blogový příspěvek pro další vysvětlení .

Přesto budete muset nainstalovat službu MTA (agent přenosu zpráv), abyste e-maily s chybami odeslali. Postfix je dostatečně jednoduchý k instalaci s:sudo apt-get install postfix

    
odpověděl paneer_tikka 30.12.2013 18:27
8

Jedná se o starou otázku, ale existuje další odpověď, která je za určitých okolností užitečná.

Potvrďte výstup příkazu cron pomocílogger, aby skončili v syslogu.

Je to o něco jednodušší než instalace postfixu a tento výstup umisťuje do syslogu vedle vašich dalších protokolů. Tento příkaz zachycuje stdout AND stderr, takže se nezobrazí zprávaNo MTA installed a uvidíte veškerý výstup v syslogu.

Příklad vstupu cron:

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

Můžete zobrazit protokoly se značkoumycmd pomocí:

grep 'mycmd' /var/log/syslog
    
odpověděl Michael Hunter 23.10.2017 00:44
1

Na začátku souboruMAILTO=”” můžete nastavit proměnnoucrontab. Také bude zakázáno upozornění e-mailem. Upravit / otevřít úlohy cron:

$ crontab -e

V horní části souboru zadejte:

MAILTO=""

Odkaz

    
odpověděl Damien Cuvillier 19.02.2018 06:18
1

Měl jsem tento problém pomocí nástrojů Kitematic Docker Přejděte do kontejneru magento a klikněte naexe.

Poté spusťte

apt-get update

To je, pokud se snažíte dostat magento na kitematicky. Protokol zobrazí tuto chybu na virtuálním počítači:

  

potřebujete aktualizaci.

Omlouvám se, jestli jste tě ztratili, ale to funguje. Stále se ztrácíte, ale prostě to přečtěte a kusy se jednoho dne spojují. Buďte trpěliví.

    
odpověděl Ali Bayati 18.09.2018 21:05
1

  1. Nejdříve nainstalujtepostfix, což může vyřešit problém

    sudo apt-get install postfix
    
  2. Pokud ubuntu můžete upravit souborcrontab

    sudo vim /etc/crontab
    
  3. Pozor, upravte horní soubor, nikoli žádný kód v prvním řádku a zadejte

    MAILTO=root // current system user
    
  4. Pokudcron provede jakoukoli úlohu, obdržíte e-mail

    mail
    
odpověděl shahramlu 02.09.2018 09:40