Termux定时任务
- 安装 Cronie 和 Termux Services
Termux 使用 cronie 作为 cron 的实现,并且推荐使用 termux-services 来管理后台服务(如 cron 守护进程 crond)。
在 Termux 中运行以下命令来安装它们:1
2
3pkg update
pkg upgrade
pkg install cronie termux-services
- 确保脚本存在且有执行权限
- 给脚本添加可执行权限:
示例:1
chmod +x ~/.termux/tasker/test.sh
- 建议: 在你的脚本文件的第一行,最好加上指定用哪个解释器执行,例如:
1
#!/data/data/com.termux/files/usr/bin/bash
- 启用并启动 Cron 服务
使用 termux-services 来启用并立即启动 crond 服务:你可以使用:sv status crond 来检查服务是否正在运行(应该显示 run: crond…)。1
2sv-enable crond
sv up crond1
sv status crond
- 编辑 Crontab 添加定时任务
- 运行 crontab -e 命令来编辑当前用户的 crontab 文件。第一次运行时,它可能会让你选择一个编辑器(如 nano 或 vim),选择你熟悉的即可(nano 对新手通常更友好)。
1
crontab -e
- 示例在打开的编辑器中,添加任务:
1
*/20 * * * * bash $HOME/.termux/tasker/test.sh
- */20: 代表“每隔 20 分钟”(在每小时的第 0, 20, 40 分钟执行)。
- * * * *: 代表“每小时、每天、每月、每周的每一天”。
- bash: 指定使用 bash 来执行脚本(即使脚本内部有解释器,显式指定通常更可靠)。
- $HOME/.termux/tasker/test.sh: 要执行的脚本路径。在 crontab 中使用 $HOME 通常比 ~ 更可靠,它会被正确扩展为你的主目录。
- (推荐)添加日志记录: 为了方便调试,最好将脚本的输出重定向到一个日志文件。修改上面的行如下:
示例:1
*/20 * * * * bash $HOME/.termux/tasker/test.sh >> $HOME/.termux/tasker/test.log 2>&1
- >> $HOME/.termux/tasker/test.log: 将脚本的标准输出 (stdout) 追加到 test.log 文件。
- 2>&1: 将标准错误输出 (stderr) 也重定向到标准输出,这样错误信息也会被记录到同一个日志文件中。
- 保存并退出编辑器:
- 如果是 nano:按 Ctrl + X,然后按 Y 确认保存,最后按 Enter 确认文件名。
- 如果是 vim:按 Esc 键,然后输入 :wq 并按 Enter。
- 验证 Crontab
你可以使用 crontab -l 命令来查看当前已保存的定时任务列表,确保你添加的行是正确的。1
crontab -l
重要提示:保持 Termux 在后台运行
- Cron 任务需要 crond 守护进程持续运行。而 crond 又依赖于 Termux 本身在后台运行。Android 系统的电池优化可能会强制关闭后台的 Termux 进程,导致定时任务无法执行。
- 解决方法:
- 获取 Wake Lock: 在你准备让 Termux 在后台运行定时任务之前,在 Termux 中运行 termux-wake-lock 命令。这会持有一个唤醒锁,阻止设备在 Termux 运行时进入深度睡眠,并减少被系统杀死的概率。你需要保持这个持有唤醒锁的 Termux 会话(或者说,至少保持 Termux 应用本身不被完全杀死)。
- 禁用电池优化: 在手机的系统设置 -> 应用管理 -> Termux -> 电池用量(或类似名称)中,将电池优化设置为“不受限制”或“允许后台活动”。具体路径因 Android 版本和厂商而异。
Termux定时任务
https://wumingmr.github.io/2025/04/28/Termux定时任务/