在 Debian(以及其他 Linux 发行版)中,有多种方式可以让进程在后台运行,即使关闭终端也不中断。下面按常见程度和使用场景介绍。
&command &
示例:
python3 server.py &
特点:
查看后台任务:
jobs
回到前台:
fg %1
nohupnohup command > output.log 2>&1 &
示例:
nohup python3 server.py > server.log 2>&1 &
特点:
setsidsetsid command
示例:
setsid python3 server.py
特点:
screen / tmux(最常用)screen
python3 server.py
detach:
Ctrl + A, D
重新连接:
screen -r
tmux
python3 server.py
detach:
Ctrl + B, D
重新连接:
tmux attach
优点:
创建一个服务文件:
sudo nano /etc/systemd/system/myservice.service
内容示例:
[Unit]
Description=My Python Service
[Service]
ExecStart=/usr/bin/python3 /path/server.py
WorkingDirectory=/path
Restart=always
User=youruser
[Install]
WantedBy=multi-user.target
启用并启动:
sudo systemctl enable myservice
sudo systemctl start myservice
查看状态:
systemctl status myservice
优点:
disowncommand &
disown
或:
command & disown
作用:
| 场景 | 推荐方式 |
|---|---|
| 临时测试 | & |
| 简单长期运行 | nohup / setsid |
| 需要交互/查看 | tmux / screen |
| 生产环境服务 | systemd |
如果你有具体命令或场景(如 Python / Java / 脚本),我可以给你更精确的示例。