在 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
SIGHUP 影响systemd(Debian 官方方式)适合服务类进程。
sudo nano /etc/systemd/system/myservice.service
示例:
[Unit]
Description=My Python Service
After=network.target
[Service]
ExecStart=/usr/bin/python3 /opt/server.py
WorkingDirectory=/opt
Restart=always
User=www-data
[Install]
WantedBy=multi-user.target
sudo systemctl daemon-reexec
sudo systemctl enable myservice
sudo systemctl start myservice
查看状态:
systemctl status myservice
✅ 优点:
journalctl 管理screenscreen
python3 server.py
detach:
Ctrl + A 然后 D
重新连接:
screen -r
tmux(更现代)tmux
python3 server.py
detach:
Ctrl + B 然后 D
恢复:
tmux attach
| 场景 | 推荐方式 |
|---|---|
| 临时跑一下 | & |
| 关终端不中断 | nohup / setsid |
| 长期服务 | systemd ✅ |
| 交互式任务 | tmux / screen |
如果你能说一下 具体是什么程序(比如 Python、Java、Node、脚本),我可以给你更精确的命令或 systemd 配置。