Eu tenho uma nova instalação do Ubuntu 12.04.1 LTS e vários servidores.
Eu não adicionei nenhum trabalho cron ou editei meu crontab nesses servidores; no entanto, ao mesmo tempo em cada máquina, recebo um pico de CPU de 75% e as seguintes informações no meu syslog no momento do pico:
CRON[8380]: (CRON) info (No MTA installed, discarding output)
Eu tenho o mono-complete instalado e estou executando um servidor da web da pilha de serviços.
Qual é a melhor maneira de impedir que isso aconteça? Gostaria de poder remover o pico da CPU.
Respostas:
O Linux usa correio para enviar notificações ao usuário. A maioria das distribuições Linux possui um serviço de email (incluindo um MTA) instalado. O Ubuntu não faz isso.
Você pode instalar um serviço de email, postfix por exemplo, para resolver esse problema.
Ou você pode ignorá-lo. Eu não acho que a incapacidade do cron enviar mensagens tenha algo a ver com o pico da CPU (que está vinculado ao trabalho subjacente que o cron está executando). Pode ser mais seguro instalar um MTA e depois ler as mensagens (
mutt
é um bom leitor de correio do sistema).fonte
mail
fornecida pelomailutils
(debian), se houver uma maneira melhor incorporada ao postfix?Isso acontece porque seus trabalhos cron estão produzindo saída e, em seguida, o daemon cron tenta enviar essa saída por e-mail para você (ou seja, root). Se você não precisar dessa saída, a maneira mais fácil de resolver isso é descartá-la no crontab:
e adicione
>/dev/null 2>&1
a todos os trabalhos:fonte
No MTA installed, discarding output
mensagens no log e meu programa eventualmente pára de executar por conta própria. Eu acredito que é por causa do pico da CPU. Parece que toda a resposta postada para esta pergunta parece ignorar isso.logger
. Por exemployourCommand >/dev/null 2>&1 | logger -t mycmd
,. Isso colocará a saída no syslog para fins de segurança e interromperá as reclamações do MTA.No meu caso, a mensagem estava sugerindo um problema de permissão com o script bash, mas não consegui vê-la até instalar um MTA.
Como sugeri, corri:
Eu escolhi "Local" durante a instalação e depois de executar o trabalho cron novamente:
No meu caso eu substituí
com "raiz".
Pude ver a saída de erro relacionada às permissões.
fonte
Conforme declarado em uma resposta anterior, isso acontece porque seus trabalhos cron estão produzindo saída e, em seguida, o daemon cron tenta enviar essa saída por email para você. Se você não deseja (ou não pode) instalar um MTA, mas deseja ver a saída, pode redirecionar a saída da tarefa cron para um arquivo de log. Edite seu arquivo crontab com
(use
sudo
se o problema for com o crontab do root) e adicione após cada comando, como este:>> /some/log/file 2>&1
Se houver vários comandos em uma linha, separados por
;
,&&
ou||
, você deve fazer o acima para cada comando, assim:ou agrupe-os, assim:
Se você deseja ignorar o stdout e capturar apenas o stderr, use-o . Coloque o arquivo de log onde quiser - seu diretório pessoal ou mesmo se tiver certeza de que não precisará mantê-lo.
> /dev/null 2>> /some/log/file
/var/log
/tmp
Em seguida, observe o arquivo de log após a execução da tarefa.
fonte
No crontab, adicione isso como primeira linha:
Isso impedirá que o cron tente enviar um email.
fonte
#
) depoisMAILTO=""
ou não funcionará #Se você não deseja instalar um MTA (do qual atualmente não preciso), pode canalizar os resultados do trabalho cron para um arquivo de log.
então, com seu trabalho cron, ficaria assim.
então você pode simplesmente seguir o log e ver o que aconteceu
Isto é o que tenho feito em qualquer servidor que vejo essa mensagem no syslog
fonte
Essa é uma pergunta antiga, mas há uma resposta adicional que é útil em algumas circunstâncias.
Canalize a saída do seu comando cron
logger
para que eles acabem no syslog.É um pouco mais fácil do que instalar o postfix, e coloca essa saída no syslog ao lado dos outros logs. Este comando irá capturar stdout AND stderr para que você não veja a
No MTA installed
mensagem e veja toda a sua saída no syslog.Exemplo de entrada cron:
Você pode visualizar os logs com sua tag
mycmd
usando:fonte
Um efeito colateral da adição
/dev/null 2>&1
ao comando cron job é que ele descartará ambosSTDERR
eSTDOUT
(erro padrão e saída). Isso funciona bem se você não quiser nenhum e-mail do cron. Mas se você deseja que seus erros sejam enviados por e-mail, use-o>/dev/null
. Leia esta postagem do blog para obter mais explicações .Você ainda precisará instalar um MTA (agente de transferência de email) para enviar os emails de erro. O Postfix é simples o suficiente para instalar com:
sudo apt-get install postfix
fonte
Inicialmente, instale
postfix
, isso pode resolver o problemaSe o Ubuntu, você pode editar o
crontab
arquivoAtenção , edite o arquivo superior , nenhum código na primeira linha , e digite
Ao
cron
executar qualquer tarefa, você receberá um emailfonte
Você pode definir
MAILTO=””
variáveis no início do seucrontab
arquivo. Isso também desativará o alerta de email. Edite / abra seus trabalhos cron:Na parte superior do arquivo, digite:
https://www.cyberciti.biz/faq/disable-the-mail-alert-by-crontab-command/
fonte
Eu tive esse problema usando as ferramentas do Kitematic Docker .
Vá para o contêiner magento e clique em
exe
.Então corra
Isto é, se você está tentando executar o magento no kitematic. O log mostrará este erro na máquina virtual:
Desculpe se isso te deixou perdido, mas é assim que funciona. Você continua se perdendo, mas apenas leia sobre isso e as peças se reunirão um dia. Seja paciente.
fonte