当前位置:   article > 正文

openwrt定时任务 2021-10-08_openwrt什么版本固件,ssid定时教程

openwrt什么版本固件,ssid定时教程

1、初识

Ubuntu系统下,/etc/crontab文件中记录着定时任务的分配。 

  1. # /etc/crontab: system-wide crontab
  2. # Unlike any other crontab you don't have to run the `crontab'
  3. # command to install the new version when you edit this file
  4. # and files in /etc/cron.d. These files also have username fields,
  5. # that none of the other crontabs do.
  6. SHELL=/bin/sh
  7. PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
  8. # Example of job definition:
  9. # .---------------- minute (0 - 59)
  10. # | .------------- hour (0 - 23)
  11. # | | .---------- day of month (1 - 31)
  12. # | | | .------- month (1 - 12) OR jan,feb,mar,apr ...
  13. # | | | | .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat
  14. # | | | | |
  15. # * * * * * user-name command to be executed
  16. 17 * * * * root    cd / && run-parts --report /etc/cron.hourly
  17. //代表:每小时执行一次 /etc/cron.hourly 文件
  18. 25 6 * * * root test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.daily )
  19. //代表:每天执行一次 /etc/cron.daily 文件
  20. 47 6 * * 7 root test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.weekly )
  21. //代表:每周执行一次 /etc/cron.weekly 文件
  22. 52 6 1 * * root test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.monthly )
  23. //代表:每月执行一次 /etc/cron.monthly 文件
  24. #

星号(*):代表所有可能的值,如month字段为星号,则表示在满足其它字段的制约条件后每月都执行该命令操作。

逗号(,):可以用逗号隔开的值指定一个列表范围,例如,“1,2,5,7,8,9”

中杠(-):可以用整数之间的中杠表示一个整数范围,例如“2-6”表示“2,3,4,5,6”

正斜线(/):可以用正斜线指定时间的间隔频率,例如“0-23/2”表示每两小时执行一次。

openwrt系统下的定时任务需要自己手动添加。

添加内容以及添加内容的含义如下:

1.认识脚本

位置:绝对路径下的位置——如果,使用相对路径的话,可能会造成后续执行任务时的混乱。

  1. * */1 * * * /myapp/5.sh //后半部分代表了需要执行的脚本的绝对位置
  2. * */1 * * * /myapp/2.sh //前半部分代表了定时任务执行的频率
  3. //代表每分钟执行一次根目录下的1.sh的文件
  4. * * * * * /1.sh
  5. */1 * * * * /1.sh
  6. */6 * * * * /1.sh   //代表每六分钟执行一次定时任务
  7. * * */1 * * /2.sh       // 代表每月一号执行一次定时任务
  8. 12 */3 * * * /3.sh       //代表每过3个小时候的第12分钟执行一次定时任务
  9. 25 6 * * 1-5 /4.sh       //工作日期间(周一至周五),每天早上6点25分执行一次定时任务
  10. 0 0 412,26 * * /4.sh   //每月的第41226日,晚上12点执行一次

2.日志——定时任务查看

openwrt中,使用logread进行查看

logread -e cron

读取cron软件执行的记录,不是所有信息都会被记录到日志里的,在/etc/config/system修改 cronloglevel的值修改,信息等级。默认为5,0将打印所有调试消息,8将记录命令执行,9或更高版本将仅记录错误消息。

3.定时重启

用来对付一些系统运行时出现的难题(比如内存泄露、性能下降、……)的法宝就是每晚定期重启。 有可能会出现反复重启问题: 一种解决cron定时重启任务的怪圈的办法是在重启前,推迟一会儿重启,同时主动用touch命令去修改/etc下的任意文件。

  1. # 每天上午4:30执行重启
  2. # 注意: 为了防止循环重启的怪圈,需要推迟70秒钟执行重启
  3. # 在/etc目录下touch修改一个文件的时间属性,并且设置
  4. # 为上午4:31然后再执行cron的重启任务.
  5. 30 4 * * * sleep 70 && touch /etc/banner && reboot

注意:如果出现脚本或者命令未执行,情况可能是环境变量问题。

crontab文件中定义多个调度任务是,需要特别注意的一个问题是环境变量的设置,因为我们手动执行某个脚本时,是在当前shell环境下进行的,程序能够找到环境变量,而系统自动执行任务调度的时候,除了默认的环境外,是不会加载任何其他环境变量的。因此就需要在crontab文件中执行任务运行所需的所有环境变量。

不要假定cron知道所需要的特殊环境,它其实并不知道,所以用户需要在shell脚本中提供所有必要的路径和环境变量,除了一些自动设置的全局变量。以下三点需要注意:

1、脚本中涉及文件路径时写绝对路径;

2、脚本执行要用到环境变量时,通过source命令显式引入,例如:

  1. #!/bin/sh
  2. source /etc/profile

3、当手动执行脚本没问题,但是crontab不执行的时候,可以尝试在crontab中直接引入环境变量解决问题,例如:

* * * * * . /etc/profile; /xx/xx/test.sh

2.操作执行

1.文件修改

操作文件文件修改内容文件修改作用
/etc/crontabs/root* */1 * * * /myapp/5.sh在文件夹下新建文件,用于定时任务的设置
/myapp/5.shecho 'hello world.' >> 2.txt写入需要执行的定时任务,示例文件中的意思是,输出“hello world.”,并且重定向到根目录下的2.txt文件中
shell脚本/etc/init.d/crond status启动定时任务
shell脚本/etc/init.d/crond enable使能定时任务
shell脚本/etc/init.d/crond restart重启定时任务

2.定时任务查看

tail -f 2.txt

动态查看文件内容,定时任务为每分钟写入2.txt中一句hello world.

3.定时任务执行

如果遇到不能执行的定时任务,可以尝试修改环境变量或者使用

  1. /etc/init.d/crond enable
  2. /etc/init.d/crond restart

重启定时任务。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/IT小白/article/detail/170651
推荐阅读
相关标签
  

闽ICP备14008679号