使用&可将程序放入后台运行,但终端关闭后进程可能终止;结合nohup可忽略挂起信号,适合长期服务;screen或tmux支持会话恢复,便于交互调试;systemd适用于系统级服务托管,实现开机自启与进程管理。

在Linux中让程序在后台运行,是日常使用和服务器管理中的常见需求。直接把任务放到后台执行,既能释放终端,又能保证程序持续工作。下面介绍几种实用的方法。
使用 & 符号让程序后台运行
最简单的方式是在命令末尾加上 &,这样程序会在后台启动,同时释放当前终端。
- 例如:运行一个长时间的脚本
./long_task.sh & - 此时你可以继续在终端输入其他命令
- 注意:如果关闭终端,进程可能会被终止(收到SIGHUP信号)
结合 nohup 忽略挂起信号
使用 nohup 可以让程序忽略终端关闭带来的中断信号,即使退出登录也能继续运行。
- 命令格式:
nohup command & - 例如:
nohup python3 app.py & - 输出会自动重定向到当前目录下的 nohup.out 文件
- 适合远程SSH会话中运行长期服务
使用 screen 或 tmux 创建可恢复会话
如果你希望随时查看后台程序的输出,甚至“重新连接”到运行中的任务,推荐使用终端复用工具。
-
screen 示例:
- 启动新会话:
screen -S mytask - 运行程序:
python3 server.py - 按 Ctrl+A 然后按 D 键,分离会话
- 恢复会话:
screen -r mytask
- 启动新会话:
- tmux 功能类似,更现代,支持分屏等高级功能
- 这类工具特别适合调试或需要交互的后台任务
使用 systemd 托管服务(适用于系统级程序)
对于开机自启或作为服务长期运行的程序,建议写一个 systemd 单元文件。
- 创建服务文件:
/etc/systemd/system/myapp.service - 配置启动命令、用户、重启策略等
- 启用并启动:
systemctl enable myapp和systemctl start myapp - 适合部署Web服务、守护进程等
基本上就这些常用方法。普通临时任务用 nohup + & 就够了,复杂场景推荐 screen 或 systemd。关键是根据是否需要交互、持久性、是否随系统启动来选择合适方式。










