在 Linux 中让进程在后台运行,常见方法如下(从简单到进阶):
&command &
示例:
sleep 100 &
nohup)nohup(最常用 ✅)nohup command &
示例:
nohup python app.py &
nohup.out指定输出文件:
nohup command > out.log 2>&1 &
disown(已启动的进程)command &
disown
或:
command &
disown %1
screen(推荐用于交互程序)screen
# 在新窗口中运行程序
python app.py
# 按 Ctrl+A 然后 D 离开
重新连接:
screen -r
常用命令:
screen -ls # 查看会话
screen -S name # 创建命名会话
tmux(更现代 ✅)tmux
# 运行程序
python app.py
# Ctrl+B 然后 D 离开
重新连接:
tmux attach
systemd(服务器程序 ✅)例如 /etc/systemd/system/myapp.service:
[Unit]
Description=My App
[Service]
ExecStart=/usr/bin/python /opt/app.py
Restart=always
[Install]
WantedBy=multi-user.target
然后:
systemctl daemon-reload
systemctl start myapp
systemctl enable myapp
jobs # 当前 shell 的后台任务
ps aux | grep command
top / htop
Ctrl+Z # 暂停前台进程
bg # 放到后台继续运行
fg # 拉回前台
| 场景 | 推荐方式 |
|---|---|
| 临时后台 | command & |
| 长期运行 | nohup command & |
| 交互程序 | screen / tmux |
| 服务程序 | systemd |
如果你有具体命令或场景(如 Java / Python / 训练模型 / 服务器),我可以给你最合适的方案。