zoukankan      html  css  js  c++  java
  • 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

  • 相关阅读:
    PHP_Code_challenge(代码审计)
    超全局变量$GLOBALS
    upload-labs(文件上传)
    CTF bugku 论剑场 web20
    多次Printf()是否使用用同一栈帧的参数?
    (转载于度盘)小迪安全渗透-学习讲义
    SQL数据库操作练习(2)
    .htaccess绕过
    PHP序列化思考(9.14已修改)
    SQL数据库操作练习(1)
  • 原文地址:https://www.cnblogs.com/chendeming/p/8150025.html
Copyright © 2011-2022 走看看