BASH shell进程控制 - 控制/调度工作的任何其他示例

时间:2011-02-23 14:13:57

标签: bash shell process-control

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

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

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

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

3 个答案:

答案 0 :(得分: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 subprocess(或显然使用Perl)执行相同的操作。如果你有复杂的架构和大量不同的程序,那么过程显然是非常重要的。

答案 1 :(得分:0)

答案 2 :(得分:0)

这是一个非常糟糕的bug shell脚本。你考虑过重构吗?

从它的声音来看,可能有很多实例可以通过调用shell函数替换几行代码。如果您可以通过这种方式简化代码,那么将更容易看到逻辑中存在错误的位置。

我已经成功地使用了这个策略,使用了大量的PERL脚本,结果发现它有一些严重的逻辑错误并且存在安全风险,因为它嵌入的密码以易于反转的方式进行了混淆。暴露的密码可能被未知的人(嗯,一个心怀不满的员工)用来关闭整个全球网络。

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