使Ubuntu命令或进程后台运行且关闭终端无影响
使用 nohup
命令和 &
符号
在 Ubuntu 中,你可以使用 nohup
命令和 &
符号来使一个命令在后台运行,并且关闭终端不会对它产生影响。这是一个常见的用法,特别是在运行长时间的进程或服务时。
以下是如何使用 nohup
和 &
运行一个命令:
- 打开终端。
- 输入你想要在后台运行的命令,然后在命令的末尾添加
&
符号。例如:
1 | nohup your-command-to-run & |
请将 your-command-to-run
替换为你要在后台运行的实际命令。
- 按下 Enter 键来运行该命令。现在,该命令将在后台运行,并且你可以关闭终端而不会影响它。
- 命令的输出将被重定向到一个名为
nohup.out
的文件,它将保存在当前目录中。你可以使用文本编辑器查看这个文件,或者使用其他适当的方式处理输出。
注意事项:
- 使用
nohup
和&
运行的命令将继续运行,直到完成或者手动停止。你可以使用kill
命令来停止它。 - 如果你的命令需要输入或输出,你可能需要考虑使用适当的重定向,以确保输入和输出正确地处理。
- 在某些情况下,你可能还需要考虑设置环境变量,以确保命令能够正常运行。
- 请小心在后台运行长时间运行的命令,以确保它们不会消耗过多的系统资源。
使用disown
命令
如果使用 nohup
和 &
后命令仍然在关闭终端时终止,可能有以下原因:
- SIGHUP 信号问题: 默认情况下,终端关闭时会向后台作业发送 SIGHUP 信号,这可能会导致它们终止。
nohup
通常用于忽略 SIGHUP 信号,但仍然可能存在一些情况。 - Shell 特定问题: 在某些情况下,shell 的配置可能影响后台作业的行为。这通常不太常见,但可能会发生。
为了确保命令在后台运行而关闭终端不会影响它,你可以考虑使用 disown
命令,这将断开终端对该进程的关联。以下是使用 disown
的步骤:
- 打开终端并运行你的命令,后面加上
&
使其在后台运行,例如:
1 | your-command-to-run & |
- 在终端中运行
jobs
命令,以查看正在运行的作业的列表。这将显示你的命令及其作业号。 - 运行
disown
命令,后跟作业号,如下所示:
1 | disown %1 |
这里 %1
是你的命令的作业号,确保将其替换为你的实际作业号。
现在,你的命令应该在后台运行,并且即使关闭终端也不会终止。请注意,此方法仅对当前会话中的命令有效,如果你注销或重新启动系统,作业可能会受到影响。如果需要更稳定的后台运行,可以考虑使用工具如 screen
或 tmux
,它们允许你创建持久的会话并在其中运行命令。