存档

‘shellscript’ 分类的存档

shell求文件夹中某些文件的大小

2012年12月2日 没有评论

工作中碰到需要shell求文件夹中某些文件的大小,不是所有文件的

所以du -sh用不上

这里简单点就一行搞定:

sum=0;for i in `ls -l *.log|awk ‘{print $5}’`;do sum=`expr $sum + $i`;done;echo `expr $sum \/ 1024 \/ 1024`

这里是所有后缀为.log的文件,ls -l之后第五列是大小字节数,expr出来后成M字节为单位.

分类: shellscript 标签:

sed用法一例

2012年9月8日 没有评论

sed -i ‘s/127.0.0.1/&ok/g’ 1.txt

意思就是在所有127.0.0.1后面插入ok

这里&就是代表前面的表达式所匹配的内容

分类: shellscript 标签:

shell面试题一例-求文本每行数字的和

2012年8月24日 1 条评论

有次去面试,遇到一个问题,一个文本多列,某列是数字,求这些数字的和,要求一行命令搞定。

文本类似于:
cat num.txt

阅读全文…

分类: shellscript 标签: , , ,

mysql分库分表的自动备份脚本

2012年8月17日 没有评论

线上经常使用mysql,数据需要备份,但是人工去备份明显不合适,所以自己写了个自动备份数据库中所有添加的数据库的脚本

使用了一段时间之后,发现由于单库过大,有时候需要做单表数据恢复的时候要消耗大量的时间2小时+,所以后来做了个按照每个表分成数据和表结构备份的功能,同时使用多进程运行mysqldump来备份,提高了备份的速度。

同时,不用指定固定的那几个库,自动全部备份所有用户添加的数据库,减少了以前由于忘记添加新加数据库的本分导致的后来很久之后需要还原数据而找不到备份文件的痛苦。

另外出于数据安全性考虑,所有备份文件按照库来打包加密压缩,按库名为文件夹,日期后缀为名字来存储。本地存储一周数据备份,自动在ftp服务器上创建备份文件夹,并将备份数据上传到异地服务器上。

需要的工具:ncftp,rar,shellscript,awk等

阅读全文…

自己写的使用SNMP协议的Linux、Windows服务器巡检脚本

2012年8月17日 没有评论

手头管理的机器越来越多,领导要求每天定时巡检,还要做报表,cacti之类的明显不合适。有次偷懒,结果出了问题没及时发现,还被训了。

但是每天人工手动去检查服务器,明显不符合我这样的偷懒的人的性格,所以我还是的想偷懒的办法。

先观察下这些机器,Linux,ubunt的发行版;windows 的,2003的。

由于最近用了shellscript,觉得还好,刚好最近又看了篇人家写的用snmo监控aix的脚本,所以这里也学人家通过snmp协议来做监控脚本。

需要的工具:snmp相关的,然后被监控的各个机器上安装snmp服务,这里就不一一说开了。还用到的有awksed,sendEmail等各种命令。

整个脚本成型耗时有2个多月时间了吧,期间查找了不少snmp相关的资料和shell脚本和命令的一些用法,也问过很多同行网友。这个就脚本在命令行输出表格式的现实,然后还邮件发送一个html的表格,要报表到时候直接打出来签个字就OK了。方便快捷,正适合我等懒人。后来用这个脚本我着实的偷了很多懒了。这个脚本还有很多改进余地:比如后台循环执行,有故障就邮件报警,html报表可以用盐水来表示等级,正常、有风险、有故障等,有兴趣的可以去改进下。由于防止脚本的服务器故障,导致完整的带html报表的脚本丢失,这里是最后的一个算是功能完整的脚本。

阅读全文…

shell脚本调试技术

2012年8月10日 没有评论

使用trap命令

trap命令用于捕获指定的信号并执行预定义的命令。
其基本的语法是:
trap ‘command’ signal

使用shell的执行选项

-n 只读取shell脚本,但不实际执行
-x 进入跟踪方式,显示所执行的每一条命令
-c “string” 从strings中读取命令

阅读全文…

join 排序的问题。。。

2012年6月26日 没有评论

join 用法:

join命令类似 db里面的join方法,同样有left join right join inner join等
指定参数-a 可以指定join的方式。
-a1表示 显示第一个文件中不匹配的行,即为left join
-a2 表示 显示第二个文件中不匹配的行,即为right join
-o 1.1 2.1 -o是输出参数,1.1表示输出第一个文件的第一列;2.1表示输出第二个文件的第一列
-t “|” 是分隔符参数, 表示指定|作为域分隔符
-j 1.1 2.1 -j是表示连接的字段参数, 这里表示第一个文件的第一列和第二个文件的第一列关联

这里是想通过join来连接两个文件中的字段,文件生成脚本如下:

阅读全文…

分类: shellscript 标签: , , ,