
1. 未Root安卓机上跑Termux先搞清楚它到底动了什么每次提到在安卓手机上装 Termux总会有人追问一句不 Root 能跑吗能跑而且绝大多数人根本用不着 Root。这个事的原理其实不复杂Termux 不是往你的系统里塞了一个虚拟机也不是什么破解系统权限的黑科技它就是以一个普通安卓应用的形态在你手机的用户空间里运行了一套 Linux 环境。简单说你安装的不是一个模拟器而是一个精简的 Linux 发行版外壳里面带着独立的文件系统、包管理器和软件源。这套东西能跑起来靠的是安卓系统本身对应用开放的两个能力一个是应用可以拥有自己的私有数据目录并且能在这个目录里执行原生程序另一个是 Termux 自己打包并维护了一套动态链接库和基础工具链。所以你会发现Termux 的工作目录就在/data/data/com.termux/files下面它是应用自己的家不需要系统级权限。你后续安装的所有 Linux 软件都装在这个目录的usr里跟系统自带环境完全隔离。这带来两个实际影响你必须心里有数。第一Termux 里的 root 权限是不存在的su命令基本废掉涉及系统级修改的操作干不了。但这恰恰是好事很多病毒和恶意脚本最喜欢偷的就是 root 权限不用 root 等于天然少了最高风险敞口。第二因为它是普通应用所以安卓系统的省电策略、后台清理策略照样会作用在它身上这就导致了所有人装完之后遇到的最大痛点——Termux 在后台跑着跑着就被系统杀了。后面我会专门说这个怎么治。写这篇内容之前我假设你已经把 Termux 装好了并且至少打开过一次。如果你的 Termux 连安装都还没搞定先去官方软件源找一个标准安装包装好再回来看这篇。本文重点讲的是装完之后怎么把它从一个能打开的命令行玩具变成一台真正能干活、能自动跑任务、能远程管理的随身 Linux 小主机。2. 安装完Termux之后第一件要做的事是配源和初始环境很多新手打开 Termux 的第一反应是立刻敲命令结果第一条pkg update就卡死在半路。原因很简单Termux 默认的软件源在国外国内网络访问极其不稳定。所以装完以后别急着玩先把软件源换成国内镜像。2.1 换源是第一步别跳过Termux 换源的方法比早期要简单太多官方现在内置了termux-change-repo这个工具直接执行会让你选镜像源。我用得最多的是清华的软件源也试过中科大两个都稳。操作流程是termux-change-repo执行后会出现图形化选择页面用键盘上下键选镜像源空格键勾选回车确认。这里有个小坑如果你同时勾选了多个源它会有优先级顺序建议只选一个主用源出了问题也好排查。选完源之后执行pkg update pkg upgrade -y第一次更新包索引会花上一两分钟取决于网络。全部更新完之后基础环境才算立住了。有个经验值得说下Termux 的pkg实际上是apt的封装但它做了很多针对 Termux 环境的定制比如某些包的依赖处理。所以你用pkg就行不用也不建议直接硬上apt白费力气还可能把依赖装乱。2.2 安装基础工具包一套组合拳打完再说换好源之后我通常会给新机器装这么几个工具后面所有操作基本都离不开它们pkg install -y openssh nano bash-completion cronie termux-services逐个说下作用。openssh必须装后面远程管理全靠它。nano给那些不习惯vi的人一个相对友好的文本编辑器我自用还是vi但你至少得有 nano 兜底。bash-completion补全提示敲命令省心很多。cronie定时任务组件Termux 里的 cron 服务需要额外启动跟 Linux 桌面机不完全一样。termux-servicesTermux 官方推荐的服务管理工具用sv命令控制服务死活后面跑 sshd 需要它。装完这些后我建议再补一个tsu虽然它需要手机已经 root 过才能用但如果你以后 Root 了或者用别的方案这个命令就能帮你拿到一个终端内的模拟 root 环境属于先备着没坏处的工具。没 root 的话装了也不影响什么。2.3 存储权限和目录规划提前做了省得后面乱Termux 不分给你存储权限之前它只能在自己的私有目录里活动。你要是想访问手机里的照片、下载文件必须先授权。执行termux-setup-storage这条命令会申请存储权限允许之后你的手机根目录会被链接到这个路径下/storage/emulated/0Termux 同时会在自家目录里建好~/storage一系列快捷方式里面分别指向下载、文档、图片这些公共目录。大多数情况下你直接操作~/storage/downloads就行不用绕一大堆路径。这里必须提醒一句Termux 跟手机系统是两个世界你在 Termux 里创建的文件权限是 Linux 专用的手机自带文件管理器不一定能直接看或者改。反过来也一样你在手机上下载的普通文件拿到 Termux 里可能没有可执行权限。跨目录拷贝文件之后第一件事永远是检查权限别上来就跑跑不通先看看是不是权限位不对。3. 配置SSH远程登录让电脑接管手机终端装完 Termux 的人很大概率会有这么个需求我人坐在电脑前手机放在桌上充电想操作 Termux 还得拿起手机戳屏幕太反人类。配置好 SSH 之后你就可以直接从电脑连到手机的 Termux敲起命令来跟操作一台 Linux 小服务器一模一样。3.1 启动sshd服务并设置登录密码openssh 装好之后Termux 里的 sshd 默认端口是 8022不是常见的 22原因很简单安卓系统里 22 端口大概率被占用或者受限。第一步先设置账户密码因为 Termux 默认没有任何密码你直接连是连不上的passwd输入两遍密码这个密码是你 Termux 用户名默认就是你手机当前系统的用户名的登录密码。设置好之后启动 sshdsshd想确认 sshd 是不是跑起来了用这个命令看端口监听ss -tlnp | grep 8022如果能看到0.0.0.0:8022的监听记录就说明服务已经在线了。这一步有个极其常见的翻车点Termux 占的端口是 8022但很多人的局域网防火墙、路由器端口策略会默认拦掉非标准端口。手机和电脑如果不在同一个 Wi-Fi 下或者路由器开了 AP 隔离SSH 就连不上。后面排查网络问题时我会专门列这个。3.2 用密钥认证替代密码登录一劳永逸输密码虽然能用但每次都输太痛苦。我给自己的方案是直接上密钥认证把电脑的公钥塞到 Termux 的~/.ssh/authorized_keys里以后ssh 用户名手机IP -p 8022直接进全程不用输密码。在电脑上生成密钥对如果已经有了就跳过这一步ssh-keygen -t ed25519 -C termux-access然后把公钥传过去。没有现成工具的话直接复制粘贴也行。在电脑上执行cat ~/.ssh/id_ed25519.pub把输出复制下来到 Termux 里执行mkdir -p ~/.ssh chmod 700 ~/.ssh nano ~/.ssh/authorized_keys粘贴公钥进去保存再执行chmod 600 ~/.ssh/authorized_keys权限这一步不能省authorized_keys权限如果太松sshd 会直接拒绝使用这个文件。从这时开始电脑连接手机只需要一条命令ssh 用户名192.168.x.x -p 8022其中用户名可以执行whoami查看。手机 IP 可以执行ip addr show wlan0或者更简单的ifconfig看在数字转字符串的网段里找 192.168 开头的那个就是。3.3 开机自动启动sshd避免每次手动拉起默认情况下Termux 的 sshd 不会开机自启手机重启一次你就得手动打开 Termux 再跑一次sshd。这显然不够优雅。Termux 官方给了一个基于termux-services的方案平时sv命令管。先设置服务自启动sv-enable sshdsv-enable会把 sshd 注册进 Termux 的服务目录里之后它会随 Termux 应用启动而启动。注意这里的自启还是受限于 Termux 应用本身有没有被系统启动。如果 Termux 没在后台跑服务也起不来。所以要实现真正的无人值守开机自启还需要配合后面说的 Termux:Boot。4. 让Termux在后台稳定活着先解决被系统杀掉的问题这是所有未 Root 安卓机用户都要面对的一道坎。安卓的省电机制对后台应用相当严格尤其国产系统杀后台叫一个狠。你刚配好 sshd手机锁屏放那过半小时再连发现连接被拒绝——大概率 Termux 进程已经被系统回收了。4.1 设置电池白名单这是最重要的一个开关不同品牌的安卓系统设置路径都不太一样但一般都集中在电池或者应用管理里。找到 Termux 应用把电池优化设为不限制。这一步干的是系统级的省电策略排除如果不做后面所有防杀后台的手段都等于白搭。我自己实测过只设白名单不配锁后台Termux 晚上放一宿基本还能活着反之就算加了锁系统也会在某个时刻把进程回收掉。4.2 关闭自启管理限制允许应用自启动很多国产品牌的系统里应用默认是不允许自启动的需要在系统的自启动管理里手动把 Termux 打开。这一步的意义在于当事件触发比如开机完成广播时Termux 才有机会被系统拉起来。你把后台白名单改了但没开自启动开机之后 Termux 依然不会主动出现。4.3 启用Acra机制并在开发者选项里关闭在后台检查这里说的 Acra 不是崩溃上报是 Termux 自带的一个稳定性相关机制。不同版本对后台保活的机制一直在调整。有一个过往版本常见的做法是开启 Termux 的Acra上报功能来降低被系统杀掉的概率不过这个功能本身更偏向稳定性监控建议新版本用户直接忽略保持默认就行。更实用的做法是打开安卓系统的开发者选项找到后台进程限制设为标准即不限制然后把在后台检查应用程序操作关掉。开发者选项每台手机不太一样但核心思路是一致的告诉系统别太激进地清理 Termux。注意保持系统省电优化处于合理状态即可不建议为保活而关闭手机系统的全部省电功能那样耗电暴涨得不偿失。4.4 用的进程守护脚本防止个别终端失联哪怕你把白名单开了、自启动开了、开发者选项调了依然可能在特定场景下发现 Termux 失联了——比如 Wi-Fi 切了网络或者某次系统内存压力大杀掉了 Termux。这种场景下我给自己的方案是在 Termux 里装一个守护壳子定时检查 sshd 是否在线不在就拉起来。直接写个简单脚本#!/data/data/com.termux/files/usr/bin/bash if ! pgrep -f sshd /dev/null; then sshd fi保存为~/bin/keep_sshd.sh赋执行权限chmod x ~/bin/keep_sshd.sh然后用 cron 每三分钟跑一次。cronie 装好后先启动 cron 服务sv-enable cron sv start cron再把任务加进 crontabcrontab -e写入一行*/3 * * * * /data/data/com.termux/files/usr/bin/bash /root/bin/keep_sshd.sh如果~/bin已经进了 PATH也可以简写。这套方案不能保证 100% 不死但能保证死了以后很快自愈。实际上我用的最长的一台机器用这套守护方案跑了快一个月没断过 SSH。5. 开机自动执行脚本Termux:Boot与Tasker双方案你要的是开机之后 Termux 自动跑起某个服务那就绕不开 Termux:Boot。它本质上是一个配合 Termux 使用的小应用负责接收系统开机广播然后自动拉起 Termux 并执行你放在特定目录里的脚本。5.1 安装Termux:Boot并放置启动脚本安装 Termux:Boot 之后你需要在 Termux 里先安装它的插件包pkg install termux-bootTermux:Boot 的工作机制非常朴素它会扫描~/.termux/boot/目录下的脚本开机时按文件名顺序执行。所以第一步先创建目录mkdir -p ~/.termux/boot然后把你想要开机执行的脚本放进去。比如我想开机自动启动 sshd 和 cron可以建一个脚本~/.termux/boot/start-services#!/data/data/com.termux/files/usr/bin/bash sshd sv start cron exit 0赋执行权限chmod x ~/.termux/boot/start-services这里有个容易踩的坑脚本名不能带.sh后缀否则 Termux:Boot 会因为找不到可执行程序而拒绝运行。我第一次用的时候犯过这个错脚本写了半天一直不执行吓得以为手机坏了。其实不是就是文件名后缀的问题。Termux:Boot 在接收到开机广播后拉起 Termux 应用如果手机系统没有给 Termux 自启动权限这一步一样会失败。所以前面提到的系统自启动设置还是要先做好。5.2 用Tasker实现更灵活的场景化触发Termux:Boot 只能处理开机这一个触发事件。如果你想要的是到了晚上十点自动执行备份或者手机连上家里 Wi-Fi 自动执行某个脚本那就得靠 Tasker 的任务去调用 Termux 的termux-exec接口。具体做法分两步。第一步在 Termux 里安装 Tasker 插件支持pkg install termux-tasker这个包会提供一个命令行工具termux-tasker它本身是用来接收 Tasker 传来的变量的但真正的调用方式是靠 Tasker 那边的Termux:Tasker插件动作。第二步在 Tasker 里新建一个任务动作选插件里的 Termux:Tasker然后在配置里填你指定的脚本名。Tasker 插件会调用这个脚本执行。一个简单的例子在 Tasker 里设定一个定时规则每天晚上 20:00 触发调用 Termux 执行备份脚本。那我的 Termux 脚本就放在~/bin/daily_backup.sh在 Tasker 配置时填bash ~/bin/daily_backup.sh这个方案灵活是有代价的Tasker 本身是付费应用首次上手也有学习成本。但这套配合已经算是安卓端最成熟的自动化方案了如果你有大量场景需要联动值得投资精力。5.3 无线网络与USB网络共享下的定时策略如果你想在指定网络环境下执行任务但不想额外安装应用还有一个更朴素的方法如果你只有需要在特定 Wi-Fi 下执行任务或需要在手机连接某个设备时启动服务的需求可以用 Termux 内定时检查网络状态的方式代替 Tasker。比如脚本里判断当前 Wi-Fi SSID符合条件才继续执行ssid$(termux-wifi-connectioninfo | grep -o ssid:[^]* | cut -d -f4) if [ $ssid 我家的Wi-Fi ]; then # 执行同步或更新任务 fi前提是你装了termux-api包这个包能调用很多安卓系统级能力比如 Wi-Fi 信息、传感器数据、电量状态。对于已经在用 Termux 当自动化中心的人来说termux-api几乎是个必装项。6. 安全加固与数据优化别让Termux裸奔很多人把 Termux 当玩具觉得无所谓。但只要你开了 SSH它暴露在局域网里就是一个真实的服务端口。如果密码弱、密钥管理乱被隔壁的人扫到然后爆破也不是没可能。未 Root 环境虽然没有系统权限但它能读你的手机存储授权过的情况下能访问你所有带权限的 App 数据目录所以安全等级不低。6.1 改默认端口和限制登录频率第一步把 SSH 默认的 8022 端口换成一个不常用的高位端口。虽然安全领域有句话叫安全不能靠隐藏但减少被随机扫描命中的概率还是有意义的。修改方式编辑 Termux 的 sshd 配置文件。Termux 的 sshd 配置路径在$PREFIX/etc/ssh/sshd_config找到 Port 行改成比如 22222nano $PREFIX/etc/ssh/sshd_config改完重启 sshdsv restart sshd6.2 只允许密钥登录彻底关掉密码认证密码登录最大的风险是弱密码爆破。既然前面已经配好了密钥直接把密码认证关掉让爆破彻底失去意义。编辑同一份配置文件找到这两行PasswordAuthentication yes PermitRootLogin yes改成PasswordAuthentication no PermitRootLogin no保存重启 sshd 就生效了。改完之后只有持有私钥的设备才能连进来。这里要特别提醒改配置之前先确认你的密钥登录是能正常用的不然一关密码认证你自己也被关在门外了。我就干过这种事改完发现自己私钥没带在身上只能跑去手机屏幕前操作。6.3 定期检查和备份关键配置Termux 环境本身不重核心配置就集中在几个地方~/.ssh、~/.termux、~/bin以及你自定义的脚本目录。建议定期把它们打个包往手机存储里扔一份。tar czf ~/storage/downloads/termux-backup-$(date %Y%m%d).tar.gz ~/.ssh ~/.termux ~/bin真出了问题或者换了新手机直接解包回去就恢复了。备份这个事真正做了的人才懂它省了多少事。6.4 升级Termux环境时需要注意的坑Termux 版本更新很频繁升级一般直接pkg upgrade但大版本升级比如从旧的 Termux 版本跳到新的大版本偶尔会因为软件源结构变化导致包冲突。这种情况我在社区里见过不少说的是某些包依赖 old 版本的库升级完直接被打包器要求先卸载再安装。遇到冲突优先检查是不是某个不在维护的第三方包卡住了用apt-mark hold 包名把问题包锁住再继续升级。这种操作不是常规动作属于特殊急救手段建议只对明确排查过的包使用。7. 常见问题排查装完Termux后我踩过的坑整理了这段时间里出现频率最高的问题和对应的排查思路有些是我自己翻过车的有些是帮别人排查时见过的直接列成速查表你照着排就行。7.1 终端提示command not found或包没装上装了软件却提示找不到多半是 PATH 没生效。Termux 的 PATH 逻辑和常规 Linux 略有差别如果执行pkg install之后提示刷新环境或者你直接编辑过~/.bashrc先确认有没有跑source ~/.bashrc另一个可能性是你装在~/bin下的脚本忘了加执行权限。Termux 默认把~/bin加进 PATH但里面的文件如果没有x权限一样是找不到。7.2 pkg update 卡住或者源崩了这种情况初步判断是软件源失效。执行pkg update看到一堆 404 或者超时大概率是源地址变了。直接重新跑一遍termux-change-repo换个源然后再执行pkg update pkg upgrade。如果真的连换源界面都打不开那可能是apt缓存坏了清一下apt clean pkg update我碰到过一次比较离谱的情况是DNS配置问题Termux 里能 ping 通 IP但域名解析不了。检查一下/etc/resolv.conf确认里面有可用的 DNS 地址。实在不行就手动改成公共 DNSnano $PREFIX/etc/resolv.conf写入nameserver 223.5.5.5 nameserver 119.29.29.29为了内容稳妥此处避免了不可控的外部地址以上两个是国内常用公共 DNS平时用起来比较稳定。7.3 SSH连接不上问题可能不在Termux手机开了 sshd电脑就是连不上这种情况先分层排查。第一层确认 sshd 活着pgrep -af sshd第二层确认端口监听正常ss -tlnp | grep 8022第三层确认手机和电脑在同一网段。手机执行ip addr show wlan0看 IP电脑执行ipconfig或ip addr两个 IP 前三位应该一致。第四层确认路由器没开 AP 隔离。这个最坑同一 Wi-Fi 下设备互访直接被拦。如果以上都没问题那大概率就是路由器策略问题。7.4 crontab 任务不执行疑似定时任务失灵Termux 的 cron 不像常规 Linux 一样开机就跑需要先启动 cron 服务。如果你执行过crontab -e但任务一直没执行先检查sv status cron如果是 down 的状态就sv start cron另外如果你用 Termux:Boot 启动 cron但脚本里没有执行sv start cron开机之后 cron 也起不来。这个顺序问题我翻过一次车——脚本里写了启动 sshd 忘了写 cron导致第二天定时任务全没跑。7.5 手机重启后Termux完全没动静这是最多人问的一个问题。原因通常指向三件事没做齐系统自启动权限没给、Termux:Boot 没装或者脚本没放在~/.termux/boot、电池白名单没设。按顺序把这三点逐项核对九成问题都能解决。还有一个小众的情况部分手机系统在重启后会弹一个是否允许应用后台运行的对话框如果不点确认Termux 照样会被杀。这种对话框一般只弹一次错过之后可以在系统应用管理里手动找到开关补上。8. 未Root Termux的进阶玩法随身服务器和定时任务的完整形态配置到这里Termux 已经从一个终端模拟器变成了一台常驻后台的 Linux 机器。但真正让它有价值的是你拿它来干什么。8.1 把它当随身服务器用我之前在 Termux 里跑过一个小型 HTTP 服务配合手机热点给局域网设备提供些小工具页面。因为 Termux 的性能依赖手机本身遇到重负载任务会吃力但跑个轻量服务、处理点脚本逻辑完全没问题。注意一点手机热点长时间运行发热明显如果当服务器用建议插着充电器并放在通风处。8.2 用Termux定时执行系统备份任务我自己比较常用的一个场景是让 Termux 每天晚上帮我备份手机里的几个应用数据目录应用本身有导出功能的或者手动设置了可访问路径的。脚本思路很简单检查目录存在打 tar 包移动到指定位置删除超过七天的旧备份。#!/data/data/com.termux/files/usr/bin/bash BACKUP_DIR~/storage/downloads/backups mkdir -p $BACKUP_DIR tar czf $BACKUP_DIR/app1-$(date %Y%m%d).tar.gz ~/storage/shared/某个应用导出目录/ 2/dev/null find $BACKUP_DIR -name *.tar.gz -mtime 7 -delete配合 cron 半夜跑第二天起床备份已经静静躺在那里了。这套东西虽然没有啥花哨 UI但稳定性和可控性比很多图形化备份工具强得多。8.3 开发调试场景移动端脚本实验室Termux 里可以装 Python、Node.js、GCC 等一整套开发工具链。我之前在手机上用 Termux 写过一些小脚本然后通过 SSH 同步到电脑上跑测试。反过来如果和朋友们在同一个局域网里手机上的 Termux 也能直接作为一台实验用的小型 Linux 机器测试网络服务、跑点简单的自动化流程它都能胜任。不过受限于安卓对普通应用的约束涉及系统调用的实验是跑不了的。心态上把 Termux 当一台自带电池的随身 Linux 沙箱就行别想着把它真的当成根权限工具去用。9. 最后分享点个人实践经验我玩 Termux 也有几年了踩过的坑比看过的教程多。到现在为止给我省事最多的不是那些花哨的配置反而是最开始做的那几件小事换源、设密钥、配自启动、写进程守护。这几件事做踏实了后面基本不用反复折腾。有一个容易被忽略的点再提一下不用 root 反而让我养成了更好的习惯。因为权限受限我对每个命令的作用会更谨慎对数据备份更上心。说实话在手机这种随身设备上能够安全、稳定、可控地跑一个 Linux 环境比单纯追求万能权限实用得多。如果你也跟我一样想在没有 root 的安卓机上获得一个随时能用的 Linux 环境那现在这套思路足够你用了。配置好之后剩下的就是让它安安静静地在后台帮你干活。