Tengo una nueva instalación de Ubuntu 12.04.1 LTS y varios servidores.
No he agregado ningún trabajo cron ni editado mi crontab en esos servidores, sin embargo, aproximadamente al mismo tiempo para cada máquina, obtengo un pico de CPU del 75% y la siguiente información en mi syslog en el momento del pico:
CRON[8380]: (CRON) info (No MTA installed, discarding output)
Tengo monocompleto instalado y estoy ejecutando un servidor web de pila de servicios.
¿Cuál es la mejor manera para evitar que esto suceda? Me gustaría poder eliminar el pico de CPU.
Respuestas:
Linux usa el correo para enviar notificaciones al usuario. La mayoría de las distribuciones de Linux tienen instalado un servicio de correo (incluido un MTA). Ubuntu no lo hace.
Puede instalar un servicio de correo, postfix por ejemplo, para resolver este problema.
O puedes ignorarlo. No creo que la incapacidad de cron para enviar mensajes tenga algo que ver con el pico de CPU (que está vinculado al trabajo subyacente que está ejecutando cron). Puede ser más seguro instalar un MTA y luego leer los mensajes (
mutt
es un buen lector de correo del sistema).fuente
mail
proporciona la única forma de verificar el correomailutils
, si hay una mejor manera integrada de postfix?Esto sucede porque sus trabajos cron están produciendo salida y luego el demonio cron intenta enviarle esa salida por correo electrónico (es decir, root). Si no necesita esa salida, la forma más fácil de resolver esto es descartarla en el crontab:
y agregar
>/dev/null 2>&1
a cada trabajo:fuente
No MTA installed, discarding output
mensajes en el registro y mi programa finalmente deja de ejecutarse por sí solo. Creo que es debido al pico de la CPU. Parece que toda la respuesta publicada para esta pregunta parece ignorar eso.logger
. Por ejemplo,yourCommand >/dev/null 2>&1 | logger -t mycmd
. Esto colocará la salida en syslog para un mantenimiento seguro y detendrá las quejas de MTA.En mi caso, el mensaje insinuaba un problema de permisos con el script bash, pero no pude verlo hasta que instalé un MTA.
Como sugerí, corrí:
Elegí "Local" durante la configuración y después de ejecutar el trabajo cron nuevamente:
En mi caso reemplacé
con "raíz".
Luego pude ver la salida de error relacionada con los permisos.
fuente
Como se indicó en una respuesta anterior, esto sucede porque sus trabajos cron están produciendo resultados, y luego el demonio cron intenta enviarle ese resultado por correo electrónico. Si no desea (o no puede) instalar un MTA, pero desea ver la salida, puede redirigir la salida del trabajo cron a un archivo de registro. Edite su archivo crontab con
(utilícelo
sudo
si el problema es con el crontab de la raíz) y agregue después de cada comando, así:>> /some/log/file 2>&1
Si hay varios comandos en una línea, separados por
;
,&&
o||
, debe hacer lo anterior para cada comando, así:o agruparlos, así:
Si desea ignorar stdout y capturar solo stderr, use en su lugar. Coloque el archivo de registro donde desee: su directorio de inicio , o incluso si está seguro de que no necesitará conservarlo.
> /dev/null 2>> /some/log/file
/var/log
/tmp
Luego mire el archivo de registro después de que se ejecute el trabajo.
fuente
En crontab agregue esto como primera línea:
Esto evitará que cron intente enviar un correo electrónico.
fuente
#
) despuésMAILTO=""
o no funcionaráSi no desea instalar un MTA (que actualmente no necesito), puede canalizar los resultados del trabajo cron a un archivo de registro.
entonces con tu trabajo cron se vería así.
entonces puedes simplemente seguir el registro y ver qué pasó
Esto es lo que he estado haciendo en cualquier servidor que veo ese mensaje en syslog
fuente
Esta es una vieja pregunta, pero hay una respuesta adicional que es útil en algunas circunstancias.
Canalice la salida de su comando cron
logger
para que terminen en el syslog.Es un poco más fácil que instalar postfix, y pone esta salida en syslog junto con sus otros registros. Este comando capturará stdout AND stderr para que no vea el
No MTA installed
mensaje y verá toda su salida en el syslog.Ejemplo de entrada cron:
Puede ver los registros con su etiqueta
mycmd
usando:fuente
Un efecto secundario de agregar
/dev/null 2>&1
al comando cron job es que descartará ambosSTDERR
ySTDOUT
(Error estándar, así como Salida). Esto funciona bien si no desea ningún correo electrónico de cron. Pero si desea que le enviemos sus errores por correo electrónico, úselos>/dev/null
en su lugar. Lea esta publicación de blog para obtener más explicaciones .Sin embargo, aún deberá instalar un MTA (agente de transferencia de correo) para enviar los correos electrónicos de error. Postfix es bastante simple de instalar con:
sudo apt-get install postfix
fuente
Al principio, instale
postfix
, eso puede resolver el problemaSi es Ubuntu, puedes editar el
crontab
archivoAtención, edite el archivo superior, ningún código en la primera línea, e ingrese
Cuando
cron
ejecute cualquier tarea, recibirá un correo electrónicofuente
Puede establecer
MAILTO=””
variables al comienzo de sucrontab
archivo. Esto también deshabilitará la alerta por correo electrónico. Edite / abra sus trabajos cron:En la parte superior del archivo, ingrese:
https://www.cyberciti.biz/faq/disable-the-mail-alert-by-crontab-command/
fuente
Tuve este problema usando las herramientas Kitematic Docker .
Vaya al contenedor magento y haga clic en
exe
.Entonces corre
Esto es si estás intentando que magento se ejecute en kitematic. El registro mostrará este error en la máquina virtual:
Lo siento si esto te hizo perder, pero así es como funciona. Sigue perdiéndose, pero solo lea sobre esto y las piezas se unirán algún día. Se paciente.
fuente