![Bash 文件自动化](https://linux22.com/image/907677/Bash%20%E6%96%87%E4%BB%B6%E8%87%AA%E5%8A%A8%E5%8C%96.png)
我有如下场景:
我有一个名为的 bash 文件infra.sh
。在这个 infra.sh 文件中,我有以下命令:
#!/bin/bash
gnome-terminal -e 'sh -c "bash ./redis-server.sh && sleep 30"'
gnome-terminal -e 'sh -c "bash ./redis-client.sh && sleep 30"'
gnome-terminal -e 'sh -c "bash ./playServer.sh && sleep 30"'
gnome-terminal -e 'sh -c "bash ./proclient-service.sh && sleep 30"'
gnome-terminal -e 'sh -c "bash ./infoServer.sh"'
infra.sh
现在如果我通过输入从终端执行
sudo sh ./infra.sh
然后,上述所有命令都会在单独的终端中执行。它们正在运行。
但我希望以这样一种方式启动,infra.sh
即所有服务都在后台运行,并且我执行启动命令的终端infra.sh
也将在后台运行。
是否可以?
提前致谢。
答案1
这里有两个选择:
gnome-terminal <command> &
:将在后台运行该命令,但如果终端关闭,该命令将会结束。nohup gnome-terminal <command> &
:将在后台运行,即使终端窗口关闭仍会继续运行。
现在使用&
或nohup
像这样nohup sudo sh ./infra.sh &
运行该脚本sudo sh ./infra.sh &