在Android设备上部署Crontab定时任务

XKL | HDU自动化健康打卡

在Android设备上运行Linux发行版(Ubuntu),并部署Crontab定时任务(自动化定时健康打卡)

0 前言

本文涉及的健康打卡功能所在的项目地址:Github | XKL

1 Termux的下载及安装

  • Github | termux-app
  • 前往Termux官方仓库下载其发行版 apk
    • release页中有多种发行版,请根据处理器架构进行选择。近5年的手机一般选择arm64-v8a,除非你的手机很老,那么就选择 armeabi-v7a。倘若不确定处理器架构,那请上网自行查询你的soc的架构。

2 Termux初始化配置

2.1 更改镜像源(如果你的设备使用了翻墙工具或者连接了翻墙的网络,那么可以选择略过此步)

  • 终端内执行 termux-change-repo
  • 选择 Single mirror(或者Main Repository),然后 OK
  • 选择 mirrors.tuna.edu(或者Mirror Tsinghua),然后 OK
  • 终端内执行 apt-get update(Termux最新版在重新选择镜像源后,会自动更新apt)
  • 终端内执行apt upgrade -y

3 安装 Python3

  • 终端内执行 pkg install python3
  • 终端内执行 python --version
    • 如果输出了 Python3 版本信息,那么说明安装成功,请留意输出的Python版本信息(例如,Python-3.10)
  • 终端内执行 apt install -y clang libxml2 libxslt
  • 终端内执行 pip install cython wheel
  • 终端内执行 pip install requests beautifulsoup4 urllib3 js2py pyyaml lxml

4 安装 Ubuntu

  • 终端内依次执行
1
2
3
4
5
apt install -y proot-distro
proot-distro install ubuntu
proot-distro login ubuntu
apt-get update
apt upgrade

5 安装 Git

  • 终端内执行 apt install -y git

6 克隆XKL仓库到本地

  • 终端内执行 cd /home && git clone https://github.com/Albresky/XKL.git
  • 切换工作目录到XKL/src,终端内执行cd XKL/src

7 修改 task.sh

  • 安装 Vim
    • 终端内执行 apt install -y vim
  • 查看 Python安装路径,终端内执行 which python,然后复制终端输出的路径
  • 查看 当前环境的完整路径,终端内执行 pwd,然后复制终端输出的路径
  • 修改 task.sh
    • 终端内执行 vim task.sh,输入 i 进入编辑模式(编辑模式左下角会显示INSERT
    • workdir 的值修改为刚才复制的当前环境的完整路径(剪贴板中)
    • thisPython 的值修改为刚才复制的Python安装路径(剪贴板中)
    • thisPythonPATH 的值修改为/data/data/com.termux/files/usr/lib/python3.10
    • [注意] 上面路径最后的 python3.10是你安装的python版本号,请根据实际修改
    • [注意] 以上三个变量结尾均无 /
    • 点击ESC后,输入 :wq,回车
  • 终端内执行 chmod +x ./task.sh
  • 根据提示初始化账号信息

8 安装cron

  • 终端内执行 apt install cron -y

9 配置定时任务

  • 终端内执行 crontab -e
  • 点击屏幕上的 CTRL 后,点击 END,以跳到文件末尾
  • 输入 i 进入编辑模式(编辑模式左下角会显示INSERT
  • 输入 20 05 * * * bash /home/XKL/src/task.sh >> /home/XKL/cronLog.txt
    • [注意] 20 05 * * * 的每个位置依次表示 *表示不指定特定时间
    • [注意] 这里的20 05表示UTC-0时区的早上5点20分,东八区需要将本地时间减去8小时。比如20 05 * * * 表示,每月每周每日的14:20分(东八区)执行后面的命令(打卡脚本)
  • 点击ESC后,输入 :wq,回车
  • 终端输入 service cron restart,以重启cron

10 结语

  • 在Android上部署Crontab,可以还原Linux系统的原生体验,但对于不熟悉Linux系统的朋友,使用Termux进行伪Linux体验,则有些曲线救国;

  • 最佳方案是:寝室有一台搭载Linux系统且长期供电运行的设备(树莓派、笔记本、路由器等); 折中方案是:使用ECS;

  • 最麻烦但效果媲美最佳方案的是:使用Android设备。

给作者倒杯卡布奇诺 ~
Albresky 支付宝支付宝
Albresky 微信微信