Shell性能调优

一、避免不必要的外部命令避免管道嵌套太深       写shell角本很爽,其中管道与重定向提供的强大的组合能力功不可没,管道的结构始终闪现在UNIX的设计中,促进了“做单件事比做好”哲学的萌发,因此写shell角本时很容易习惯性地拼接管道,awk、sed、bc等外部命令嵌入太多,管道层次太深,导致性能不佳,awk、sed等外部命令具有强大的文本处理能力,带来的弊端是频繁的进程生成维护的性能开
摘要由CSDN通过智能技术生成

一、避免不必要的外部命令避免管道嵌套太深

       写shell角本很爽,其中管道与重定向提供的强大的组合能力功不可没,管道的结构始终闪现在UNIX的设计中,促进了“做单件事比做好”哲学的萌发,因此写shell角本时很容易习惯性地拼接管道,awk、sed、bc等外部命令嵌入太多,管道层次太深,导致性能不佳,awk、sed等外部命令具有强大的文本处理能力,带来的弊端是频繁的进程生成维护的性能开销,针对此可以:

  1. shell本身提供了丰富的字符串处理能力,如果能用原生的命令处理的不要使用awk、sed处理

    (shell字符串操作可以参考此文:http://tldp.org/LDP/abs/html/string-manipulation.html)

  2. 如果文本需要非常复杂的处理,可以考虑用perl、python等来实现,比如perl就是专门为了取代awk而诞生的

二、使用后台执行

     如查任务执行需要比较长的时间,可以考虑把任务分割成多个子任务并放后台处理,在bash里很方便通过在命令后面加符合“&”启动新的后台进程,wait命令可用来等待所有后台进程执行完成(等待某个特定进程用:wait pid),并行处理伪码:

for ARG in  $*;do

    command $ARG &

    NPROC=$(($NPROC+1))

    if [ "$NPROC" -ge 4 ];then

        wait

        NPROC=0

    fi

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值