Android 的 screen 命令和进程守护

minio 进程启动后,如果这时候关闭了终端窗口或者SSH,其进程也会被结束。那么怎么办呢?对于 Linux 也许很容易做到,使用 screen 命令开一个新的命令窗口,这样就算关闭了这个命令窗口,minio 的进程依旧可以执行,但是 android 手机又该怎么做呢?

很简单,还是使用 screen,我们不可能再使用 screen 的源代码再编译一次,但是官网 gnu 官网也没有看到它的 arm 版本。这时可以借用 termux 的 pm 命令安装 screen,它会针对当前的手机 cpu 架构下载对应的软件包。

在 termux 上安装 screen,推荐使用清华大学的镜像。

https://mirrors.tuna.tsinghua.edu.cn/help/termux/

安装命令:

pm install screen

安装完成后,在 /data/data/com.termux/files/usr/bin 目录找到 screen 二进制文件,它依赖下列四个文件:

libcrypto.so.1.0.0
libutil.so
libncursesw.so.6
libcrypt.so

可以在 /data/data/com.termux/files/usr/lib 目录中找到。

然后将 screen 文件复制到 /system/bin 目录,.so 文件复制到 /system/lib 目录,用 chown 命令指定用户为当前目录的用户保持一致。

在 adb shell 下执行 screen 看窗口有无执行成功,缺少什么 so 就去 termux 的 lib 目录下找通常都能找到。screen 命令很简单,可以参考 GNU 文档 :

http://www.gnu.org/software/screen/manual/screen.txt

一般是 screen 命令后就进入一个新窗口,执行命令后按 Ctrl + A +D 离开当前窗口,注意是离开而不是推出关闭。执行 screen -ls 可以查看活动的窗口,screen -r id 可以重新打开窗口会话,kill -9 id 杀死窗口会话的进程,screen -wipe 将所有被 kill 的进程会话从 screen list 中移除,常用的就这么多。

这个我在 android 6.0.1 上测试,使用 screen 命令将 minio 进程退到后台,关闭了 shell 后,进程仍在运行不受影响。

然后说说这个进程守护,肯定大家都知道 supervise 这个 python 编写的工具,可以通过 pip 安装,这里就不深入了,反正网上的资料一大把,我目前是用它守护我的 dotnet core 进程,目前69天不间断运行。

Android 的 screen 命令和进程守护_第1张图片
正在守护 dotnet core 进程的 Supervisor

不过问题是 android 没有自带 python ,只有 Termux 下有个 python,Termux是个 android app,所以这一套在 android 手机这个场景下基本没卵用了,不过可以写个 service 持续监控。

你可能感兴趣的:(Android 的 screen 命令和进程守护)