rc.local,按顺序调用命令(一个接一个地完成)

rc.local,按顺序调用命令(一个接一个地完成)

我原本以为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

相关内容