快速业务通道

shell脚本优化原则(持续更新)

作者 佚名技术 来源 Linux系统 浏览 发布时间 2012-04-22
1、能用内建命令完成的功能尽量不要使用外部命令,使用外部命令会fork新的进程抢占cpu和内存资源.可通过type 命令查看命令是否为内建命令.
2、在脚本中若有代码段需要重用时,最好写成函数形式,可提高脚本执行效能,原因是它将命令放在内存里,这样会更有效率.
3、操作字符串时,能使用${}完成功能的尽量不要使用awk,sed等,原因类似第一条.
4、尽量少用“|”(管道),管道是很耗资源的.下面我们来做个测试.
向一个文件写入10000行随机数
1)使用管道:
cat ceshi.sh
#!/bin/bash
for((i=0;i<=10000;i ));do
echo $RANDOM |tee -a data.txt
done
2)使用内置命令>>:
cat ceshi.sh
#!/bin/bash
for((i=0;i<=10000;i ));do
echo $RANDOM >> data.txt
done
执行脚本 time sh ceshi.sh
结果:
1)real 0m16.876s
user 0m3.639s
sys 0m13.504s
2)real 0m0.474s
user 0m0.375s
sys 0m0.099s
我们这回知道什么叫差距了,当然了一部分时间消耗在tee命令的运用上了.

再举个例子:先看一下http://bbs.chinaunix.net/thread-1006441-1-1.html
这位网友的问题完全可以用sort -t, -k 4 -u infile 来解决,其实真正耗费资源的不是sort而是过多的运用了管道.
5,批量重复命令可选择放入后台执行,提高执行效率,可采用管道来控制同时放入后台执行的进程数以避免负载过高.具体可参考本博《 SHELL模拟多线程脚本的详细注解 》一文.


凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号