科技行者

行者学院 转型私董会 科技行者专题报道 网红大战科技行者

知识库

知识库 安全导航

至顶网软件频道基础软件如何用execline编写Linux脚本

如何用execline编写Linux脚本

  • 扫一扫
    分享文章到微信

  • 扫一扫
    关注官方公众号
    至顶头条

execline是一款优秀的脚本工具,对那些需要处理大量脚本,或能够(同时)执行许多次的脚本,或应用嵌套环境的开发者更是如此。

作者:builder.com.cn 2007年1月19日

关键字: VincentDanen 脚本 Linux shell

  • 评论
  • 分享微博
  • 分享邮件

本文介绍了一种替代传统shell脚本(如bash)的方法。如果你的资源有限,你可以考虑使用execline脚本这种更加简洁、安全而快速的脚本方法。

许多人用bash,或“sh”(它一般,但并非总是指bash)编写shell脚本。其它shell也有执行shell脚本的功能,但由shell执行shell脚本的问题在于:它们可能占用更多内存,因为如果你从一个shell中执行shell脚本,你要运行两个而不是一个shell。例如,如果你执行一个shell脚本并查看它的输出结果,可能会看到以下内容:

25024 pts/0Rs0:00 -zsh

25036 pts/0T0:00 /bin/sh ./test.sh

25037 pts/0T0:00 sleep 100

在编写shell脚本时,存在一些替代bash和类似shell的方法,特别是如果资源有限的时候更是如此。execline就是其中一种替代方法。execline是一种非交互性的安全脚本语言,其语法与传统的shell有很大差异。它非常简单直接,安全而便利,速度也非常快。

例如,如果上面的结果是由test.sh脚本输出的,它包含以下代码:

#!/bin/sh

sleep 100

其对应的execline代码为:

#!/bin/sh

/bin/foreground { /bin/sleep 100 }

但是我们注意到,与/bin/sh不同的是,execline程序没有延迟:

16183 pts/0Rs0:00 -zsh

16247 pts/0T0:00 /bin/sleep 100

这是因为execline建立了一个事件链,然后退出。每段execline脚本的每一行用前一个命令的输出结果作为下一个命令的输入。一旦execline解析了脚本,它启动事件链,然后退出。虽然execline在处理许多类型的脚本方面非常优秀,但它也存在一些限制。它不能处理需要编写脚本的每一种情况。(访问http://www.skarnet.org/software/execline/execline.html,参阅“当前限制”部分。)

当execline与runit这样的工具结合使用时,由于系统开销低,系统启动速度非常迅速。一旦你习惯它们后,execline脚本也不会过于复杂。列表A中Annivx内提供的第1阶段runit脚本就是一个典型的例子。

另外,使用execline并不排除使用shell测试,但不是应用下面的代码:

if [ -f /sbin/runit.old ]; then

?rm -f /sbin/runit.old

fi

而是使用:

/bin/foreground {

/bin/if {

/usr/bin/test -f /sbin/runit.old

}

/bin/rm -f /sbin/runit.old

}

execline是一款优秀的脚本工具,对那些需要处理大量脚本,或能够(同时)执行许多次的脚本,或应用嵌套环境的开发者更是如此。

责任编辑:张琎

查看本文国际来源

    • 评论
    • 分享微博
    • 分享邮件
    邮件订阅

    如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。

    重磅专题
    往期文章
    最新文章