我有一种情况,图像我有一个第一个运行命令,它启动一个数据库服务器,在这个命令的最后,它将挂起并监听某个端口。我有第二个命令,它启动一些Web服务器从第一个命令连接到数据库。
现在我不知道如何编写这个简单的命令,尝试过:
A ; B
哪个不起作用,因为当A进入暂停状态时,b不执行,如果我输入ctrl + c,则B启动,但它不再有意义,因为A已经终止,因此没有数据库进程。
我试过了:
A && B
它既不起作用,B也不会执行,因为A不会退出成功。
我想过使用:
A & B
有时不起作用,因为当A被放入后台时,B会立即启动,所以有时候,B在A还没有完成时尝试连接到数据库端口,所以有' s还没有数据库进程。
如何才能实现B仅在A成功启动数据库时启动?
答案 0 :(得分:2)
有点宽泛,但我想它得到了重点
A&
while [ some_test_fails ]; do
sleep some_time
done
B
答案 1 :(得分:0)
我会用
A ; B
但是B需要询问A是否完全启动。如果是,继续实际执行B.如果没有睡一段时间再问一次。这个问题的一个糟糕的解决方案可能是存在某个文件。
我不会使用anubhava的解决方案,因为如果睡眠时间太短,可能会导致不稳定。
答案 2 :(得分:0)
I thought of using:
A & B
在进程B中,你做了一个循环来检查A是否被暂停。
How to see if a process is suspended in unix
如果A暂停,则B“Main”开始。