同时运行两个命令?

同时运行两个命令?

这是我的问题的本质:

我正在使用我的树莓派来运行维基百科服务器,所以我想制作一个启动器(桌面图标)来启动维基百科服务器并将网络浏览器打开到 localhost:8080。每当我编写脚本来执行此操作时,它只会执行先出现的那个。例如:

./wikipedia_server; ./web_browser

当它们用分号分隔时,它会等待维基百科服务器进程完成(它永远不会完成),然后启动网络浏览器。如果我做

./web_browser; ./wikipedia_server

然后它只是等待,直到我关闭网络浏览器。

有什么方法可以制作一个小脚本来同时执行它们,如果是的话我该怎么做?谢谢。

答案1

您可以将维基百科服务器发送到后台,运行网络浏览器,然后在完成后关闭服务器:

./wikipedia_server &
server=$!
# wait for TCP port 8080 to open up
while ! netstat -tln | grep -q :8080; do :; done
./web_browser
kill $server

...假设您不希望维基百科服务器运行,除非您也在浏览它。

(更新以添加 Ole Tange 评论中的想法:在继续之前等待 Web 服务器的端口打开)

相关内容