如何在Linux服务器后台/离线运行Dash App并保持持续访问
Dash 应用后台持续运行解决方案
你遇到的问题本质是SSH会话退出时,系统会给会话关联的前台进程发送SIGHUP信号终止进程,以下是三种无需Docker、无需外部云服务的原生Linux解决方案,按使用场景区分:
方案1:nohup 临时后台运行(快速测试场景)
无需额外安装软件和复杂配置,适合临时部署验证使用:
- 启动命令:
nohup python app.py & - 运行说明:nohup会忽略挂断信号,进程在你登出服务器后仍会继续运行,默认会将应用输出日志保存在当前目录的
nohup.out文件中 - 停止服务操作:先查询进程ID
ps aux | grep app.py,找到对应PID后执行kill <PID>即可 - 注意:服务器重启后服务不会自动恢复,需要手动重新启动
方案2:systemd 服务托管(生产环境推荐)
Linux系统原生服务管理工具,支持崩溃自动重启、开机自启,稳定性最高:
- 以root权限新建服务配置文件
/etc/systemd/system/dash-app.service,填入以下内容(注意替换占位符为你自己的实际路径和用户名):
[Unit]
Description=Dash 应用服务
After=network.target[Service]
User=<你的服务器用户名>
WorkingDirectory=<app.py所在目录的绝对路径,例如/home/sudheer/dash-project>
ExecStart=<Python解释器绝对路径,可通过which python3查询> <app.py的绝对路径,例如/home/sudheer/dash-project/app.py>
Restart=always
RestartSec=5[Install]
WantedBy=multi-user.target
- 重载systemd配置:
sudo systemctl daemon-reload - 启动服务:
sudo systemctl start dash-app.service - 设置开机自启:
sudo systemctl enable dash-app.service
- 常用管理命令:
- 查看服务运行状态:
systemctl status dash-app.service - 查看实时日志:
journalctl -u dash-app.service -f - 重启服务:
sudo systemctl restart dash-app.service - 停止服务:
sudo systemctl stop dash-app.service
- 查看服务运行状态:
方案3:tmux 会话保留(需随时查看控制台输出场景)
如果需要频繁查看应用实时控制台输出,不想反复查询日志,可以使用终端复用工具保留会话:
- 安装tmux:Debian/Ubuntu系执行
sudo apt install tmux,CentOS/RHEL系执行sudo yum install tmux - 新建专属会话:
tmux new -s dash-app - 进入会话后正常启动应用:
python app.py - 按
Ctrl+B后再按D即可将会话退到后台运行,此时登出服务器不影响进程运行 - 后续需要回到会话查看输出:执行
tmux attach -t dash-app即可 - 注意:服务器重启后会话会消失,需要手动重新创建并启动应用
内容的提问来源于stack exchange,提问作者Sudheer Anumala
相关产品推荐
相关产品推荐

