在 Linux 下“守护进程运行”通常指让进程持续运行、不随终端退出而停止、崩溃后能自动重启。下面按常见场景给你一套实用方案。
nohupnohup python app.py > app.log 2>&1 &
app.logsetsidsetsid python app.py > app.log 2>&1
disownpython app.py &
disown
✅ 适合:临时跑脚本
# /etc/systemd/system/myapp.service
[Unit]
Description=My App
After=network.target
[Service]
ExecStart=/usr/bin/python3 /opt/myapp/app.py
WorkingDirectory=/opt/myapp
User=myuser
Restart=always
RestartSec=5
[Install]
WantedBy=multi-user.target
启用:
systemctl daemon-reload
systemctl enable myapp
systemctl start myapp
查看状态:
systemctl status myapp
journalctl -u myapp -f
✅ 优点:
适合非 systemd 环境或多进程管理
安装:
apt install supervisor
配置:
[program:myapp]
command=python3 app.py
directory=/opt/myapp
autostart=true
autorestart=true
stderr_logfile=/var/log/myapp.err.log
stdout_logfile=/var/log/myapp.out.log
supervisorctl reload
supervisorctl status
dmesg | grep -i killed
journalctl -u myapp
while true; do
pgrep myapp || /opt/myapp/start.sh
sleep 10
done
docker run -d --restart=always myapp
| 场景 | 推荐方式 |
|---|---|
| 临时任务 | nohup / setsid |
| 生产服务 | systemd |
| 多进程 | supervisor |
| 云原生 | Docker / K8s |
如果你能告诉我:
我可以直接帮你写一份可复制的配置。