我有几个命令需要运行。这些命令需要在我退出界面后继续运行。当我可以访问 Linux GUI 时,我会执行如下命令:
cd /home/testuser/Scripts*
xterm -hold -T "Background_Script1" -e "service1-start.sh" &
sleep 10
xterm -hold -T "Background_Script2" -e "service2-start.sh" &
任何帮助都感激不尽。
答案1
尝试
nohup Background_ScriptX &
nohup 确保终端关闭时进程不会终止。& 符号将进程推入后台。
希望这对您有帮助。
答案2
如果您想稍后读取输出,可以使用screen
:
screen -d -m my_command
这将为您提供一个独立的终端,您可以稍后连接到该终端 ( screen -r
) 来读取 stdout/stderr 输出。
答案3
nohup
如果命令不可用,另一个选择是使用否认命令。
首先,您可以通过在终端中运行来查看您的后台任务jobs
。您可以从那里获取作业编号。
现在只需运行disown %[job number]
,该进程就会与当前终端分离,并在您注销时保持活动状态。
附注:确保您问的是正确的问题。如果您正在运行实际服务(如您在示例中所暗示的那样),您可能需要研究如何在您选择的操作系统中创建守护进程。这是为了确保该进程在重新启动后仍能运行,并使其与其他服务更加一致。
希望这可以帮助。
答案4
您也可以尝试: setsid
Setsid 也适用于后台程序,并允许它们在终端/ssh 会话断开连接后继续运行。
使用方式如下:
setsid program-to-background