1

我继承了一个中型项目,其中主要(批处理)程序通过大量的 shell 脚本进行工作,这些脚本执行大量进程控制(等待进程完成、休眠、检查条件等)[和通过 perl 脚本重新处理]

是否还有其他通过 shell 脚本进行过程控制的示例?我想看看其他人做了什么作为比较。(因为我不太喜欢 6,668 行的 shell 脚本)

这可能会导致当前程序可以正常工作并且不需要弄乱或出于维护原因 - 这太麻烦了,以另一种方式进行会更容易维护,但我需要其他示例。

为了减少问题的“普遍性”,这是我正在寻找的一个例子:procsup

4

3 回答 3

0

那是一个非常错误的 shell 脚本。您是否考虑过重构它?

从它的声音来看,可能有很多情况下您可以用调用 shell 函数来替换几行代码。如果你能以这种方式简化代码,那么更容易看出逻辑中哪里有错误。

我已经在一个庞大的 PERL 脚本中成功地使用了这种策略,结果证明它存在一些严重的逻辑错误并且存在安全风险,因为它嵌入了以一种容易可逆的方式进行混淆的密码。暴露的密码可能被不知名的人(好吧,一个心怀不满的员工)用来关闭整个全球网络。

一些管理人员倾向于进行安全异常,因为这个脚本非常重要,但是当解释逻辑错误并且很明显这个脚本提供了不正确的数据时,决定没有数据比脏数据更好。编写该脚本的人用一本 PERL 书和脚本的编写自学了编程。

于 2011-02-25T04:46:31.227 回答
0

这是一个很笼统的问题,因此给出具体的答案可能有点困难。(而且你不会对 5000 行长的例子感到满意。)你的应用程序的架构很可能是错误的,需要相当彻底的返工。

您可能已经知道,使用 bash 进行流程控制非常简单:

./test_script.sh &
test_script_pid=$!
wait $test_script_pid # waits until it's done
./test_script2.sh
echo $? # Prints return code of previous command

例如,您可以使用 Python子进程(或者显然使用 Perl)来做同样的事情。如果您有具有大量不同程序的复杂架构,那么过程显然是不平凡的。

于 2011-02-23T14:24:27.187 回答
0

Inquisitor 项目广泛依赖于 shell 脚本的过程控制。您可能希望查看它的包含主要功能集的目录包含它运行的测试(即从属进程)的目录。

于 2011-02-24T08:07:47.530 回答