Pantau Konsol.app untuk string dan beri tahu saat ditemukan

1

Apakah mungkin untuk memonitor semua pesan di Console.app untuk sebuah string dan kemudian memberi tahu pengguna ketika string ini terjadi?

Saya memiliki masalah bahwa saya mendapatkan kesalahan disk I / O dan saya menduga itu bukan kegagalan HDD, tetapi entah bagaimana disebabkan oleh perangkat lunak. Satu-satunya cara saya tahu bahwa saya memiliki disk I / O kesalahan adalah bahwa saya kadang-kadang melihat semua pesan di Console.app karena penasaran. Tentu saja ini tidak memberi saya informasi waktu nyata.
Karenanya saya ingin menerima pemberitahuan ketika pesan berikut muncul di Konsol:

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

Apakah ini entah bagaimana mungkin? Tidak apa-apa jika ini berarti bahwa Konsol harus selalu menyala.

Saya menggunakan Snow Leopard 10.6.8.

Saaru Lindestøkke
sumber

Jawaban:

2

Saya tidak akan menggunakan Console.app. Alih-alih gunakan Terminal.app dengan perintah berikut:

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

kemudian biarkan jendela itu terbuka dan Anda akan melihat semua entri yang cocok di jendela itu saat Anda bekerja.

Juga tahu bahwa ketika file system.log diputar (karena ukuran / waktu), ekor akan berhenti. Anda perlu me-restart perintah.

TheWellington
sumber
Terima kasih, sepertinya itu yang saya cari. Bisakah Anda memperjelas bit yang berputar? Seberapa sering system.log diputar? Bisakah saya kode ke terminal yang harus restart secara otomatis juga?
Saaru Lindestøkke
@BartArondson Ketika log terlalu panjang, itu akan diarsipkan ke dalam file bernama system.log.1.bz1, misalnya.
Kevin Chen
1
  1. sudo /usr/bin/gem install terminal-notifier

  2. Simpan skrip ini sebagai ~/bin/logcheck dan lari 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, tambahkan */5 * * * * ~/bin/logcheck

Lri
sumber
saya mendapat sudo: usr/bin/gem: command not found. Saya di 10.6.8, jadi itu mungkin penting. Maaf saya lupa menyebutkannya pada awalnya.
Saaru Lindestøkke
@BartArondson RubyGems hanya diinstal secara default sejak 10.7. terminal-notifier juga tidak bekerja pada 10.6, tetapi Anda dapat menggunakan growlnotify.
Lri