如何将Linux前台程序转到后台执行并关闭终端而不杀死命令?

1. 使用Ctrl+Z暂停程序

在终端中运行的前台程序,可以使用Ctrl+Z组合键将其暂停。这将使该程序停止在运行状态,并且会返回一个控制台提示符,让你继续输入其他命令。

^Z

2. 使用bg命令将程序转到后台

一旦程序被暂停,可以使用bg命令将其转移到后台执行。

bg [job_id]

如果只有一个前台作业被暂停,可以省略job_id参数。

例如,如果你有一个名为"myprogram"的前台程序暂停,可以使用以下命令将其转移到后台执行:

bg

3. 使用disown命令使程序脱离终端

当一个程序被转移到后台执行后,关闭终端将会终止该程序。为了防止这种情况发生,可以使用disown命令使程序脱离终端。

disown [options] [job_id]

如果只有一个后台作业,可以省略job_id参数。可以使用以下选项:

  • -a: 对于所有的作业,忽略它们的继承标志。
  • -r: 删除与作业相关联的目录。
  • -h: 在退出shell时保留作业。

例如,使用以下命令将之前转移到后台执行的"myprogram"脱离终端:

disown

4. 使用nohup命令运行程序

另一种方法是使用nohup命令运行程序,这将使程序在后台持续执行,即使终端被关闭。

nohup [command]

通过在命令前加上"nohup",程序将以忽略挂断(SIGHUP)信号的方式运行,并将输出重定向到当前目录下的"nohup.out"文件中。

例如,运行名为"myprogram"的程序:

nohup myprogram

总结:
在Linux中,可以使用Ctrl+Z暂停前台程序,并使用bg命令将其转移到后台执行。使用disown命令使程序脱离终端,从而可以关闭终端而不会终止程序。另一种方法是使用nohup命令直接在后台运行程序,并将输出重定向到文件中。这些方法在不同的情况下,可以根据需要选择合适的方式来转移到后台执行程序并关闭终端。