Monitor Console.app para una cadena y notificar cuando se encuentre

1

¿Es posible monitorear todos los mensajes en Console.app para una cadena y luego notificar al usuario cuando ocurre esta cadena?

Tengo el problema de que obtengo errores de E / S del disco y sospecho que no es un fallo del disco duro, pero de alguna manera es causado por una pieza de software. La única forma en que sé que tengo errores de E / S de disco es que a veces miro todos los mensajes en Console.app por curiosidad. Por supuesto esto no me da información en tiempo real.
Por lo tanto, quiero recibir una notificación cuando aparezca el siguiente mensaje en la Consola:

07/01/2013 20:59:06 kernel  disk0s1: I/O error.

¿Es esto posible de alguna manera? Está bien si esto significa que la Consola debe estar encendida todo el tiempo.

Estoy en Snow Leopard 10.6.8.

    
pregunta Saaru Lindestøkke 07.01.2013 - 21:32

2 respuestas

2

No usaría Console.app. En su lugar, utilice Terminal.app con el siguiente comando:

tail -f /var/log/system.log | grep "string you are looking for"

luego deja esa ventana abierta y verás todas las entradas coincidentes en esa ventana mientras trabajas.

También sepa que cuando se gire el archivo system.log (debido al tamaño / tiempo) la cola se detendrá. deberá reiniciar el comando.

    
respondido por el TheWellington 07.01.2013 - 22:05
1
  1. sudo /usr/bin/gem install terminal-notifier

  2. Guarde este script como ~/bin/logcheck y ejecute chmod +x ~/bin/logcheck

    #!/bin/bash
    
    tmp=${TMPDIR}logcheck
    [ -f $tmp ] && last=$(cat $tmp) || last=""
    found=$(grep -A-1 "^$last" /var/log/system.log | grep -F 'kernel  disk0s1: I/O error')
    [ -n "$found" ] && terminal-notifier -message "$found"
    last=$(grep -Eo '^\w{3} [ \d]\d \d\d:\d\d:\d\d' /var/log/system.log | tail -n1)
    printf %s "$last" > $tmp
    
  3. EDITOR=nano crontab -e , agregue */5 * * * * ~/bin/logcheck

respondido por el user495470 08.01.2013 - 03:45

Lea otras preguntas en las etiquetas