在 Debian(以及大多数 Linux 发行版)中,“守护后台进程”通常指让程序在后台稳定运行、开机自启、崩溃可重启、不随终端退出而关闭。下面按常用程度和推荐程度给你几种方案。
sudo vim /etc/systemd/system/myprogram.service
示例(假设你的程序是 /opt/myprogram/run.sh):
[Unit]
Description=My Background Program
After=network.target
[Service]
ExecStart=/opt/myprogram/run.sh
WorkingDirectory=/opt/myprogram
User=myuser
Restart=always
RestartSec=5
[Install]
WantedBy=multi-user.target
sudo systemctl daemon-reload
sudo systemctl start myprogram
sudo systemctl enable myprogram # 开机自启
systemctl status myprogram
journalctl -u myprogram -f
systemctl restart myprogram
✅ 优点:
nohupnohup python app.py > app.log 2>&1 &
setsidsetsid python app.py
⚠️ 缺点:
sudo apt install supervisor
sudo vim /etc/supervisor/conf.d/myprogram.conf
[program:myprogram]
command=/opt/myprogram/run.sh
autostart=true
autorestart=true
user=myuser
redirect_stderr=true
stdout_logfile=/var/log/myprogram.log
sudo supervisorctl update
sudo supervisorctl start myprogram
✅ 适合:
screen -S myprogram
python app.py
# Ctrl + A + D 脱离
⚠️ 仅适合临时调试,不适合生产环境。
docker run -d --restart=always myimage
| 场景 | 推荐方案 |
|---|---|
| 生产服务 | systemd |
| 多脚本管理 | supervisor |
| 临时运行 | nohup / tmux |
| 容器化 | Docker |
如果你愿意,可以告诉我:
我可以直接帮你写一份可用的 service 文件。