2011/8/12 Frank Lassowski
<flassowski@gmx.de>
Moin!
Folgendes funktioniert, um Zeit und Datum des letzten dmesg-Eintrages zu
ermitteln:
let lastentry=$(dmesg|tail -n 1|cut -f1 -d"."|cut -c2-|cut -f2 -d" ");let
boot=$(cut -f1 -d. /proc/uptime);let lastdate=$boot-$lastentry;date -d
"$lastdate seconds ago"
Ist aber ganz schön lang, und ich ahne, dass awk/sed das kürzer könnten,
aber die beiden sind was für Gebildete...
Wisst Ihr, wie es kürzer ginge?
EINE Möglichkeit, wenn man sed verwenden möchte:
let lastentry=$(dmesg|tail -n 1|cut -f1 -d"."|cut -c2-|cut -f2 -d" ")
->
let lastentry=$(dmesg | sed -e '$!d' -e 's,.\(.*\)\..*,\1,')
let boot=$(cut -f1 -d. /proc/uptime)
->
let boot=$(sed 's,\..*,,' /proc/uptime)
let lastdate=$boot-$lastentry
date -d "$lastdate seconds ago"
==>
let lastentry=$(dmesg|sed -e '$!d' -e 's,.\(.*\)\..*,\1,');let boot=$(sed 's,\..*,,' /proc/uptime);let lastdate=$boot-$lastentry;date -d "$lastdate seconds ago"
Ist aber auch nicht sonderlich kürzer ;) Dafür wird aber nur
sed als externes Tool verwendet. Zuvor hast Du nur cut
verwendet, dafür aber besonders bei $lastentry mehrfach
aufgerufen. Ach, und tail brauche ich da auch nicht mehr.
Ob's besser ist — weiss nicht ;)
Alexander