Android监控服务器进程

相信很多同学遇到过在服务器上跑的程序被掐了或者莫名奇妙挂了的情况,特别是长时间运行的程序,如deep learning的训练,白白浪费一天可不好玩。因此我想了各种姿势监控我的程序,比如进程一旦消失就发邮件通知等等,感觉姿势不够美妙,于是最近鼓捣了一下,发现了神器。


Termux

Termux简直太吊了,简直就是一个五脏俱全的debian,你敢信他有apt?也就是可以安装ssh、python、git…..,所有的包可以看github。帅爆了,当时我就把那个弱鸡QPython删了。既然有了python,那能做的事就多了去了。当然也可以使用pip,只是像numpy的库依赖C库的包装不了。一言不合我就在安卓上装了个Flask。来看个Termux跑在Nexus 5上的截图,依次是当计算器的Python,跑了Flask的Python和Flask的网页。

termux flask flask2

 

帅的不能自理。是不是觉得配色有点难看,没事,可以付2.49刀买个Termux:Style,虽然我觉得改个配色应该很简单。这个开发者太有节操了,要钱的都是无关紧要的,不要钱的像Termux,Termux:API都很要紧,为了表示感谢,我买了个Termux:Widget(当然后面也能用到)。ssh就用 apt install openssh 就行了,然后跟普通Linux操作一样设置无密码登录就行了。Easy!备份手机能就变得很方便了,使用神器rsync,就一句命令如 rsync -aXvh --delete -P /sdcard/ "ssh -p port" user@ip:backup ,而且由于是增量备份,只有第一次备份可能需要花一点时间。总之,Termux真是相见恨晚。


定时SSH执行远程命令

回到正事,我要监控服务器,必须能跟服务器通信啊。我不想开个端口,比如HTTP比较容易,但增加一个端口就增加了风险,因此选择SSH来执行远程命令是坠吼的。我经常用的Serverauditor好是好,但是不能命令行运行啊,那不是坑爹吗。或者用CyanogenMod(2016/12/24 网站关闭卧槽!),更像Linux一点,直接内置ssh,但我还是想用原生android的。另外更重要的是要定时啊,类似cron的功能,这个得借助另一个神器Tasker完成。Tasker就强大了,有JuiceSSH的Tasker插件,tm的,太贵了。还可以用connectbot,然后让tasker发起intent,参考此处彼处。我觉得还是Termux靠谱,这时Termux:Widget就派上用场了,通过Tasker调用Secure Settings来执行Termux:Widget中的脚本。好像有点复杂,可以看看作者怎么说(关于发送短信到电脑)。整个Tasker流程如下,关键是执行Shell脚本那步,我是设定每60分钟执行一次,错误就发送通知,还播放雷姆声音提示哦!

tasker

还有很多tasker能做的事情,比如用雷姆声音提醒喝水,记录自己的轨迹(wifi信息),转发短信,自动回复微信等,非常帅!花点钱是值得的。如果你有一个女朋友,可以发送短信给她让她提醒你,用termux-api就能从命令行发送短信了,详见termux-api

 

 

最近高产似母猪啊,要把之前没更的全补回来。

懒人秘籍

文本处理

统计句长并排序:

替换上条指令中某些字符,参考

比较不可见字符,有些时候diff输出是一样的(因为空格的关系)

重排两个对应文件

查询ascii


安全相关

生成随机密码:

umask设置在sudo时不继承,否则当普通用户设置为umask 0077的时候,使用sudo创建的文件,普通用户不能读。(pip的一个大坑)

整人,fork bomb感觉这个威力更大

 


系统管理

定期运行某个脚本,且在开机后马上运行。比如运行翻墙的shadowsocks就很必要。最方便是用crontab:

包管理


生活美好

除scp,rsyn,sshfs这类,更帅的在主机间传输文件(具体):

ssh仅运行一条命令(具体

在shell的一行里运行多条命令(详细


疑惑解答

各种括号的含义(参考stackoverflow

 

装机

 

待续。

科学的在主机间传输文件

长久以来,一直被如何高效的传输文件困扰。比如说打印PDF啊,在主机间传输文件啊。去打印店的话用USB可以解决,但这样还好中毒,一不小心还会把U盘忘掉,还要插拔4次,真是麻烦。况且很多情况下用不了U盘。看了我下面的方法后,U盘就剩下在没网的情况下使用的价值了。

原始:

要复制另一台主机的一个小文件,而且现在正是ssh的状态,那么可以直接cat,然后选中内容,再粘贴到本机文件。但如果这个小文件是个zip,或者其他什么二进制文件就不能直接复制了,因为不可打印字符的存在。那就用base64。简单粗暴。

 Netcat:

顾名思义,就是联网的cat。netcat(nc)被称为Swiss Army Knife of networking.我还没有深入研究过,就使用的几个命令来看,确实很吊。他也能用来传输文件。下面是简单的例子,具体选项看man。这个方法很迅速,很干净。缺点是对方是windows怎么办?

临时Web服务器:

这tm总没问题了吧,只要有浏览器就能传输文件了。python,对,python就是这么方便。我就想说,U盘存在的意义在哪?据测试,python的SimpleHTTPServer能轻松胜任10M/s的传输速率传输3G文件。更高速率还没测过。

 安全:

有时候还有满足安全方面的考虑,以及复制目录的要求,前面的几种方法好像不是很难胜任。所以需要更专业的工具。scp和sftp之前在实用ssh已经提到过。使用起来也非常方便。而rsync则是更专业的工具,可以支持增量复制。相当于在本地和远程目录间保持同步。rsync也能使用ssh的别名,更加方便了。

一定还有更吊的,发现了再更新。

链接:

  1. nc transfer file
  2. rsync