我总是成功地使用 & 符号从脚本中在后台启动应用程序。此类后台应用程序似乎与启动它的脚本分离,这意味着当我终止脚本时,应用程序将继续运行。
我现在有一个脚本,它首先启动一些应用程序,其中一些是 flatpaks,然后启动一个无限的 while 循环来监视我的 IP 地址,以检查 VPN 是否仍在工作。
#!/bin/bash
start application 1 &
start application 2 &
start flatpak application 1 &
start flatpak application 2 &
while true
do
check ip address
sleep 180
done
当我使用 ctrl-C 终止脚本时,非 flatpak 应用程序将继续运行(如预期),但 flatpak 会终止。
然而,只有当脚本具有 while 循环时才会发生这种情况:如果我删除 while 循环,那么当我终止脚本时,所有应用程序都会继续运行,包括 flatpaks。
到目前为止,我已经尝试过:
- 使用 & 符号调用应用程序:
/usr/bin/flatpak run --command=de.manuel_kehl.go-for-it de.manuel_kehl.go-for-it &
- 使用 nohup 调用应用程序:
nohup /usr/bin/flatpak run --command=de.manuel_kehl.go-for-it de.manuel_kehl.go-for-it &
- 启动应用程序后调用 disown
/usr/bin/flatpak run --command=de.manuel_kehl.go-for-it de.manuel_kehl.go-for-it &
disown
这些方法都没有帮助。
有人可以解释为什么会发生这种情况吗?有解决办法吗?我希望在终止脚本时保持所有应用程序(包括 flatpaks)运行。
tnx
(在 Linux Mint 19.3 MATE 上使用 bash)
答案1
为了让 Thunderbird 在我的启动脚本中运行,我最终做了以下操作:
/usr/bin/flatpak run --branch=stable --arch=x86_64 --command=thunderbird --file-forwarding org.mozilla.Thunderbird @@u %u @@ &