如何使service.d中的Shell脚本每5分钟重复执行以保持屏幕常关?
实现service.d脚本每5分钟重复执行的方法
方法一:修改脚本加入循环逻辑
service.d下的脚本默认开机仅执行一次,要让它持续每隔5分钟运行一次,最简单的方式是在原脚本中加入while true循环结构,每次执行完指令后休眠5分钟。修改后的脚本如下:
# 先等待60秒确保系统初始化完成(可根据实际情况调整时长) sleep 60 # 无限循环执行关闭屏幕操作 while true; do su -c CLASSPATH=/storage/emulated/0/DisplayToggle.dex app_process / DisplayToggle 0 # 休眠5分钟(300秒) sleep 300 done
关键说明:
while true会让循环持续运行,直到脚本被主动终止sleep 300对应5分钟(60秒×5),替换原脚本的单次休眠逻辑- 开头的
sleep 60保留,避免系统刚启动时权限或服务未就绪导致执行失败
方法二:利用cron定时任务(需系统支持)
如果你的Android设备刷入了支持cron的ROM(如部分LineageOS版本),或通过Magisk模块安装了cron服务,可以直接创建定时任务:
- 终端获取root权限:
su - 编辑crontab规则:
crontab -e - 添加以下定时指令:
*/5 * * * * su -c CLASSPATH=/storage/emulated/0/DisplayToggle.dex app_process / DisplayToggle 0
- 保存退出,确保cron服务处于运行状态
关键说明:
*/5 * * * *是cron的时间规则,代表每5分钟执行一次任务- 这种方式无需依赖service.d脚本,定时任务会独立运行
注意事项
- 确保脚本拥有可执行权限:执行
chmod +x 你的脚本完整路径(service.d常见路径为/system/etc/service.d/或/data/adb/service.d/,根据设备实际路径调整) - 若使用Magisk的service.d,脚本需放在
/data/adb/service.d/目录下,文件名不能包含空格 - 测试时可临时将
sleep 300改为sleep 10,快速验证循环是否正常工作
内容的提问来源于stack exchange,提问作者xdesniy
相关产品推荐
相关产品推荐

