想法

手上有个旧的Android 手机 MI 5 plus闲置了两年,性能还相当不错的,就是屏幕被我摔花了,最近总想着让他发挥点价值。

突然想到能不能用它当小型Linux服务器放在家里,用内网穿透工具 frp 将他的sshd 服务端口转发的公网的服务器上, 这样在外面就可以通过这台公网服务器连接上这个 linux 服务器 。

探索

一番网络搜索研究 发现两种方案:

  • 第一种安装 linux deploy,比较大, 需要 root
  • 第二种 用 termux,能访问有限的目录文件,可以安装各种Linux 应用,

果断选择了termux, 不想 root. 顺利安装了 python, gcc, openssh 等软件 。。。通过frp的客户端frpc连接上公网, 从公司 ssh连接上了这个 5plus ,爽歪歪。

障碍

但是-- 有个奇怪的问题, 每隔一分多钟会断开。 各种 ssh, frp客户端日志和服务器日志检查,发现是 frp客户端每隔 1分多钟会断开。

这个问题困扰了我几个星期,一开始还怀疑是运营商 每几分钟重置链接。但是我电脑上的 frpc 却没事。。。

源代码分析

后来分析frp的golang源码,打开详细日志 发现, 服务器上超时时间是90秒,客户端心跳上报时间是30秒, 而termux 上运行的frpc,服务器上显示的是超时,超时后会断开客户端,然后frp客户端会马上重连, 这个时间设定无论如何都不应该超时呀。 自己编译一边, 同样代码编译的frp客户端程序在mac电脑上运行却没问题,日志中看到每隔30秒会发布心跳。但是这个心跳日志在termux上没有。很是困惑呀, 仔细阅读代码。

于是开始怀疑是代码中的心跳定时器在电脑上和在手机上的时间不一样。 于是写了个最简单的go程序,定时每隔1秒输出包含时间信息到日志。在电脑上输出正常。 放到termux上去执行,发现了非常诡异的结果,输出的时间信息,并不是每秒输出,几乎是每隔6到 7秒中,但是我到定时器是每隔1秒啊!! wfk, 这是什么情况,太不可思议了

就这个定时器不准到问题再次去google 了一番,发现是Android深度睡眠导致的,为了减少耗电,后台程序的运行很慢,连timer定时器也不例外。

除掉障碍(解决办法)

在手机上termux里面执行termux-wake-lock命令 ,手机会弹出是否运行后台执行的,选择允许就好了,

然后在去 termux再次frp客户端,哈哈,终于不会频繁掉线了!不容易呀

研究 termux 时遇到的诡异的问题相关推荐

  1. 在使用谷歌时发现一个诡异问题cookie传不过去

    在使用谷歌时发现一个诡异问题cookie传不过去 查找相关资料发现这是谷歌的一个新属性SameSite导致的, SameSite 属性 Cookie 的SameSite属性用来限制第三方 Cookie ...

  2. 电脑A和电脑B建立通信,这就是网络。IO、中断、缓冲区这都不是研究网络时该关心的事

    你是一台电脑,你的名字叫 A 很久很久之前,你不与任何其他电脑相连接,孤苦伶仃. 直到有一天,你希望与另一台电脑 B 建立通信,于是你们各开了一个网口,用一根网线连接了起来. 用一根网线连接起来怎么就 ...

  3. python输入一个自然数n如果n为奇数_日本数学家谷角静夫在研究自然数时发现了一个奇怪现象(“谷角猜想”):对于任意一个自然数...

    [单选题]以下选项中能用作Python程序变量名的是____________.(2.5分) [单选题]执行下列程序段,输入数值10,输出的结果是___________. x = input() y = ...

  4. php fwrite 数组,浅析php fwrite写入txt文件的时...-发现一个诡异的bug,不知何解...-php折线图 布局图 - 侯志凯_169IT.COM...

    本页文章导读: ▪浅析php fwrite写入txt文件的时候用 \r\n不能换行的问题 - 一觉睡到天黑黑      以下是对php中fwrite写入txt文件的时候用 \r\n不能换行的问题进行了 ...

  5. 构建“.NET研究” View 时可能用到的代理函数调用顺序

    很多时候,上海企业上海徐汇企业网站制作网站设计与制作要记住iPhone试图加载的life-cycle上海闵行企业网站设计与制作对应的代理函数是有点头疼的,特别是用Interface Buil上海徐汇企 ...

  6. 验证谷角猜想。日本数学家谷角静夫在研究自然数时发现了一个奇怪现象:对于任意一个自然数 n ,若 n 为偶数,则将其除以 2 ;若 n 为奇数,则将其乘以 3 ,然后再加 1。如此经过有限次运算后,总可

    #include<stdio.h> //用户输入值n //判断n是否为1 // 如果是偶数除以2,是奇数乘3加1 int main() {int n; scanf("%d&quo ...

  7. 使用NVivo研究时,不得不注意的几点!

    NVivo是一款支持定性研究方法和混合研究方法的软件.它可以帮助您收集.整理和分析访谈.焦点小组讨论.问卷调查.音频等内容.全新的NVivo12更可协助您处理社交媒体和网页内容.NVivo强大的搜索. ...

  8. 嵌入式Linux设备驱动程序:在运行时读取驱动程序状态

    嵌入式Linux设备驱动程序:在运行时读取驱动程序状态 Embedded Linux device drivers: Reading driver state at runtime 在运行时了解驱动程 ...

  9. 从事了两年 AI 研究,我学到了什么?

    作者 | Tom Silver 译者 | 弯月 出品 | CSDN 我从事人工智能研究的工作已经有两年了,有朋友问我都学到了什么,所以我想借本文分享一些迄今为止积累的经验教训.我将在本文中分享一些常见 ...

最新文章

  1. CF1006E Military Problem
  2. Android 源码编译相关
  3. 史上讲的最好的Java NIO与IO的区别与应用
  4. MIT人工突触芯片新突破:指甲大小的芯片有望媲美超算
  5. 如何看待2016年安防市场?
  6. 九种 0-1 背包问题详解
  7. 建立ssh无密码登录环境
  8. C语言试题四十七之程序定义了N×M的二维数组,并在主函数中自动赋值。请编写函数function(int a[N][M], int m),该函数的功能是:将数组右上半三角元素中的值乘以m。
  9. 猫都能学会的Unity3D Shader入门指南(二)
  10. 全向轮移动机器人构型分析
  11. ansys workbench 静力结构分析 高阶教程
  12. 八孔g调短洞箫_八孔g调洞箫曲谱_八孔G调箫G调简谱
  13. sync.Pool 使用
  14. OpengL消除锯齿
  15. android webView 全屏播放网络视频
  16. android 3d车辆轨迹,极限汽车轨迹3D游戏
  17. 关于dubbo的rpc基于传输层一说
  18. php使用amqp,php,_php的amqp应该怎样使用?,php - phpStudy
  19. AI图像合成技术如何用于数字营销和创意领域?
  20. 人工智能有哪些优势?人工智能5项技术介绍

热门文章

  1. ESP8266-01S+MQTT+阿里云数据传输
  2. SQLServer将多行数据合并成一行多列
  3. 出现无法将“yarn”项识别为 cmdlet、函数、脚本文件或可运行程序的名称。请检查名称的拼写,如果包括路径,请确保路径正确,解决方法
  4. Android Studio 模拟器使用Windows串口
  5. sonyvegas基本操作及快捷键
  6. matlab论文 关于高数,高数和matlab论文,关于基于MATLAB软件的轨道交通高职院校高等数学课程教学相关参考文献资料-免费论文范文...
  7. 中国绿化苗木市场需求动态与盈利前景预测报告(新版)2022-2027年
  8. html5游戏狗,保卫萝卜2地下庄园D5攻略 极限清理太阳
  9. Steam Apex Legends 领取方法
  10. pb管能用ppr热熔器吗_PPR管和PB管热熔连接温度是多少度?