12
2019
04

小米路由重启计划下架不怕!教你用cron实现更可靠的自动重启

小米路由重启计划下架不怕!教你用cron实现更可靠的自动重启

本教程实现需要开启ssh!参考原有帖子



在本版一些贴子中看到有同学表示因为“重启计划”功能的下架

而 想!换!路!由!器!

这个教程迫在眉睫……从来不发帖的我来写吧……


此教程理论上适用于所有带有usb版本的小米路由器

p.s. 所有的小米路由器都是基于OpenWRT系统深度定制,底层是一样的,但本人无法亲自认证每一款,使用“理论上”三字更为严谨。

————————————————————————————————————————


前 言:


众所周知,基于谜一样的原因,

小米官方下架了手机端设置路由器“重启计划”功能,

群众哀嚎遍野,一片哗然!

官方宣称,比重启更好用的“自动优化”功能将会上线(虽然也还没看到踪影)


但,从网吧网管,到运维工程师,都知道

系统卡顿小毛病


什么最管用?


重启最管用!!


即便是商用服务器,由一群高薪的,高技术的运维工程师维护着,

轮流定期重启也是免不了的,


而我们的智能路由器,本质也是一台基于Linux的小型电脑,

我们不是商用服务器,

我们不怕睡觉的时候断网一分钟,

定时重启,是保障路由器在你正在使用时,

稳定运行,不出小毛病的理想办法



那明明可以睡觉的时候自动重启,

为什么要醒着的时候打开app或者web页面,

手动在需要用网络的时候断一下网呢?!


废话讲完,马上开始!!


————————————————————————————————————————

索 引 :


        (一)什么是CRON

        (二)配置cron实现自动重启

                    1. 打开cron配置文件

                    2. 命令行下“VI文本编辑器”的基本用法

                    3. cron的配置文本格式及规范

                    4. 保存退出,完成


————————————————————————————————————————


(一)什么是CRON?


        cron,全称“Cronie”,是Linux / Unix平台下,一款通用的,标准的定时任务实现程序,由于其配置简单,稳定可靠,几乎集成在所有的Linux / Unix发行版中,包括并不限于Redhat-RHEL,CentOS,Ubuntu,Debian,Deepin,以及Unix系统如FreeBSD,甚至MacOS等等。作为其默认的定时任务实现。


        所以,无论从大型商用服务器,到嵌入式的如智能摄像头,智能音箱定时报个什么的等等,一切关于定时的东西,绝大部分都是由cron去实现的。


        而我们小米路由使用的系统,是基于OpenWRT深度定制的。

        而OpenWRT又是什么?是一个基于Linux的深度定制开源路由器系统,适配各品牌,各型号的路由器,而cron,当然也集成其中

        我们通过手机APP,web管理界面中,对小米路由器设置的所有关于“定时执行”的功能,其本身就是通过cron在实现,实质上是通过图形界面 / UI,向后台的cron配置文件,添加了一条规则而已。

        

        所以要手动实现这个自动重启功能,实质上将会非常简单

        因为,首先我们无需添加或安装任何新的软件,而cron的配置方法本身又是非常简单明了


        现在我们只需要开启ssh,获得系统级管理权限,连上去,手动添加一条关于“定时重启”的规则,就得了!


     而且!!!

      通过自己设置cron实现的自动重启

      时间精准度非常高,个人查看log总结延迟在2-3秒左右

      也就是你设置4点重启,4: 00: 03就真的重启了

           [隐藏] 官方之前那个,用过的都知道!延时小几十到大几十分钟,并且毫无规律!每天不一样!我真不知道是怎么实现的#¥#%¥……[/隐藏]




————————————————————————————————————————

————————————————————————————————————————


 (三)【主菜开始】配置cron


        前面那么长,其实到真正配置,却是非常简单的,本身已经开启ssh的同学,看着这里估摸5分钟就配置好了


     1 . 打开cron配置模式:

                 输入并回车


crontab -e


            1.1 现在你看到的就是cron的配置文件

        可以看到,文件本身已经有很多内容了,里面每一行,代表一个定时计划,这里有些是你通过app,web页面设置的,而有些,是官方默认设置的系统运行需要,这里我们不用管,也不用动它本身的内容。

        我们现在要做的,是在最后一行,添加一行定时重启的规则,保存退出,就完成了


        下文再分为最后两个部分,首先是这个文本编辑器的使用,

        在了解vi文本编辑器的基本使用方法后,我再列举cron条目的写法规则。


——————————————————————————————————————


          2. 命令行下“VI文本编辑器”的基本用法

               我们已经进入到了cron的配置文件,这就是一个纯文本文件,类似于txt文件,cron会读取里面的内容来执行。

               而这个文本编辑器,跟我们一般用的记事本,Wordpad,Office等等的操作方式并不一样,很多没有Linux基础的新同学,见到这个叫vi的文本编辑器就懵了,我怎么连字都打不进去?!!

               其实这是大部分Linux发行版下默认的文本编辑器,也是我们小米路由器内置唯一的文本编辑器。它的设计,是为了实现在命令行模式,无鼠标的场景下,进行并不限于文本选取,复制,粘贴,剪切等等的操作。

               但现在我们不需要学习这些,我们只需要知道怎么成功输入,保存,退出,就可以了,这就很简单了。


基本指令如下表:

i进入编辑模式
Esc [左上实体键]退出编辑模式
:q!不保存退出(注意冒号)
:w保存文件(注意冒号)
:wq!保存并退出(注意冒号)
↑↓←→控制游标

简单地说,就是输入任何文本前,都先键入 i 进入编辑模式,进入编辑模式后,配合↑↓←→操作就跟键盘操作记事本没两样了。输入完成后,键入 [Esc] 退出编辑模式,就可以用 :+命令 操作 保存,退出等指令。


同学们可以随意操作一下,不要紧的,弄乱了先 [Esc] 几下,然后输入 :q! 不保存退出就好。


编辑完成并确保正确后,输入 :wq! 保存并退出


——————————————————————————————————————


          3. cron条目编辑规则

                首先,我先实例展示一个 每日上午9时正 自动重启的任务条目

                crontab 的基本格式是(中间以空格分隔)

分  时  日  月  年  /命令

                而上面图中,我在最后一行添加的条目是:

0 9 * * * /sbin/reboot

            * 表示的是所有/sbin/reboot 就是重启命令,所以这行条目表达的就是:

             0分  9时  每日  每月  每年  执行 /sbin/reboot

             人话就是:管他什么年什么月,每天9点0分重启


             那我需要在每日凌晨4点重启,把9改成4就可以了

0 4 * * * /sbin/reboot


             每日四点半呢?

30 4 * * * /sbin/reboot


             是不是好简单!


             那,我们看到其他条目里面有诸如 */1 ,是什么意思呢?

             是 频率,这个对我们制定重启计划来说,是非常有用的,以文字介绍难以阐明,我们下面大量举例子表达,举一反三,同学们看过后融会贯通,可以定制任何自己想要的规则。


0 4 */2 * * /sbin/reboot

意味着:每年 每月 每两日 4时 0分,执行一次重启

人话:每两天(也就是隔天) 在4点整 重启一次


0 4 */3 * * /sbin/reboot

意味着:每年 每月 每三日 4时 0分,执行一次重启

人话:每三天(也就是隔两天)  在4点整 重启一次


到这里,对于大部分人来说应该已经够用了。

更多如:


15 4 mon,thu * * /sbin/reboot
意味着:每年 每月 周一,周四 4时 15分,执行一次重启
人话:逢星期一及星期四 的4时 15分 重启一次


30 16 mon-fri * * /sbin/reboot
意味着:每年 每月 周一至周五 16时 15分,执行一次重启
人话:星期一到星期五 的 下午4时 15分 重启一次


甚至,我们可以通过设置两条规则,来实现:

    春夏[5-10月] 每天重启(热嘛,多重启)!

    秋冬[11-4月] 隔天重启(冷嘛,懒一点)!

30 4 * 5-10 * /sbin/reboot

30 4 */2 11-12,1-4 * /sbin/reboot

意味着:每年 5-10月 每天 4时 30分,执行一次重启
意味着:每年 11-12月及1-4月 每两天 4时 30分,执行一次重启

    嗯!光重启就可以玩一年。


再多如:


*/1 * * * * /…………
只给人话:每一分钟都执行一次某任务


*/15 * * * * /…………
只给人话:每15分钟 执行一次某任务


15 */1 * * * /…………
只给人话:每小时的15分,都执行一次某任务


再多可以参考这个wiki……页面内容太多会有人头晕https://wiki.archlinux.org/index.php/Cron_(%E7%AE%80%E4%BD%93%E4%B8%AD%E6%96%87)#Crontab_%E6%A0%BC%E5%BC%8F


——————————————————————————————————————


            4.完成设置,保存退出!


            退出后我们又看到了 root@XiaoQiang:


            其实这时候设置已经完成,路由器会忠实地执行你定制的定时任务

            我们可以输入 crontab -l ,检查下配置文件


crontab -l



看到最后一条 0 9 * * * /sbin/reboot 是存在的


当然,你可以选择建立一个几分钟后的任务,来验证一下效果

比如,现在是16点43分,我可以建立一个16:46分重启的任务

46 16 * * * /sbin/reboot

看准时间,如配置正确,16:46就给你重启了。



【千万不要】建立每分钟 或 每2分钟 一次的重启任务来验证效果!!

*/1 * * * * /sbin/reboot
*/2 * * * * /sbin/reboot

会发生什么你自己可以想得到的!!


« 上一篇 下一篇 »

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。