rc.local,顺序调用命令(一个完成另一个之后)

我期待在rc.local ,如果说我在一行中调用程序P1 ,然后在下一行中调用P2 ,那么P2只会在P1之后执行(取决于成功执行)。 这是bash脚本中的行为。 但是,启动我的机器后, P2没有完成。 所以我的猜测是所有写在rc.local中的命令都是并行运行的, P1在执行P2之前没有完成。 我猜这个行为对守护进程有意义…

如果它是平行的,我可以通过使用&&运算符或创build一个包装脚本来解决这个问题。 不过,我想确认一下这个行为:

rc.local ,新行中的命令是按顺序执行还是并行执行?

来自rc.local的行不是并行执行的。 它将像其他任何bash脚本一样以相同的顺序执行。

不要猜测为什么P2没有运行,通过logging它的输出肯定会发现。 例如:

 P1 > /tmp/P1.startup 2>&1 P2 > /tmp/P2.startup 2>&1 

如果P1必须在P2运行之前成功完成,那么你将需要设置一个if语句。 其中之一将工作:

 P1 && \ P2 

要么

 P1 test $? -eq 0 && P2 

要么

 P1 if [[ $? == 0 ]] then P2 fi