本文最后更新于146 天前,其中的信息可能已经过时,如有错误请发送邮件到2778680280@qq.com
在通过 Termux SSH 连接云服务器后,直接运行程序会因断开连接或退出终端导致进程终止。本文整理 4 种高效方案,帮你实现程序后台常驻运行,适配不同使用场景,操作简单易落地。
一、前提准备:Termux 连接云服务器基础操作
1. 环境依赖安装
打开 Termux ,先更新软件源并安装 SSH 客户端:
plaintext
apt update && apt upgrade -y
pkg install openssh -y
2. SSH 连接命令
- 默认端口(22 端口)连接:
plaintext
ssh 用户名@服务器IP
- 自定义端口连接(如端口 2222):
plaintext
ssh 用户名@服务器IP -p 端口号
输入命令后按提示输入服务器密码,验证通过即可成功连接。
二、程序后台常驻运行方案(按易用性排序)
方案 1:nohup 命令(适合一次性任务,零学习成本)
核心作用
忽略 SSH 断开的挂断信号,搭配后台运行参数,直接让程序脱离终端常驻,适合临时运行脚本、简单程序。
基础使用命令
plaintext
nohup 程序运行命令 &
- 示例(运行 Python 脚本):
plaintext
nohup python app.py &
- 进阶用法(指定日志输出路径,方便排查问题):
plaintext
nohup python app.py > app.log 2>&1 &
> app.log:将程序输出日志写入app.log文件2>&1:将错误日志合并到正常日志中&:后台运行标识
关键操作
- 实时查看日志:
plaintext
tail -f app.log
- 终止进程:先通过以下命令找到进程 ID:
plaintext
ps aux | grep 程序名
再执行(替换为实际进程 ID):
plaintext
kill -9 进程ID
方案 2:disown 命令(适合已启动的前台进程,补救专用)
核心作用
针对已在前台启动的程序,无需终止进程即可补救为后台常驻,避免程序重启损失数据。
操作步骤
- 前台程序运行中,按
Ctrl + Z暂停进程(终端会提示进程序号,如[1]+ 已停止); - 输入命令将进程转入后台运行(替换为实际进程序号):
plaintext
bg %进程序号 # 示例:bg %1
- 输入命令让进程脱离 SSH 会话,实现常驻:
plaintext
disown %进程序号 # 示例:disown %1
方案 3:screen 命令(适合长期任务,支持会话复用)
核心作用
创建独立终端会话,进程运行在会话内,断开 SSH 后会话持续存在,可重新连接会话查看程序状态,适合长期运行的服务类程序。
完整操作流程
- 安装 screen(服务器未预装时执行):
- Debian/Ubuntu 系统:
plaintext
sudo apt-get install screen -y
- CentOS/RHEL 系统:
plaintext
sudo yum install screen -y
- 创建新会话(指定会话名,方便后续管理):
plaintext
screen -S 会话名 # 示例:screen -S webapp
- 在新会话内运行程序(如启动服务):
plaintext
python app.py
- 分离会话(保持程序运行,返回原终端):按
Ctrl + A后再按D; - 重新连接会话(查看程序状态、操作进程):
plaintext
screen -r 会话名 # 示例:screen -r webapp
- 会话管理常用命令:
- 查看所有会话:
plaintext
screen -ls
- 强制连接卡死会话:
plaintext
screen -D -r 会话名
- 关闭会话(终止内部进程):进入会话后按
Ctrl + D
方案 4:tmux 命令(功能增强版终端复用,适合多任务管理)
核心作用
功能比 screen 更强大,支持窗口分割、会话共享,稳定性更高,适合需要同时管理多个后台程序的场景。
完整操作流程
- 安装 tmux(服务器未预装时执行):
- Debian/Ubuntu 系统:
plaintext
sudo apt-get install tmux -y
- CentOS/RHEL 系统:
plaintext
sudo yum install tmux -y
- 创建新会话(指定会话名):
plaintext
tmux new -s 会话名 # 示例:tmux new -s server
- 在会话内运行程序,如需多窗口操作:按
Ctrl + B后按C新建窗口; - 分离会话(程序后台运行):按
Ctrl + B后按D; - 重新连接会话:
plaintext
tmux attach -t 会话名 # 示例:tmux attach -t server
- 常用管理命令:
- 查看所有会话:
plaintext
tmux ls
- 切换会话:
plaintext
tmux switch -t 会话名
- 关闭会话:
plaintext
tmux kill-session -t 会话名
三、场景适配推荐
| 方案 | 适用场景 | 优势 | 劣势 |
|---|---|---|---|
| nohup | 一次性脚本、临时任务 | 操作简单,无需安装额外工具 | 进程管理不便,无会话复用 |
| disown | 已启动的前台进程补救 | 无需重启程序,快速补救 | 仅适合临时补救,功能单一 |
| screen | 长期单任务、简单会话管理 | 稳定易用,适配多数场景 | 功能较基础,无窗口分割 |
| tmux | 多任务管理、复杂场景 | 功能强,支持窗口分割 / 共享 | 需记忆基础快捷键 |
四、注意事项
- 程序运行前需确认服务器资源充足(内存、CPU),避免进程因资源不足被系统终止;
- 长期运行的程序建议配置日志输出,方便后续排查异常;
- 若使用自定义 SSH 端口,需确保服务器安全组 / 防火墙已放行对应端口,避免连接失败;
- 如需重启服务器,可搭配
crontab实现程序开机自启,确保进程持续运行。









我只会screen