我期待在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