安卓使用crontab设置计划任务[需root]
管理员

crontab依赖于crond服务,安卓手机上默认是安装了这个服务的,只是在使用命令

crontab -l

的时候总是报这个错误: unknown uid 0

即便使用root权限去执行仍然报这个错误.

在使用autojs来设置定时任务的时候,锁屏后长时间不激活autojs,就会使autojs的计划任务失效(华为手机测试是这样的).那么突发奇想,能否像linux那样使用crontab来设置计划任务呢,于是百度谷歌了一下,还真发现了方法.

虽然还没有经过长时间的测试 来验证此方法的可行性,但是先写一篇安装教程吧

那么本篇帖子则讲一下如何在安卓机上使用crontab来设置一些计划任务.

首先需要准备的环境:

  • 获取了root权限的手机一部

  • 有adb环境或者终端模拟器

  • 下载文件SP8-CRON_v2.zip

  • 手机激活了init.d (重要)

安装过程:

  • 下载 SP8-CRON_v2.zip 解压后,将文件放置到手机的内部存储中
      确保能访问到即可.
  • 使用adb连接手机,连接成功后,使用root身份
      输入 su 切换到root权限
  • 切换到SP8-CRON_v2的目录,在目录中执行命令
    sh Install.sh

等待安装完毕后,手机会重启.重启后crontab内的计划任务则开始生效了.

里面有默认的3条计划任务,想删掉就删掉.

crontab的设置规则以及验证请参考下面网址:

编辑时间: 2018-05-22 11:08
经过长时间的测试,发现这个crontab是可以后台自动运行的只不过他默认使用的是UTC时间,与我们系统的时间有时差,无论你后台是否有进程限制,或是锁屏冻结所有应用,他都可以准时运行,只不过时间需要自己设置好,搭配shell命令启动autojs脚本,可以完美的做一些骚操作.各位同学,是时候秀一下你的安卓手机了...

shell启动autojs脚本命令:

am start -n com.stardust.scriptdroid/.external.open.RunIntentActivity -d /sdcard/脚本/xxx.js  -t application/x-javascript

命令自己应该都会修改吧.只要修改自己的脚本名字即可

最后由 DcrClub 编辑
管理员

事实证明啊,这华为手机,锁屏后,连系统服务都不放过.今早测试失败

管理员

@吾小牛
这个需要你会shell脚本的编写.具体的shell脚本相关的知识,百度一下吧.

miui安卓8.1不能root,8.1不root的情况下有办法能跑这个crontab吗

@dcrclub安卓使用crontab设置计划任务[需root] 中说:

am start -n com.stardust.scriptdroid/.external.open.RunIntentActivity -d /sdcard/脚本/xxx.js -t application/x-javascript
这条脚本4.0.0beta版本好像不能用。
测试后发现,4。0。0修改了包名,
am start -n org.autojs.autojs/.external.open.RunIntentActivity -d /sdcard/脚本/xxx.js -t application/x-javascript

最后由 sdingba 编辑

请问一下,除了-d还有其他参数么?  能不能传递参数之类的?

@dcrclub 我的意思是 auto.js能不能接受参数

管理员

@sdingba 没有啊,你还想把 JS脚本封装成一个功能啊 你要是想传参数进 脚本,直接写shell脚本不就得了

@dcrclub 能am start -n org.autojs.autojs/.external.open.RunIntentActivity 后面跟着直接写脚本么?

管理员

@sdingba 我觉得你先 am --help 一下 先看看 am 是干嘛的,再谈你的想法

我安装后,没有默认的3条任务。在普通模式下有crontab指令,但是并没有运行。
su进入root模式后,crontab直接就找不到了

@dcrclub 找打原因了,是没start。另外,定时任务容易一瞬间同时启动好几个脚本实例,能避免吗。

管理员

@sszxcss 同时启动多个,那应该是你crond服务器 启动了 好几个.或者 crond的计划任务 写的有问题,把任务定到准确的时间点试试

  • 20
    帖子
  • 1562
    浏览

与 Auto.js 的连接断开,我们正在尝试重连,请耐心等待