收藏 分享(赏)

常用shell脚本收集.doc

上传人:精品资料 文档编号:10256458 上传时间:2019-10-25 格式:DOC 页数:12 大小:23.51KB
下载 相关 举报
常用shell脚本收集.doc_第1页
第1页 / 共12页
常用shell脚本收集.doc_第2页
第2页 / 共12页
常用shell脚本收集.doc_第3页
第3页 / 共12页
常用shell脚本收集.doc_第4页
第4页 / 共12页
常用shell脚本收集.doc_第5页
第5页 / 共12页
点击查看更多>>
资源描述

1、 常用 shell 脚本工具收集常用 shell 脚本小工具摘自 ,作者:mxin1.批量改名或拷贝文件比如将 start*.sh 文件改为 stop*.sh拷贝先查看ls -l start*.sh|awk m=$9; gsub(/start/,“stop“,$9);print “cp “m “ “$9再运行ls -l start*.sh|awk m=$9; gsub(/start/,“stop“,$9);print “cp “m “ “$9|sh改名先查看ls -l start*.sh|awk m=$9; gsub(/start/,“stop“,$9);print “mv “m “ “$9再

2、运行ls -l start*.sh|awk m=$9; gsub(/start/,“stop“,$9);print “mv “m “ “$9|sh2.改进 grep 2048 字符限制的小工具我们查找匹配文件时常常遇到 grep 报行长度超过 2048 这样的错误,我做了这个小工具,findtxt,可查找当前目录下的匹配文件,如果需要,把注释打开,可显示匹配内容。希望对大家有所帮助。for file in find . ! -type ddoline=sed -n /$1/p $fileif “$line“ != “ ; thenecho $file# echo $linefidone3.查看

3、文件使用者的小工具 对 fuser 的一点改进:1.vi showuser 建立一个文件,内容只有一句:find $1 -exec fuser -u ; 2;find /var/tmp -mtime +5 -exec rm -f ;find /var/preserve /recycle -mtime +7 -exec rm -f ;crontab0 1 * * * /home/scripts/rmlog.sh /tmp/rmlog.log 2thenecho “no para, example:varyoff_vg.sh erpapp_vg “exitfidf -k|awk print $7

4、|grep -v Mounted /tmp/fs_mounted.txtfor i in lsvg -l $1 |grep -vE “N/A|vg|MOUNT“|awk print $7doif grep -c $i /tmp/fs_mounted.txt -ge 1 ; thenecho fuser -kc $iumount $ifidonevaryoffvg $1 6.kill_fs_user.sh (停掉使用某文件系统的用户,自动判断该文件系统是否 mount,避免 kill 掉其他用户)if $# -le 0 ;then echo “no para, example:kill_user

5、.sh /applprod “ exitfidf -k|awk print $7 |grep -v Mounted /tmp/du_.txtif grep -c $1 /tmp/du_.txt -eq 1 ; thenecho fuser -kc $1 fi7.mklvcopy 做镜像相当于 mirror rootvg,但当 rootvg 里有不想 mirrror 的 lv 或盘大小不一时比较有用。常用 shell 脚本工具收集#mkmirrorvg.shmklvcopy -k hd5 2 $1mklvcopy -k hd6 2 $1mklvcopy -k hd8 2 $1mklvcopy -

6、k hd4 2 $1mklvcopy -k hd9var 2 $1mklvcopy -k hd3 2 $1mklvcopy -k hd1 2 $1mklvcopy -k hd2 2 $1mklvcopy -k hd10opt 2 $1mklvcopy -k lg_dumplv 2 $1 bosboot -ad $1bootlist -m normal $1 8.察看根目录各文件和子目录大小,去除文件系统统计# du_.shdf -k|awk print $7 |grep -v Mounted /tmp/df_mounted.txtcd /for i in ls -l|awk print $9|

7、grep -v “-i“doif grep -c $i /tmp/df_mounted.txt -eq 0 ; thendu -sk $ifi done 9.防止文件系统下和根目录下 rm -rf * 误操作#deny_rmall.shcd /;touch ./-i;df -k|grep -v Mounted|grep -v proc|grep -v “/tmp“|awk print “cp “./-i“ “ $7|shcp “/-i“ /etccp “/-i“ /dev10. 保存清理 errpt, (当然可以改为其他目录 )#errclear.sherrpt /home/mxin/mon/

8、log/errpt_date +%Y%m%d.logerrpt -a /home/mxin/mon/log/errpt_date +%Y%m%d.logerrclear 0 11.起大量 shell 脚本#start_procs.shcat start_procs.list|awk print “sh “$1“.sh“|sh常用 shell 脚本工具收集#start_procs.list(可追加修改)startprocessorProcProcessor/home/scripts/startArocessorp_mj_deal_cardevent12.停大量进程# stop_procs.shc

9、at procs.list|awk print “stop_proc.sh “$1|sh#stop_proc.shps -ef|grep $1|grep -v grep|awk print “kill -9 “$2|sh#stop_procs.list(可追加修改)startprocessorProcProcessorJackrocessorp_mj_deal_cardevent 13.收集系统信息echo -hostname-prtconfecho -lsvg;lsvg lsvg -oecho “-lsvg -l “;lsvg -l lsvg -oecho “-lslv lv “;lsvg

10、-l lsvg -o|grep -v “LV NAME“|grep -v awk print “lslv “$1|shecho -df;df -k;lsfsecho -netstat;netstat -in;netstat -i;netstat -recho -ps;ps -efk;ps guecho -lscfg;lscfg -vpecho -lssrc;lssrc -aecho -lsslot;lsslot -c pciecho -lspv;lspvecho -lslpp;lslpp -lecho -lsattr; lsdev -C|awk print “echo -“$1“;lsattr

11、 -El “ $1|shecho -prtconf -v;prtconf -vecho -errpt; errpt ;errpt -aecho -major; ls -al /dev/*echo -hosts file; cat /etc/hostsif ps -ef|grep cluster|grep -v grep|wc -l -ge 1 ;then常用 shell 脚本工具收集echo -HA INFO/usr/es/sbin/cluster/utilities/cltopinfo -c;/usr/es/sbin/cluster/utilities/cltopinfo -n;/usr/e

12、s/sbin/cluster/utilities/clshowres -nhostname;/usr/es/sbin/cluster/utilities/cldispfi14.将多级子目录的权限放开#chmod_dir.shecho for example:chmod_dir.sh rwx /home/mxin/monecho $1$2 /tmp/chmod_dir.txtcat /tmp/chmod_dir.txt|awk -F / print “chmod o+x /“$2“;chmod o+x /“$2“/“$3“;chmod o+x /“$2“/“$3“/“$4“;chmod o+x

13、/“$2“/“$3“/“$4“/“$5“;chmod -R o+“$1“ /“$2“/“$3“/“$4“/“$5“/“$6|sh 15.监控 oracle 是否有锁。#mon_db_lock.sh. .profilecd /home/mxin/monif date +%H%M = “0800“ ; thenecho 0 warn_count fi warn_count=cat warn_countsqlplus “/as sysdba“ /tmp/mon_db_lock.out1cat /tmp/db_lock.out2|grep -v SQL|grep 0-9 /tmp/mon_db_loc

14、k.out2cat /tmp/db_lock.out3|grep -v SQL|grep 0-9 /tmp/mon_db_lock.out3cat /tmp/mon_db_lock.out1|grep -v SQL|grep 0-9|awk print “grep “$0“ /tmp/mon_db_lock.out2“|sh /tmp/db_lock1if cat /tmp/db_lock1|wc -l -gt 0 ; then cat /tmp/mon_db_lock.out2|grep -v SQL|grep 0-9|awk print “grep “$0“ /tmp/mon_db_loc

15、k.out3“|sh /tmp/db_lock2if cat /tmp/db_lock2|wc -l -gt 0 ; then cat /tmp/mon_db_lock.out3|grep -v SQL|grep 0-9|awk print “grep “$0“ /tmp/mon_db_lock.out.old“|sh /tmp/db_lock3if cat /tmp/db_lock3|wc -l -gt 0 ; then cat /tmp/db_lock3|awk print “wall db lock-“ “$0 “!“ |shlet warn_count=$warn_count+1fif

16、ificp /tmp/mon_db_lock.out3 /tmp/mon_db_lock.out.oldif $warn_count -gt 4 ; thenbeep.shecho 0 warn_countfi#mon_db_lock.sqlset linesize 256col object_name format a18col object_id format 99999999col Locked_Mode format a15col SERIAL# format 9999999col session_id format 999999col oracle_username format a

17、15col os_user_name format a15col process format 9999999SELECT substr(b.object_name,1,1 object_name,a.object_id, decode( a.locked_mode, 0, None, /* Mon Lock equivalent */ 1, Null, /* N */ 2, Row-S (SS), /* L */ 常用 shell 脚本工具收集3, Row-X (SX), /* R */ 4, Share, /* S */ 5, S/Row-X (SSX), /* C */ 6, Exclu

18、sive, a.locked_mode) Locked_Mode, /* X */ session_id, SERIAL#,oracle_username, os_user_name, a.process FROM v$LOCKED_OBJECT a, dba_OBJECTS b,v$session cWHERE a.object_id = b.object_id and a.session_id=c.sid/ 16.监控 oracle 的表空间# mon_ts_space.shcd /home/oraprodsqlplus “/as sysdba“ /tmp/fs_mounted.txtfo

19、r i in lsvg -l $1 |grep -vE “N/A|vg|MOUNT“|awk print $7doif grep -c $i /tmp/fs_mounted.txt -ge 1 ; thenecho fuser -kc $ifuser -kc $ifi done18.每月月底执行的脚本#month_lastday.sh. .profileTZ=TZ-24echo date +%dif date +%d = “01“ ; thenecho “ok. today is last day of this month. run it!“#insert your shell script

20、sfi19.每月 1 日执行的脚本#month_firstdy.sh. .profileTZ=TZ+24echo date +%dif date +%d = “02“ ; thenecho “ok. today is firstday of this month. run it!“#insert your shell scriptsfi常用 shell 脚本工具收集20.跟踪 oracle export 结果的脚本(放在 exp 脚本最后)#exp_check.shif tail /tmp/exp_dvlp.log|grep “ success“|wc -l -lt 1 ;thenecho “

21、db dvlp export fail!“ #报警wall “db dvlp export fail!“fi 21.检查系统的进程a.check_proc.sh:#check_proc.shcat check_proc.list|awk -F “,“ print “Check_proc.sh “$1“ “$2“ “ “$3 |shb.check_proc.list:(可修改)telnet,telnetd -a,2 xcom,xcommanager.py,1c.Check_proc.sh:#Check_proc.sh export LANG=en_UScount=ps -ef|grep “$2“

22、|grep -v grep|wc -lif $count -lt $3 ;thenecho $1 has not be started all,the number is $count/$3!fi运行示例:test3root/home/mxinps -ef UID PID PPID C STIME TTY TIME CMDroot 1 0 0 Aug 10 - 0:11 /etc/init root 77910 1 0 Aug 10 - 5:53 /usr/sbin/syncd 60 root 102470 1 0 Aug 10 - 0:00 /usr/ccs/bin/shlap64 root

23、 106572 1 0 Aug 10 - 0:00 /usr/lib/errdemon root 139366 1 0 Aug 10 - 0:00 /usr/sbin/srcmstr root 164068 139366 0 Aug 10 - 0:00 /usr/sbin/snmpd root 184466 139366 0 Aug 10 - 4:38 /usr/sbin/aixmibd root 246002 1 0 Aug 10 vty0 8:50 -ksh root 409612 139366 0 Aug 10 - 0:05 sendmail: accepting connections

24、 root 417830 139366 0 Aug 10 - 0:00 /usr/sbin/syslogd root 421898 1 0 Aug 10 - 0:00 /usr/sbin/uprintfd root 442602 782494 0 16:19:29 - 0:00 telnetd -a 常用 shell 脚本工具收集root 446688 442602 0 16:19:29 pts/1 0:00 -ksh root 466976 782494 0 Sep 07 - 0:00 ftpd root 471108 139366 0 Aug 10 - 0:01 /usr/sbin/hos

25、tmibd root 495680 1 0 Aug 10 - 0:04 /usr/sbin/cron root 508018 139366 0 Aug 10 - 0:00 /usr/sbin/portmap root 708686 782494 0 Sep 07 - 0:00 ftpd root 729196 139366 0 Aug 10 - 0:04 /usr/sbin/snmpmibd root 733290 139366 0 Aug 10 - 0:00 /usr/sbin/muxatmd root 762026 446688 0 17:46:17 pts/1 0:00 ps -ef r

26、oot 782494 139366 0 Sep 07 - 0:00 /usr/sbin/inetd test3root/home/mxincheck_proc.sh telnet has not be started all,the number is 1/2!xcom has not be started all,the number is 0/1!22文件中抽取指定字符,并定向到新文件举例:从监控结果中抽取 PGA 使用情况的数据,这个数据的特点是所在行只有一个变量#!/usr/bin/ksh#Script name: Grep specific word from a file#Usag

27、e: filegrep filenamefile_time=$(date +%Y%m%d%H%M)newfile=$PWD/$1.$file_timelines=$(cat $1 |wc -l)#cat $1 | while read LINEdoif -n “$LINE“ & (print $LINE|grep -v # /dev/null)thenset $LINE if ( $# = 1 )thenprint $LINE |grep -v “SUM(S.PGA_USED_MEM)“ | awk print $1 $newfilefifidone exit 0扩展用法:除了 PGA 使用情

28、况的前面添加时间。时间所在行有两个变量,可以将时间和 PGA 使用数值同时过滤出来,定义到$.tmp1 ,然后将时间和 PGA 使用数值打印到同一行,并用 tab 键隔离开,定向到$.tmp2,这时,对于每一行,$1 与 $2 都是时间,而$3 是 PGA 使用数值,故对每一行只打印$1 与$3 ,定向到$newfile。#!/usr/bin/ksh#Script name: Grep specific word from a file#Usage: filegrep filenamefile_time=$(date +%Y%m%d%H%M)常用 shell 脚本工具收集cat $1|grep

29、 -v weblogic|grep -v SQL|grep -v -|grep -v SUM |grep -v SID|grep -v rows |grep -v Copy|grep -v With|grep -v and$.tmpnewfile=$PWD/$1.$file_timelines=$(cat $1 |wc -l)#cat $.tmp | while read LINEdoif -n “$LINE“ #& (print $LINE|grep -v # /dev/null)thenset $LINE if ( $# $.tmp1fifidone rm $.tmp#cat $.tmp1

30、 | while read LINEdoif -n “$LINE“ & -n print $LINE|grep “:“ thenprint -n “$LINEt“ $.tmp2elseprint “$LINEt“ $.tmp2fidone rm $.tmp1#cat $.tmp2 | while read LINEdoset $LINEprint “$1t$3“ $newfiledonerm $.tmp2exit 0按行号循环整理数据,实例:每 8 行输出到一行,循环执行:#!/usr/bin/ksh#Script name: Grep specific word from a file#Us

31、age: filegrep filenamefile_time=$(date +%Y%m%d%H%M)newfile=$PWD/$1.$file_time常用 shell 脚本工具收集cat $1 |grep -v *|grep -v ALERT|grep -v “GBL_SWAP_SPACE_AVAIL“ |awk print $2“ “$3“ “$5“ “ $.tmp#i=1cat $.tmp | while read LINEdoif -n “$LINE“ & $i -lt 9 thenif $i != 8 thenprint -n “$LINEt“ $newfileelseprint “$LINE“ $newfilefi(i+=1)elseprint -n “$LINEt“ $newfile i=2fidone rm $.tmpexit 0

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 企业管理 > 管理学资料

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报