linux之定时器

Posted chendeming

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了linux之定时器相关的知识,希望对你有一定的参考价值。

 

常见的操作系统如window、Linux都有提供定时任务的功能。
(1)windows是在开始-》程序-》附件-》系统工具-》任务计划选项中选择.exe程序或.bat批处理进行设定。
(2)linux中是以命令crontab命令,操作定时任务列表文本进行配置。

这两天在项目进行中使用到类似功能,于是写下这篇博文以便自己和与我有相似需求的朋友们参考。

 

亲测demo:在本人mac上每5s执行一次shell脚本test.sh

(1)打开终端,执行crontab -e

 

(2)在打开的vi编辑器里添加如下内容,并保存关闭(:wq)

#每1分钟执行一次脚本/Users/{用户名}/Desktop/test.sh

*/1 * * * * /Users/{用户名}/Desktop/test.sh

备注:/Users/{用户名}/Desktop/test.sh为一shell脚本具体存储路径,且必须先赋给test.sh文件可运行权限(chmod u+x test.sh)

 

(3)查看定时任务列表,看任务是否添加成功

crontab -l

若能输出一行

*/1 * * * * /Users/{用户名}/Desktop/test.sh即算成功

 

(4)test.sh的内容参考如下,在本次实验中,shell脚本的功能为增量向文件test.txt中添加写入test1

echo \'test001\' >> /Users/{用户名}/Desktop/test.txt

 

(5)最终效果为,每分钟test.txt中增量增加一个test001的字符串

 

备注:

  (1)如何配置

  命令格式:

    crontab [-u user] file

    crontab [-u user] [ -e | -l | -r ]

  命令参数:

    -u user:用来设定某个用户的crontab服务,例如,“-u root”表示设定root用户的crontab服务,此参数一般有root用户来运行。

    file:file是命令文件的名字,表示将file做为crontab的任务列表文件并载入crontab。

    -e:编辑某个用户的crontab文件内容。如果不指定用户,则表示编辑当前用户的crontab文件。

    -l:显示某个用户的crontab文件内容,如果不指定用户,则表示显示当前用户的crontab文件内容。

    -r:从/var/spool/cron目录中删除某个用户的crontab文件,如果不指定用户,则默认删除当前用户的crontab文件。

    -i:在删除用户的crontab文件时给确认提示。

  任务规则

    crontab -e 编辑的每一行为一个定时任务,这每一行的规则如下(可对照(3)中命令):

    minute hour day month week command

    minute: 表示分钟,可以是从0到59之间的任何整数。

    hour:表示小时,可以是从0到23之间的任何整数。

    day:表示日期,可以是从1到31之间的任何整数。

    month:表示月份,可以是从1到12之间的任何整数。

    week:表示星期几,可以是从0到7之间的任何整数,这里的0或7代表星期日。

    command:要执行的命令,可以是系统命令,也可以是自己编写的脚本文件。

  在以上各个字段(minute、hour、day、month、week)中,还可以使用以下特殊字符:

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

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

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

    正斜线(/):可以用正斜线指定时间的间隔频率,例如“0-23/2”表示每两小时执行一次。同时正斜线可以和星号一起使用,例如*/10,如果用在minute字段,表示每十分钟执行一次。

  

  (2)如上只是创建临时的定时任务,每次重启,定时任务就会被移除。若想要创建长久保存的

     可以参照http://blog.csdn.net/catoop/article/details/41821395中所提到的两种方法做

 

  (3)使用过程中参考过如下博客,若有需要的朋友也可以看下博客

    linux下使用守护进程crond配置crontab

      https://www.cnblogs.com/longjshz/p/5779215.html

    demo2

      https://www.cnblogs.com/wangzhuxing/p/6169847.html

    定时任务不生效

      http://www.timepoet.com/2011/05/crontab-do-not-work.html

    crontab详解

      https://www.cnblogs.com/peida/archive/2013/01/08/2850483.html

 

以上是关于linux之定时器的主要内容,如果未能解决你的问题,请参考以下文章

019_linux驱动之_定时器的引入

Linux设备驱动程序 之 内核定时器

手把手教你写Linux设备驱动---定时器(基于友善之臂4412开发板)

Linux(程序设计):64---高性能定时器之时间堆

Linux(程序设计):63---高性能定时器之时间轮

Linux时间子系统之六:高精度定时器(HRTIMER)的原理和实现