⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 scan_messages

📁 UNIX下perl实现代码
💻
字号:
#!/usr/bin/perl -P# $RCSfile: scan_messages,v $$Revision: 4.1 $$Date: 92/08/07 17:20:37 $# This prints out extraordinary console messages.  You'll need to customize.chdir('/usr/adm/private/memories') || die "Can't cd to memories: $!\n";$maxpos = `cat oldmsgs 2>&1`;#if defined(mc300) || defined(mc500) || defined(mc700)open(Msgs, '/dev/null') || die "scan_messages: can't open messages";#elseopen(Msgs, '/usr/adm/messages') || die "scan_messages: can't open messages";#endif($dev,$ino,$mode,$nlink,$uid,$gid,$rdev,$size,$atime,$mtime,$ctime,   $blksize,$blocks) = stat(Msgs);if ($size < $maxpos) {		# Did somebody truncate messages file?    $maxpos = 0;}seek(Msgs,$maxpos,0);		# Start where we left off last time.while (<Msgs>) {    s/\[(\d+)\]/#/ && s/$1/#/g;#ifdef vax    $_ =~ s/[A-Z][a-z][a-z] +\w+ +[0-9:]+ +\w+ +//;    next if /root@.*:/;    next if /^vmunix: 4.3 BSD UNIX/;    next if /^vmunix: Copyright/;    next if /^vmunix: avail mem =/;    next if /^vmunix: SBIA0 at /;    next if /^vmunix: disk ra81 is/;    next if /^vmunix: dmf. at uba/;    next if /^vmunix: dmf.:.*asynch/;    next if /^vmunix: ex. at uba/;    next if /^vmunix: ex.: HW/;    next if /^vmunix: il. at uba/;    next if /^vmunix: il.: hardware/;    next if /^vmunix: ra. at uba/;    next if /^vmunix: ra.: media/;    next if /^vmunix: real mem/;    next if /^vmunix: syncing disks/;    next if /^vmunix: tms/;    next if /^vmunix: tmscp. at uba/;    next if /^vmunix: uba. at /;    next if /^vmunix: uda. at /;    next if /^vmunix: uda.: unit . ONLIN/;    next if /^vmunix: .*buffers containing/;    next if /^syslogd: .*newslog/;#endif    next if /unknown service/;    next if /^\.\.\.$/;    if (/^[A-Z][a-z][a-z] [ 0-9][0-9] [ 0-9][0-9]:[0-9][0-9]/) {	$pfx = '';	next;    }    next if /^[ \t]*$/;    next if /^[ 0-9]*done$/;    if (/^A/) {	next if /^Accounting [sr]/;    }    elsif (/^C/) {	next if /^Called from/;	next if /^Copyright/;    }    elsif (/^E/) {	next if /^End traceback/;	next if /^Ethernet address =/;    }    elsif (/^K/) {	next if /^KERNEL MODE/;    }    elsif (/^R/) {	next if /^Rebooting Unix/;    }    elsif (/^S/) {	next if /^Sun UNIX 4\.2 Release/;    }    elsif (/^W/) {	next if /^WARNING: clock gained/;    }    elsif (/^a/) {	next if /^arg /;	next if /^avail mem =/;    }    elsif (/^b/) {	next if /^bwtwo[0-9] at /;    }    elsif (/^c/) {	next if /^cgone[0-9] at /;	next if /^cdp[0-9] at /;	next if /^csr /;    }    elsif (/^d/) {	next if /^dcpa: init/;	next if /^done$/;	next if /^dts/;	next if /^dump i\/o error/;	next if /^dumping to dev/;	next if /^dump succeeded/;	$pfx = '*' if /^dev = /;    }    elsif (/^e/) {	next if /^end \*\*/;	next if /^error in copy/;    }    elsif (/^f/) {	next if /^found /;    }    elsif (/^i/) {	next if /^ib[0-9] at /;	next if /^ie[0-9] at /;    }    elsif (/^l/) {	next if /^le[0-9] at /;    }    elsif (/^m/) {	next if /^mem = /;	next if /^mt[0-9] at /;	next if /^mti[0-9] at /;	$pfx = '*' if /^mode = /;    }    elsif (/^n/) {	next if /^not found /;    }    elsif (/^p/) {	next if /^page map /;	next if /^pi[0-9] at /;	$pfx = '*' if /^panic/;    }    elsif (/^q/) {	next if /^qqq /;    }    elsif (/^r/) {	next if /^read  /;	next if /^revarp: Requesting/;	next if /^root [od]/;    }    elsif (/^s/) {	next if /^sc[0-9] at /;	next if /^sd[0-9] at /;	next if /^sd[0-9]: </;	next if /^si[0-9] at /;	next if /^si_getstatus/;	next if /^sk[0-9] at /;	next if /^skioctl/;	next if /^skopen/;	next if /^skprobe/;	next if /^skread/;	next if /^skwrite/;	next if /^sky[0-9] at /;	next if /^st[0-9] at /;	next if /^st0:.*load/;	next if /^stat1 = /;	next if /^syncing disks/;	next if /^syslogd: going down on signal 15/;    }    elsif (/^t/) {	next if /^timeout [0-9]/;	next if /^tm[0-9] at /;	next if /^tod[0-9] at /;	next if /^tv [0-9]/;	$pfx = '*' if /^trap address/;    }    elsif (/^u/) {	next if /^unit nsk/;	next if /^use one of/;	$pfx = '' if /^using/;	next if /^using [0-9]+ buffers/;    }    elsif (/^x/) {	next if /^xy[0-9] at /;	next if /^write [0-9]/;	next if /^xy[0-9]: </;	next if /^xyc[0-9] at /;    }    elsif (/^y/) {	next if /^yyy [0-9]/;    }    elsif (/^z/) {	next if /^zs[0-9] at /;    }    $pfx = '*' if /^[a-z]+:$/;    s/pid [0-9]+: //;    if (/last message repeated ([0-9]+) time/) {	$seen{$last} += $1;	next;    }    s/^/$pfx/ if $pfx;    unless ($seen{$_}++) {	push(@seen,$_);    }    $last = $_;}$max = tell(Msgs);open(tmp,'|sort >oldmsgs.tmp') || die "Can't create tmp file: $!\n";while ($_ = pop(@seen)) {    print tmp $_;}close(tmp);open(tmp,'oldmsgs.tmp') || die "Can't reopen tmp file: $!\n";while (<tmp>) {    if (/^nd:/) {	next if $seen{$_} < 20;    }    if (/NFS/) {	next if $seen{$_} < 20;    }    if (/no carrier/) {	next if $seen{$_} < 20;    }    if (/silo overflow/) {	next if $seen{$_} < 20;    }    print $seen{$_},":\t",$_;}print `rm -f oldmsgs.tmp 2>&1; echo $max > oldmsgs 2>&1`;

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -