¿Cómo deshabilitar la salida por correo para un trabajo?

¿Cómo deshabilitar la salida por correo para un trabajo?

Me gustaría desactivar atlas notificaciones por correo para una determinada clase de trabajos. Por ejemplo, cuando pruebo el siguiente caso de uso (eliminar un trabajo a mitad de camino),noQuiero salida, pero el mismo código en producción. Quiero la salida enviada por correo:

$ at now <<<'/usr/bin/timeout 15s nc -l 20242'
job 71 at 2016-05-16 15:03
$ pidof /usr/bin/timeout
11853
$ kill 11853
$ mail
Heirloom Mail version 12.4 7/29/08.  Type ? for help.
"/var/spool/mail/bishop": 1 message 1 new
>N  1 bishop@trencher  Mon May 16 15:03  16/920   "Output from your job       71"
& 1
Message  1:
From bishop@trencher  Mon May 16 15:03:30 2016
Date: Mon, 16 May 2016 15:03:30 -0400
From: bishop@trencher
Subject: Output from your job       71
To: bishop@trencher
Status: R

/bin/bash: line 1: 11853 Terminated              /usr/bin/timeout 15s nc -l 20242

Sé que puedo configurar MAILPATH=/dev/null, pero preferiría tener un control más detallado. Ajuste MAILy MAILTOno han tenido ningún efecto evidente. Pensé que podría editar el trabajo para eliminar la # maildirectiva, pero parece que no funciona:

at 15:15 <<<'date'
at -c 73 | grep -v '^# mail bishop' | at 15:15
atrm 73

He buscado por todas partes, pero digamos que buscar un comando llamado at no es trivial. Parece que ni siquiera puedo encontrar el código fuente: ¿no está en GNU coreutils?

ACTUALIZAR: Identificación de la estación:

$ uname -a
Linux trencher 4.4.8-20.46.amzn1.x86_64 #1 SMP Wed Apr 27 19:28:52 UTC 2016 x86_64 x86_64 x86_64 GNU/Linux
$ at -V
at version 3.1.10

¿Es posible controlar, por trabajo, si el resultado (cualquier resultado) se envía por correo al usuario que lo envía?

Respuesta1

RedHat (y por lo tanto Centos y sus amigos) aty también las versiones derivadas de Debian (como rpm -qi aten RedHat indica una URL de Debian, y también derobert en los comentarios anteriores) deberían admitir una -Mopción:

    -M      Never send mail to the user.

A falta de esto, otra opción sería suprimir la salida del trabajo:

#!/bin/bash
exec >/dev/null 2>&1
... the usual job commands here ...

O, en su lugar, canalice la salida hacia loggero hacia un archivo de registro en caso de que sea necesario inspeccionar la salida.

Otra opción más sería alterar el agente de transporte de correo, especialmente porque estos son sistemas de desarrollo, y colocar todo el correo en /dev/nullun archivo de buzón en algún lugar del servidor de desarrollo, pero eso es más trabajo.

Respuesta2

Preceda el comando pasado atcon chronic(del moreutilspaquete) para que aún obtengaambosstderr y stdout, si el comando salió con un estado de error; de lo contrario, nada.

Haz lo mismo con tus trabajos cron mientras lo haces.

información relacionada