android系统使用crontab定时任务

1,010次阅读
没有评论

一、先决条件
必须root,root才能在system目录配置文件
安装busybox包,busybox是一个linux命令的工具包
二、激活init.d
init.d在linux系统里面是负责管理系统启动以后自动执行的一些脚本的,必须把启动cron服务的脚本写在里面,这样每次系统启动的时候,cron服务才会起来,功能才能使用

版本一:使用apk包安装

版本二:执行term-init脚本

mount -o rw,remount /system
adb push ~/Desktop/term-init.sh /mnt/sdcard
adb shell
su
sh /mnt/sdcard/term-init.sh

三、配置系统crontab
SP8-CRON文件
sdb push ~/Desktop/SP8-CRON /mnt/sdcard
adb shell
su
cd /mnt/sdcard/SP8-CRON
sh Install.sh

四、检查crontab执行
检查进程
ps -A | grep crond
crontab -l

可是每次执行crontab -l,系统都会报一个错误unknown uid 0. 通过id命令检查,uid为0就是root用户,为什么不能执行?

pgrep crond

如果查询不成功执行脚本
cd /system/etc/init.d/
sh S99CRON-SP8

查看crontab定时任务文件/system/etc/cron.d/root,从配置文件可以看到每五分钟输出date到/data/cron-sp8.log文件,查看这个文件,检查是否输出,如有输出说明有定时执行
*/5 * * * * date > /data/cron-sp8.log
0 */1 * * * /system/xbin/flush
0 1 * * 1 /system/xbin/sclean

五、修改定时任务
kill掉进程
whyred:/system/etc/init.d # pgrep crond
pgrep crond
14442
whyred:/system/etc/init.d # kill -9 14442
kill -9 14442

修改配置文件,增加每十分钟启动系统闹钟
mount -o rw,remount /system
echo ‘
*/5 * * * * date > /data/cron-sp8.log
0 */1 * * * /system/xbin/flush
0 1 * * 1 /system/xbin/sclean
*/10 * * * * am start -n com.android.alarmclock/com.android.alarmclock.AlarmClock’ > /system/etc/cron.d/root

启动服务
sh /system/etc/init.d/S99CRON-SP8

六、参考
Enable Init.d for Any Phones w/o Need of Custom Kernels!!! by Ryuinferno
Android系统中利用crond功能的实现手机的定时重启或关机
android系统安装init和crontab支持
android上 crond!
How to use crontab in Android?

正文完
可以使用微信扫码关注公众号(ID:xzluomor)
post-qrcode
 
评论(没有评论)