-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA256
Hi,
On 15/07/18 17:35, Andrew McGlashan via luv-main wrote:
Hi,
On 15/07/18 16:33, Russell Coker via luv-main wrote:
What's a good real-time log watching program?
This is something I've wanted for a while but
not had the
inclination to get it going. The thing that finally made me
want to do it is when my workstation gave the below log messages
and decided to stop supporting USB 3.0 ports. As the ports that
are most convenient for connecting my keyboard and mouse are USB
3.0 that was inconvenient. Removing the xhci modules and loading
them again fixed the problem. So what I want in this instance is
a program that will detect one of the below messages and then run
a script that will run some rmmod and modprobe commands to fix
it. I want it to know which log entries it has dealt with to
avoid performing the operation twice (which would cause problems)
or maybe have a list of log messages in the problem solved
category.
Any suggestions?
[18408.111698] xhci_hcd 0000:06:00.0: xHCI host
not responding
to stop endpoint command. [18408.111716] xhci_hcd 0000:06:00.0:
xHCI host controller not responding, assume dead [18408.111738]
xhci_hcd 0000:06:00.0: HC died; cleaning up [18408.111747]
xhci_hcd 0000:06:00.0: Timeout while waiting for configure
endpoint command
Simple bash?
$ l --full-time coker* -rw-r--r-- 1 andrewm andrewm 60 2018-07-15
17:23:06.450452422 +1000 coker-test.log -rw-r--r-- 1 andrewm
andrewm 12 2018-07-15 17:23:06.450452422 +1000
coker-test.action-time -rw-r--r-- 1 andrewm andrewm 0 2018-07-15
17:23:07.278459755 +1000 coker-test.lastdone
In another terminal:
$ (tail -n0 -f coker-test.log |egrep --line-buffered '(aaa|aab)')
> coker-test.action-time & (while :;do [[
coker-test.action-time
-nt coker-test.lastdone ]] && { echo do stuff;touch
coker-test.lastdone;break; };sleep 10;echo -n .;done)
Then echo some strings to coker-test.log from first terminal.
( Check status in second terminal each time)
$ echo zzz >> coker-test.log $ echo aab >> coker-test.log
The echo of aab will cause the second terminal to show the
following and quit the loop:
...do stuff
The testing each 10 seconds (with sleep), so about 30 seconds in
it sees the aab string.
$ ls -lart --full-time coker* -rw-r--r-- 1 andrewm andrewm 68
2018-07-15 17:24:09.579011308 +1000 coker-test.log -rw-r--r-- 1
andrewm andrewm 16 2018-07-15 17:24:09.579011308 +1000
coker-test.action-time -rw-r--r-- 1 andrewm andrewm 0 2018-07-15
17:24:13.259043876 +1000 coker-test.lastdone
When you are happy that is all working fine, wrap the above to keep
it active:
while :;do (tail -n0 -f coker-test.log |egrep --line-buffered
'(aaa|aab)') >> coker-test.action-time & (while :;do [[
coker-test.action-time -nt coker-test.lastdone ]] && { echo do
stuff;touch coker-test.lastdone;break; };sleep 10;echo -n
.;done);done
The multitail option runs the "command" for every single match, the
original bash method seems best so far.
Cheers
A.
-----BEGIN PGP SIGNATURE-----
iF4EAREIAAYFAltLSZIACgkQqBZry7fv4vurOAEA1GQYhjM/MyidTnv1u1GRVh/T
pCT8slYx1QzoPsyY1jsA/jeBTvwfdfqDz5svId473SrTKLTcw5/uMtdydxQm2xRv
=8bJ0
-----END PGP SIGNATURE-----