我原本以为rc.local
,如果我P1
在一行中调用程序,然后P2
在下一行中调用程序,P2
则只会在之后执行P1
(成功执行取决于此)。这是 bash 脚本中的行为。但是,在启动我的机器后,P2
并没有完成。所以我的猜测是,在中编写的所有命令rc.local
都是并行运行的,并且P1
在执行之前没有完成P2
。我猜这种行为对于守护进程来说是有意义的……
如果是并行的,我可以使用&&
运算符或创建包装器脚本来解决这个问题。不过,我还是想确认一下行为:
在 中rc.local
,新行中的命令是按顺序执行还是并行执行?
答案1
中的行rc.local
不会并行执行。它将按照与任何其他 bash 脚本相同的顺序执行。
不要猜测为什么P2
没有运行,通过记录其输出来确定。例如:
P1 > /tmp/P1.startup 2>&1
P2 > /tmp/P2.startup 2>&1
如果P1
必须在P2
运行前成功完成,则需要设置 if true 语句。以下其中一个语句可行:
P1 && \
P2
或者
P1
test $? -eq 0 && P2
或者
P1
if [[ $? == 0 ]]
then
P2
fi