免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
楼主: yuhongchun
打印 上一主题 下一主题

专家座谈——脚本分享与交流(大奖) [复制链接]

论坛徽章:
33
ChinaUnix元老
日期:2015-02-02 08:55:39CU十四周年纪念徽章
日期:2019-08-20 08:30:3720周年集字徽章-周	
日期:2020-10-28 14:13:3020周年集字徽章-20	
日期:2020-10-28 14:04:3019周年集字徽章-CU
日期:2019-09-08 23:26:2519周年集字徽章-19
日期:2019-08-27 13:31:262016科比退役纪念章
日期:2022-04-24 14:33:24
61 [报告]
发表于 2011-09-16 20:21 |只看该作者
回复 22# king_819


很多机器里面的grep不能直接查找多个关键字,加上 -E 会比较好。

论坛徽章:
33
ChinaUnix元老
日期:2015-02-02 08:55:39CU十四周年纪念徽章
日期:2019-08-20 08:30:3720周年集字徽章-周	
日期:2020-10-28 14:13:3020周年集字徽章-20	
日期:2020-10-28 14:04:3019周年集字徽章-CU
日期:2019-09-08 23:26:2519周年集字徽章-19
日期:2019-08-27 13:31:262016科比退役纪念章
日期:2022-04-24 14:33:24
62 [报告]
发表于 2011-09-16 20:28 |只看该作者
回复 23# king_819


可以考虑把多条命令合并成一条,减少管道的使用,比如:
  1. Squid1_IP=`awk '/ifconfig_lo0_alias0/{print $2}' /etc/rc.conf`
  2. Squid1Num=`netstat -an | grep -c $Squid1_IP`
  3. adddate=`date "+%Y-%m-%d %H:%M:%S"`
复制代码
还有,三段代码从结构上来看基本一致,写成函数也学会简洁些。

论坛徽章:
33
ChinaUnix元老
日期:2015-02-02 08:55:39CU十四周年纪念徽章
日期:2019-08-20 08:30:3720周年集字徽章-周	
日期:2020-10-28 14:13:3020周年集字徽章-20	
日期:2020-10-28 14:04:3019周年集字徽章-CU
日期:2019-09-08 23:26:2519周年集字徽章-19
日期:2019-08-27 13:31:262016科比退役纪念章
日期:2022-04-24 14:33:24
63 [报告]
发表于 2011-09-16 20:36 |只看该作者
回复 35# wenzizone


模拟tree功能的两个脚本也挺有意思的
http://bbs.chinaunix.net/thread-346943-1-1.html

论坛徽章:
33
ChinaUnix元老
日期:2015-02-02 08:55:39CU十四周年纪念徽章
日期:2019-08-20 08:30:3720周年集字徽章-周	
日期:2020-10-28 14:13:3020周年集字徽章-20	
日期:2020-10-28 14:04:3019周年集字徽章-CU
日期:2019-09-08 23:26:2519周年集字徽章-19
日期:2019-08-27 13:31:262016科比退役纪念章
日期:2022-04-24 14:33:24
64 [报告]
发表于 2011-09-16 20:53 |只看该作者
回复 48# yuhongchun


replication的监控这样是不是更合适:
向master写(或更新)一条数据,几秒钟之后到slave里面去读。

我用MySQL不是很多,但是觉得你那个方法不能100%确定replication没问题。如有理解不当之处,望讲解。

论坛徽章:
6
丑牛
日期:2013-09-17 00:18:40未羊
日期:2013-10-31 12:10:47午马
日期:2013-12-07 01:58:50水瓶座
日期:2013-12-24 22:43:12水瓶座
日期:2014-03-15 21:12:13操作系统版块每日发帖之星
日期:2016-08-07 06:20:00
65 [报告]
发表于 2011-09-16 22:43 |只看该作者
本帖最后由 yuhongchun 于 2011-09-16 22:49 编辑
回复  yuhongchun


replication的监控这样是不是更合适:
向master写(或更新)一条数据,几秒钟之后 ...
Shell_HAT 发表于 2011-09-16 20:53


这个脚本目前暂时只是配合Nagios进行监控而已,后期会进行完善:)我也进行了许多比对,脚本的精确度应该没问题,我确定的条件还是比较苛刻的。

论坛徽章:
27
CU大牛徽章
日期:2013-03-13 15:15:08CU大牛徽章
日期:2013-05-20 10:46:38CU大牛徽章
日期:2013-05-20 10:46:44CU大牛徽章
日期:2013-09-18 15:24:09CU大牛徽章
日期:2013-09-18 15:24:20CU大牛徽章
日期:2013-09-18 15:24:25CU大牛徽章
日期:2013-09-18 15:24:31CU大牛徽章
日期:2013-09-18 15:24:36CU大牛徽章
日期:2013-09-18 15:24:41CU大牛徽章
日期:2013-09-18 15:24:48CU大牛徽章
日期:2013-09-18 15:24:52处女座
日期:2013-09-27 17:45:43
66 [报告]
发表于 2011-09-16 22:50 |只看该作者
本帖最后由 yifangyou 于 2011-09-17 01:14 编辑

1、初学者怎么入门SHELL脚本?  
答:1.入门SHELL的话,首先要熟悉常用的linux系统命令,推荐大家看<linux命令大全>  或者鸟哥私房菜。
      记住最重要的是实践,不动手的话就算把书背熟了也不会。边看边动手。
      2.熟悉基本的linux命令后,建议看<高级shell编程>
         学习基本的循环,判断等等。

2、大家可以分享交流下自己工作的脚本。
答:
  1. #!/bin/bash
  2. ####################################################
  3. #作者:yifangyou
  4. #版本:v1
  5. #日期: 2011-09-17 00:51:00
  6. #系统环境:linux
  7. #编译环境:shell
  8. #执行:     findstr.sh aPath aPattern
  9. #功能:实现遍历某个目录下的文件里的文件内容,打印出包含指定字符串的文件路径
  10. #参数1:文件路径,可以是相对路径,也可绝对路径
  11. #参数2:一个字符串,可以是模式匹配字符串类似于 abc*   \d [0-9]
  12. #参数3..n:要查找的文件后缀,不支持模式匹配 一般就是 log conf 等等文本文件,缺省为 htm html txt log ini conf
  13. #运行:
  14. #[root@localhost ~]# ./findstr.sh . 386
  15. #./a/b/c/d/e/f/b.txt
  16. #./a/install.txt
  17. #./install.log
  18. #[root@localhost ~]# ./findstr.sh . 386 log jsp
  19. #./a/b/c/d/e/f/b.jsp
  20. #./install.log
  21. #[root@localhost ~]# ./findstr.sh . [0-9a-z]
  22. #./a/install.txt
  23. #./install.log
  24. ####################################################
  25. if [ -z "$1" ] || [ -z "$2" ]   # 检查传递给脚本的参数.
  26. then
  27.         echo "Usage: `basename $0` path pattern"
  28.         exit 1
  29. fi  
  30. suffixs=( htm html txt log ini conf )

  31. basepath=$1;
  32. str=$2;
  33. shift
  34. shift
  35. #若是参数中含有其他参数,则认为是查找指定后缀的文件
  36. suffixstr=${suffixs[@]}
  37. if [ $# -gt 0 ]
  38. then
  39.         suffixstr=$@
  40. fi


  41. findstr() {
  42.         local filename=$1;
  43.         if [ -f $filename ] && [ -r $filename ]
  44.         then
  45.                 for suffix in $suffixstr
  46.                 do
  47. #                        判断后缀
  48.       suffixpattern="*.$suffix"
  49.                         if [[ $filename == $suffixpattern ]]
  50.                         then
  51. #                                判断是文件
  52.                                 if [ "`egrep -c $str $filename`" -gt "0" ]
  53.                                 then
  54. #                                        输出结果
  55.                                         echo "$filename";                                       
  56.                                 fi
  57.                                 break;
  58.                         fi
  59.                 done
  60.   else
  61. #    判断是目录
  62.           if [ -d $filename ]
  63.                 then
  64.                         for entry in `ls -A $filename`
  65.                         do
  66. #                                echo $filename/$entry;
  67. #                          递归调用,但是不能超过ulimit -a|grep stack里设定的大小(默认为10240),极有可能产生段错误(这依赖于栈尺寸, 可以用ulimit -m来设置).
  68.                                 findstr $filename/$entry;
  69.                         done
  70.                 fi
  71.    fi
  72. }

  73. #调用函数查找字符
  74. findstr $basepath;
复制代码

论坛徽章:
6
丑牛
日期:2013-09-17 00:18:40未羊
日期:2013-10-31 12:10:47午马
日期:2013-12-07 01:58:50水瓶座
日期:2013-12-24 22:43:12水瓶座
日期:2014-03-15 21:12:13操作系统版块每日发帖之星
日期:2016-08-07 06:20:00
67 [报告]
发表于 2011-09-16 22:51 |只看该作者
1、初学者怎么入门SHELL脚本?  
答:1.入门SHELL的话,首先要熟悉常用的linux系统命令,推荐大家看  或者 ...
yifangyou 发表于 2011-09-16 22:50


这个很期待,最后分享下经验就好了,现在大约还有20多本书没派出去,正愁下家呢~

论坛徽章:
27
CU大牛徽章
日期:2013-03-13 15:15:08CU大牛徽章
日期:2013-05-20 10:46:38CU大牛徽章
日期:2013-05-20 10:46:44CU大牛徽章
日期:2013-09-18 15:24:09CU大牛徽章
日期:2013-09-18 15:24:20CU大牛徽章
日期:2013-09-18 15:24:25CU大牛徽章
日期:2013-09-18 15:24:31CU大牛徽章
日期:2013-09-18 15:24:36CU大牛徽章
日期:2013-09-18 15:24:41CU大牛徽章
日期:2013-09-18 15:24:48CU大牛徽章
日期:2013-09-18 15:24:52处女座
日期:2013-09-27 17:45:43
68 [报告]
发表于 2011-09-17 00:57 |只看该作者
回复 67# yuhongchun
刚刚写了一个脚本,是遍历某个目录下所有子目录下所有指定类型文件,找出包含指定字符串的文件{:3_189:}

论坛徽章:
33
ChinaUnix元老
日期:2015-02-02 08:55:39CU十四周年纪念徽章
日期:2019-08-20 08:30:3720周年集字徽章-周	
日期:2020-10-28 14:13:3020周年集字徽章-20	
日期:2020-10-28 14:04:3019周年集字徽章-CU
日期:2019-09-08 23:26:2519周年集字徽章-19
日期:2019-08-27 13:31:262016科比退役纪念章
日期:2022-04-24 14:33:24
69 [报告]
发表于 2011-09-17 09:13 |只看该作者
回复 68# yifangyou


一个grep命令就够了吧?
  1. grep -Erl --include=\*.txt "abc" /tmp
复制代码

论坛徽章:
6
丑牛
日期:2013-09-17 00:18:40未羊
日期:2013-10-31 12:10:47午马
日期:2013-12-07 01:58:50水瓶座
日期:2013-12-24 22:43:12水瓶座
日期:2014-03-15 21:12:13操作系统版块每日发帖之星
日期:2016-08-07 06:20:00
70 [报告]
发表于 2011-09-17 10:33 |只看该作者
本帖最后由 yuhongchun 于 2011-09-17 10:36 编辑
回复  yifangyou


一个grep命令就够了吧?
Shell_HAT 发表于 2011-09-17 09:13


版主的手好快啊,我正准备回复,恩,确实,grep完全足够了,我个人的习惯是:

grep -rl "abc" /tmp,带上--include=\*.txt 可以更加细化,对吧
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP