Controlla Console.app per una stringa e notifica quando viene trovato

1

È possibile monitorare tutti i messaggi in Console.app per una stringa e quindi avvisare l'utente quando si verifica questa stringa?

Ho il problema che sto ricevendo errori di I / O del disco e sospetto che non si tratti di un errore dell'HDD, ma in qualche modo è causato da un software. L'unico modo per sapere che ho errori di I / O su disco è che a volte guardo tutti i messaggi in Console.app per curiosità. Naturalmente questo non mi dà informazioni in tempo reale.
Pertanto, desidero ricevere una notifica quando si verifica il seguente messaggio nella console:

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

Questo è in qualche modo possibile? Va bene se questo significa che la console deve essere sempre attiva.

Sono su Snow Leopard 10.6.8.

    
posta Saaru Lindestøkke 07.01.2013 - 21:32
fonte

2 risposte

2

Non userei Console.app. Utilizza invece Terminal.app con il seguente comando:

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

quindi lascia aperta la finestra e vedrai tutte le voci corrispondenti in quella finestra mentre lavori.

Sappi anche che quando il file system.log viene ruotato (a causa della dimensione / tempo) la coda si fermerà. dovrai riavviare il comando.

    
risposta data 07.01.2013 - 22:05
fonte
1
  1. sudo /usr/bin/gem install terminal-notifier

  2. Salva questo script come ~/bin/logcheck ed esegui 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 , aggiungi */5 * * * * ~/bin/logcheck

risposta data 08.01.2013 - 03:45
fonte

Leggi altre domande sui tag