Termux安装supervisor任务管理器

Android手机上安装配置termux已经有很多教程,比如:Termux——安装配置_termux安装-优快云博客

本文介绍在termux环境中如何安装配置supervisor任务管理器。

在公司接触了一些服务器项目都是交由supervisor托管,实现服务的启停,自动重启等功能,在termux环境中安装使用supervisor和其他os上略有不同,具体步骤如下:

1. 安装python,执行:

pkg install python3

2. 安装supervisor,执行:

pip install supervisor

3. os has no attribute link 错误问题解决

此时启动supervisord会报错“os has no attribute link” 解决方法如下:

在termux用户主目录里执行:

vim /data/data/com.termux/files/usr/lib/python3.10/site-packages/supervisor/http.py
把python3.10替换成实际使用的版本号

将578行的 "os.link" 改成 “os.symlink”

4. 建立supervisor运行所需目录和文件,包括:

主配置文件:/data/data/com.termux/files/usr/etc/supervisord.conf (默认安装好后已存在,若不存在可照抄官方的)

目录:/data/data/com.termux/files/usr/etc/supervisor/conf.d 自己加的服务配置放在这里

目录: /data/data/com.termux/files/usr/var/log/supervisor  用于存放supervisor log文件

5. 启动supervisor运行:

执行:`supervisord` 默认读取 /data/data/com.termux/files/usr/etc/supervisord.conf 文件

执行 `supervisorctl status` 查看当前各任务运行状态

6. 加入启动脚本

若想在启动termux时候自动启动supervisord,需要在termux启动脚本${HOME}/.bashrc里加入如下命令:

kill -0 `cat $PREFIX/var/run/supervisord.pid 2>/dev/null` 2>/dev/null || supervisord
其中`kill -0`是检测指定进场号的进程是否在运行,只有当前无其他实例运行时才启动新实例。

7. 手机开机自动运行supervisor (需要root)

如要在每次手机开机或重启的时候自动启动supervisord需要获取手机的root权限,具体操作网上有许多教程可参考。

先准备一个脚本"start_supervisor.sh",内容如下:

#!/data/data/com.termux/files/usr/bin/bash

# 设置运行termux所需的环境变量
export PATH=/data/data/com.termux/files/usr/bin:$PATH
export PREFIX=/data/data/com.termux/files/usr
export LD_PRELOAD=/data/data/com.termux/files/usr/lib/libtermux-exec.so

pidfile="/data/data/com.termux/files/usr/var/run/supervisord.pid"
conf="/data/data/com.termux/files/usr/etc/supervisord.conf"

# wait for filesystem ready
for i in $(seq 50); do
    [ -d /sdcard/usr ] && break
    sleep 3
done

# 启动supervisord,确保全局唯一实例
ps -p $(cat $pidfile 2>/dev/null) > /dev/null 2>&1 || supervisord -c $conf

在root成功后,进入termux,执行 `su -M` 进入root模式

将刚刚的这个脚本放到 "/data/adb/service.d" 目录中

设置脚本权限:

cd /data/adb/service.d
chown 0.0 start_supervisor.sh
chmod 0755 start_supervisor.sh

将上文提到的supervisor自动启动命令从 ${HOME}/.bashrc 中移除掉。然后重启手机,进入termux, 执行`supervisorctl status`, 可以发现supervisord已在运行。

实际上不启动termux,supervisor也会随着手机的启动在后台运行,这样supervisord运行在root空间,可以直接添加需要在root空间运行的任务。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值