在 Linux 中,让进程后台运行有多种方式,下面按常见场景由浅入深说明,并给出示例。
&command &
示例:
sleep 100 &
> log.txt 重定向)查看后台任务:
jobs
调回前台:
fg
nohupnohup command > output.log 2>&1 &
示例:
nohup python app.py > app.log 2>&1 &
特点:
SIGHUPnohup.outdisown(已启动的进程)command &
disown
或指定任务号:
disown %1
适合:
screenscreen -S mysession
python app.py
Ctrl + A, 然后按 D
screen -r mysession
✅ 非常适合长时间运行任务
tmux(强烈推荐)tmux
运行程序后:
Ctrl + B, 然后按 D
重新连接:
tmux attach
✅ 比 screen 更强大、更常用
systemd# /etc/systemd/system/myservice.service
[Unit]
Description=My Service
[Service]
ExecStart=/usr/bin/python /opt/app.py
Restart=always
[Install]
WantedBy=multi-user.target
启用并启动:
systemctl daemon-reload
systemctl start myservice
systemctl enable myservice
✅ 适合服务器程序
| 方法 | 终端关闭是否存活 | 推荐场景 |
|---|---|---|
& |
❌ | 临时后台 |
nohup |
✅ | 简单后台 |
disown |
✅ | 补救已有进程 |
screen |
✅ | 交互式任务 |
tmux |
✅ | 长期/多任务 |
systemd |
✅ | 服务程序 |
如果你愿意,可以告诉我:
我可以帮你选最合适的方式并给出完整命令。