我是Linux和shell脚本的新手,所以为了更好地了解如何在后台运行多个进程,我一直在运行一些测试。我写了以下脚本:
#!/bin/bash
firefox &
firefox &
firefox &
wait
echo "done"
我在没有开启Firefox的情况下运行它,它完成了我的预期:它打开了三个Firefox窗口,只打印了#34;完成了#34;当我关闭它们时。
然而,后来我试图在我已经运行了一个Firefox窗口之后执行该脚本并且发生了这样的事情:它确实打开了三个新窗口,但它打印出来了#34;已完成"马上,没有等我关闭其中任何一个。
我曾预料到它要么像最初那样表现,要么等我关闭所有四个浏览器窗口(它开始的三个窗口+我单独启动的那个窗口)。
为了让它更加混乱,每个程序似乎都不会发生这种情况。它发生在LibreOfficeCalc和xed上,但没有用gnome-calculator。它似乎并不关心不同的程序已经在后台运行。
是什么解释了这种行为?
如何编写一个在后台启动多个进程的脚本,而不必担心可能已经运行的其他进程的干扰?
如果相关:我使用Linux Mint 18.3。