1 | #!/bin/sh |
---|
2 | ######################################################################## |
---|
3 | # |
---|
4 | # Description : show_event_log |
---|
5 | # |
---|
6 | # Authors : Based on Open Suse Udev Rules |
---|
7 | # kay.sievers@suse.de |
---|
8 | # |
---|
9 | # Adapted to : Jim Gifford |
---|
10 | # LFS |
---|
11 | # |
---|
12 | # Version : 00.00 |
---|
13 | # |
---|
14 | # Notes : |
---|
15 | # |
---|
16 | ######################################################################## |
---|
17 | # |
---|
18 | # known events are: |
---|
19 | # ac97 acpi block cpu drivers edd firmware graphics i2c-adapter i8259 |
---|
20 | # ieee1394_protocol input ioapic irqrouter lapic mem misc module namespace |
---|
21 | # pci_bus pci_express pcmcia pcmcia_socket platform pnp printer scsi scsi_host |
---|
22 | # serio sound timer timer_pit tty usb usb_device usb_host vc |
---|
23 | # |
---|
24 | EXCLUDE_SUBS="acpi cpu edd mem namespace pci_bus tty vc" |
---|
25 | # EXCLUDE_SUBS="ac97 acpi cpu drivers edd graphics i2c-adapter mem i8259 ioapic irqrouter lapic mem module namespace platform pnp pci_bus tty vc" |
---|
26 | MESSAGES=${MESSAGES:-/var/log/messages} |
---|
27 | #grep udevd /var/log/messages | grep -v "pass_env\|geventrec\|hal.hot\|received" |
---|
28 | |
---|
29 | show_event() { |
---|
30 | local SN PID SUBS |
---|
31 | declare -i SN=$1 PID |
---|
32 | # read PID ACT SUBS < <(sed -n "s/^.*seq $SN forked, pid \[\([0-9]*\)\], \([^,]*\),.*$/\1 \2/p;T;q" $MESSAGES) |
---|
33 | read PID ACT SUBS < <(sed -n "s/^.*seq $SN forked, pid \[\([0-9]*\)\], '\([^']*\)' '\([^']*\)'.*$/\1 \2 \3/p;T;q" $MESSAGES) |
---|
34 | if [ $PID == 0 ] ; then |
---|
35 | echo event $SN not found 1>&2 |
---|
36 | return 1 |
---|
37 | fi |
---|
38 | if [ -n "$WANTED_SUBS" ] ; then |
---|
39 | WANTED=no |
---|
40 | for S in $WANTED_SUBS; do |
---|
41 | test "$SUBS" == "$S" && WANTED=yes |
---|
42 | done |
---|
43 | else |
---|
44 | WANTED=yes |
---|
45 | for S in $EXCLUDE_SUBS; do |
---|
46 | test "$SUBS" == "$S" && WANTED=no |
---|
47 | done |
---|
48 | fi |
---|
49 | echo event $SN $PID $ACT $SUBS $WANTED 1>&2 |
---|
50 | test $WANTED == no && return 1 |
---|
51 | echo " _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ $SN _ $ACT _ $SUBS _ _ _ _" |
---|
52 | grep "seq $SN \|\[$PID\]" $MESSAGES | |
---|
53 | grep -v "pass_env\|geventrec\|hal.hot" |
---|
54 | echo |
---|
55 | } |
---|
56 | |
---|
57 | declare -i START=$1 STOP=$2 |
---|
58 | if [ "$2" == last ] ; then |
---|
59 | read STOP < <(grep -o "udev_done.*exit" $MESSAGES | cut -d" " -f3 | sort -n | tail -1) |
---|
60 | fi |
---|
61 | test $START -lt 0 -a $STOP -gt 0 && START=$((STOP+START+1)) |
---|
62 | test $START -gt $STOP && STOP=$START |
---|
63 | shift; shift; WANTED_SUBS="$*" |
---|
64 | for n in `seq $START $STOP`; do |
---|
65 | show_event $n |
---|
66 | done |
---|
67 | |
---|
68 | exit |
---|
69 | |
---|
70 | # list all events |
---|
71 | (read x; while read x s x x x c x; read x s2 x a d; do echo $s $s2 $a $c $d; done) < <( sed -n "s/^.*udev.*\(seq [0-9]* [qf].*$\)/\1/p" /var/log/messages | sort -n -k 2 | tr -d ',' ) |
---|
72 | |
---|
73 | ./show_event_log 1 last > boot.events.log.`date +%A_%H:%M` 2> boot.events.list.`date +%A_%H:%M` |
---|