5
|
Jon Ericson Homunculus Reticulli · 技术社区 · 17 年前 |
![]() |
1
13
当你利用shell脚本的优势时,使用它们是可以的。我的公司有一些5类软交换机,呼叫处理代码和配置接口是用java编写的。其他所有内容都写在KSH-DB转储中,用于备份、修剪、日志文件轮换和所有自动报告。我认为,所有这些支持功能虽然与呼叫路径没有直接关系,但都是关键任务。尤其是DB交互。如果DB交互代码出现问题并转储了呼叫路由表,可能会让我们破产。 但没有什么会出错,因为shell脚本是处理此类事情的完美语言。它们很小,很容易理解,操纵文件是它们的优势,而且它们很稳定。KSH09不会完全重写,因为有人认为它应该编译成字节码,所以它是一个稳定的接口。坦率地说,用Java编写的配置接口经常出现问题,我记得shell脚本从未出现过问题。 |
![]() |
2
6
我有点认为这篇文章指出了一个很好的不使用shell脚本的原因列表——你指出的一个关键任务要点更像是基于所有其他要点的结论。 话虽如此,我认为你不想在shell脚本上构建关键任务应用程序的原因是,即使其他要点都不适用 今天 ,任何将在一段时间内维护的应用程序都将 发展 甚至在某个时候被这些潜在陷阱中的至少一个所困扰。……如果不彻底解决这个问题,你真的什么也做不了。…希望你从一开始就使用更多的工业实力。 |
![]() |
3
5
显然,这对我来说有点像稻草人。我真的很想知道为什么人们认为在“关键任务应用程序”中应该避免使用shell脚本,但我想不出一个令人信服的理由。 例如,我看到(并编写)了一些使用SQL*Plus与Oracle数据库交互的ksh脚本。遗憾的是,由于查询没有使用绑定变量,系统无法正常扩展。对shell脚本进行攻击,对吗?错了。问题不在于shell脚本,而在于SQL*Plus。事实上,当我用连接到数据库并使用绑定变量的Perl脚本替换SQL*Plus时,性能问题就消失了。 我可以很容易地想象,将shell脚本放在航天器飞行软件中是一个坏主意。但Java或C++可能是同样糟糕的选择。最好的选择是通常用于此目的的任何语言(汇编?)。 事实上,如果你使用任何风格的Unix,你都是在任务关键的情况下使用shell脚本,假设你认为启动是任务关键的。当一个脚本需要做一些shell不太擅长的事情时,您可以将这部分放入子程序中。你不能全盘抛弃剧本。 |
![]() |
4
5
脚本只不过是计算机程序。有些人会认为脚本不那么复杂。这些人通常会承认,你可以用脚本语言编写复杂的代码,但从定义上讲,这些脚本真的不再是脚本,而是成熟的程序。 无论什么。 在我看来,正确的答案是“这取决于”。顺便说一句,这与你是否应该信任关键任务应用程序的编译可执行文件的相反问题的答案是一样的。 好的代码是好的,坏的代码是坏的——无论是用Bash脚本、Windows CMD文件、Python、Ruby、Perl、Basic、Forth、Ada、Pascal、Common Lisp、Cobol还是编译的C编写的。 哪个 不 说语言的选择并不重要。 有时,选择特定语言或编译与解释(性能、可扩展性、能力、安全性等)是有充分理由的。但是,在所有条件都相同的情况下,我会相信一个伟大的程序员编写的shell脚本,而不是一个傻瓜编写的等效C++程序。 |
![]() |
5
2
可能是shell脚本帮助一家公司 到…里面 未来。从编程的角度来看,我知道我会浪费大量时间做我委托给shell脚本的重复任务。例如,我知道命令行的大多数subversion命令,但如果我能将所有这些命令合并到一个脚本中,我就可以随意触发,这样可以节省时间和精力。 正如其他一些人所说,语言是一个因素。对于我简短的不想回忆的步骤和粘合程序,我完全信任我的shell脚本并依赖它们。这并不意味着我要构建一个在后端运行bash的网站,但我肯定会使用bash/ksh/python/任何东西来帮助我生成骨架项目并管理我的打包和部署。 |
![]() |
6
2
当我读到这句话时,我专注于“ 应用 而不是“关键任务”部分。
我读起来是说bash不是用来编写应用程序的,它是用来编写脚本的。当然,您的应用程序可能有一些内务脚本,但不要编写
|
![]() |
7
0
我敢打赌,作者表明他们对qualtiy-wrt-shell脚本的某些方面感到不舒服。例如,谁对BASH脚本进行单元测试。 此外,脚本与底层操作系统严重耦合,这可能是一件坏事。 |
![]() |
8
0
不管怎样,我们都需要一个灵活的工具来与操作系统交互。它是与我们使用的操作系统进行的人类可读的交互;这就像用螺丝刀拧螺丝一样。命令行始终是我们需要的工具,无论是管理员、程序员还是网络。看看他们甚至在Powershell上扩展的窗口。 |
![]() |
9
-2
脚本不适合实现某些关键任务功能,因为它们必须同时具有+r和+x权限才能运行。可执行文件只需要+x。 脚本具有+r的事实意味着用户可以复制脚本,编辑/颠覆它,并执行他们编辑过的Cuckoo's Egg版本。 |