在 Linux 中,有多种方式可以让进程在后台运行,下面按常见场景从简单到高级给你系统讲解。
&sleep 100 &
&:让命令在后台运行jobs
fg %1
Ctrl + Z
bg
✅ 适合:临时后台任务
⚠️ 缺点:终端关闭后进程可能被杀
nohupnohup python3 app.py &
SIGHUP 信号nohup.outnohup ./app > app.log 2>&1 &
✅ 适合:长期运行程序
disownsleep 100 &
disown
或指定任务:
disown %1
✅ 效果:
screensudo apt install screen # Debian/Ubuntu
sudo yum install screen # CentOS
screen # 新建会话
./app
Ctrl + A, D # 离开会话(程序继续运行)
screen -r
screen -S myapp
screen -r myapp
✅ 适合:交互式后台任务
tmux(强烈推荐)sudo apt install tmux
tmux
./app
Ctrl + B, D # 离开
tmux attach
✅ 优点:
systemd(生产环境)# /etc/systemd/system/myapp.service
[Unit]
Description=My App
[Service]
ExecStart=/usr/bin/python3 /opt/app/app.py
Restart=always
[Install]
WantedBy=multi-user.target
sudo systemctl daemon-reload
sudo systemctl start myapp
sudo systemctl enable myapp
✅ 适合:服务、开机自启
| 方法 | 终端关闭 | 是否推荐 | 场景 |
|---|---|---|---|
& |
❌ | ⭐⭐ | 临时 |
nohup |
✅ | ⭐⭐⭐ | 简单长期 |
disown |
✅ | ⭐⭐⭐ | 补救 |
screen |
✅ | ⭐⭐⭐⭐ | 交互 |
tmux |
✅ | ⭐⭐⭐⭐⭐ | 服务器 |
systemd |
✅ | ⭐⭐⭐⭐⭐ | 生产服务 |
ps aux | grep app
top
htop
如果你愿意,可以告诉我:
我可以帮你选最合适的一种方案 ✅