KSWEB Cron 计划任务 定时备份数据库 跑批处理 Android 11 起受限
基本概念
KSWEB PRO 版的 Scheduler 用标准 Unix cron 风格表达式来定时执行任务。和 Linux cron 一样,五个星号/数字表示时间:
┌──────── 分钟(0-59)
│ ┌────── 小时(0-23)
│ │ ┌──── 日(1-31)
│ │ │ ┌── 月(1-12)
│ │ │ │ ┌─ 星期(0-6,0=周日)
│ │ │ │ │
* * * * * 每分钟执行一次
常见写法
| 表达式 | 含义 |
|---|---|
0 3 * * * | 每天凌晨 3 点 |
0 */6 * * * | 每 6 小时整点 |
30 2 * * 0 | 每周日凌晨 2:30 |
0 3 1 * * | 每月 1 号凌晨 3 点 |
*/10 * * * * | 每 10 分钟 |
怎么配置
- KSWEB SETTINGS → Scheduler → 新增任务
- 填 cron 表达式
- 填要执行的命令或脚本路径
- 保存
如果要跑 PHP 脚本,命令里要带 PHP 解释器的完整路径,比如:
/data/data/ru.kslabs.ksweb/files/php/bin/php /sdcard/scripts/daily-backup.php
常见用例
每天凌晨自动备份 WordPress 数据库
0 3 * * * /data/data/ru.kslabs.ksweb/files/mysql/bin/mysqldump -u root wordpress > /sdcard/backup/wp-$(date +\%F).sql
注意 date 里的 % 要转义成 \%(cron 里 % 是特殊字符)。
定时清理临时文件
0 */4 * * * rm -f /sdcard/htdocs/wp-content/cache/*
每 5 分钟跑一个 PHP 心跳脚本
*/5 * * * * /data/data/ru.kslabs.ksweb/files/php/bin/php /sdcard/scripts/heartbeat.php
Android 版本限制 ⚠️
官方文档明确提醒:Scheduler 只在 Android 10 及以下工作可靠。Android 11+ 的 DOZE 模式和 App Standby 限制会让计划任务不准时、跳执行、甚至完全不执行。
原因是:Android 11+ 对后台应用的唤醒极其保守,KSWEB 即使在后台长期运行,DOZE 模式(用户不操作设备几小时后自动进入)会冻结它的所有定时回调。
应对策略
- Android 10 及以下 — Cron 正常用,加个守护脚本定时唤醒就行
- Android 11+ — 用前台服务(Foreground Service)保活 KSWEB:在 KSWEB 设置里开"保护服务器被非授权终止",或用 Tasker + AutoStart 配合
- 真要长期跑定时任务 — 建议放一个小容量 VPS(比如 1 核 512M 的阿里云 ECS),比手机靠谱太多。手机当开发测试主机还行,真要 7×24 跑定时任务不靠谱
注意
Scheduler 功能是 KSWEB PRO 版专属。Standard 版没有这个入口,需要升级才能用。版本档位对比见 Standard vs PRO。