Tengo un programa que imprime algunos resultados que me gustaría mostrar en mi terminal una vez cada hora durante la jornada laboral.
$ crontab -l
0 07-17 * * * /home/dat/scripts/cron.out
syslog informa lo siguiente:
(dat) CMD (/home/dat/scripts/cron.exe)
Jun 18 12:02:01 picard CRON[10848]: (CRON) info (No MTA installed, discarding output)
¿Qué me estoy perdiendo?
Respuestas:
La manera sucia podría ser redirigir la salida de su programa al archivo pts de un terminal ya existente .
Para conocer el archivo pts simplemente escriba
tty
commandentonces su crontab sería:
Otra forma podría ser iniciar el programa como argumento del terminal:
dónde
display
está la pantalla X donde desea mostrar el terminal,-H
es decirle al terminal que permanezca abierto después de que finalice el comando. Esto creará cada vez un nuevo terminal.crontab:
Si la pantalla no está presente, syslog registrará un error.
fuente
Cron le envía por correo electrónico la salida de su script. Desafortunadamente, Ubuntu no configura el correo local por defecto , por eso Cron le dice en los registros "No hay MTA instalado, descartando la salida".
Configurar el correo local podría ser una forma de resolver su problema. En lugar de una salida en una terminal, recibiría una notificación por correo electrónico.
Si desea que su trabajo cron salga a una terminal, deberá redirigir su salida a la terminal. La parte de redireccionamiento es fácil:
pero el problema es averiguar a qué terminal redirigir. No hay una respuesta universal a eso, depende de cómo desee seleccionar el terminal entre los que está conectado.
Para usos típicos, una notificación de GUI sería más apropiada. Puedes usar
notify-send
. Deberá establecer laDISPLAY
variable de entorno .fuente
Cron envía la salida a un anuncio publicitario. Si desea ver la salida en una terminal, puede iniciar sesión en un archivo y usar tail -f para ver la salida en la terminal en la que desea ver la salida
Iniciar sesión en un archivo
0 07-17 * * * /home/dat/scripts/cron.out > /path/to/log.txt 2> /path/to/error.txt
Formas alternativas de iniciar sesión:
echo output > log.txt
, o puede usar una secuencia de comandos de contenedor que se describe a continuación.Programa de ejemplo y script de contenedor:
Ejemplo de ejecución 1:
Ejemplo de ejecución 2:
Ver salida en terminal:
Ahora que su registro a cabo tanto estándar y el error estándar a un archivo, en cualquier terminal, puede ejecutar
tail -f
en uno o ambos archivos comotail -f log.txt
otail -f log.txt error.txt
para que la cola velará o más bien seguir el archivo (s) de modificación. cola man-pageArchivos de registro añadidos después:
Si log.txt o error.txt se agregan posteriormente desde su programa o desde otro terminal como
$ echo "more output" >> log.txt
, la salida se ve en el terminal en ejecución$ tail -f log.txt error.txt
Además,
$ echo code red >> error.txt
resulta en:fuente