1. cron来源于希腊单词chronos(意为“时间”),是linux系统下一个自动执行指定任务的程序。例如,你想在每晚睡觉期间创建某些文件或文件夹的备份,就可以用cron来自动执行。

    服务的启动和停止

    cron服务是linux的内置服务,但它不会开机自动启动。可以用以下命令启动和停止服务:

    1. /sbin/service crond start
    2. /sbin/service crond stop
    3. /sbin/service crond restart
    4. /sbin/service crond reload

    以上1-4行分别为启动、停止、重启服务和重新加载配置。

    要把cron设为在开机的时候自动启动,在 /etc/rc.d/rc.local 脚本中加入 /sbin/service crond start 即可。

    查看、编辑和删除

    cron把命令行保存在crontab(cron table)文件里,这个文件通常在 /etc 目录下。每个系统用户都可以有自己的crontab(在 /var/spool/cron/ 下)。

    • file 使用file文件的内容作为某个用户的cron服务配置,内容会复制到cron服务的配置文件中
    • -u 设定某个用户的cron服务配置,一般root 用户在执行这个命令的时候需要此参数
    • -l   列出某个用户cron服务配置
    • -r  删除某个用户的cron服务配置
    • -e  编辑某个用户的cron服务配置,当指定crontab  不存在时新建,将使用vi打开配置文件进行编辑保存后退出,文件语法见后
    • crontab –v   显示上一次编辑的时间(只在某些操作系统上可用)

    如当前是root身份,要查看/编辑/删除/某用户的crontab,只需在相应的命令后加上 -u USERNAME (如 crontab -e -u USERNAME )即可。

    crontab文件的默认编辑器是vi,可以输入 export VISUAL='editor' 更改默认编辑器。

    cron服务每分钟不仅要读一次 /var/spool/cron 目录内的所有文件,还需要读一次 /etc/crontab 文件。配置这个文件也能让cron执行任务。使用crontab命令是对用户级任务的配置,而编辑 /etc/crontab 文件是对系统级任务的配置。

    语法说明

    每行表示一个指令,即表示一项计划任务;每行由空格分隔的六个部分组成,前5部分表示定时任务的执行时间,剩余部分为定时任务要执行的命令,格式如下:

    分 小时 日 月 星期 命令
    Minute  Hour  Day  Month  DayOfWeek  command

    • Minute 每个小时的第几分钟执行该任务,0-59
    • Hour 每天的第几个小时执行该任务,0-23
    • Day 每月的第几天执行该任务,1-31
    • Month 每年的第几个月执行该任务,1-12
    • DayOfWeek 每周的第几天执行该任务,0-6,0表示周日
    • Command 指定要执行的程序

    以上前五项可使用以下四个特殊符号:

    • *  表示所有数值,如第一位使用* 表示每分钟
    • /  表示每,如第一位使用 */5 表示每5分钟
    • -  表示数值范围,如第二位使用2-4表示2点到4点
    • ,  表示离散的多个数值,如第2位使用6,8 表示6点和8点
    • 指定“步长”:8-14/2 表示8,10,12,14
    • 指定列表:比如 “1,2,3,4″,”0-4,8-12″

    在每行的六项字段中,除了Command是每次都必须指定的字段以外,其它字段皆为可选字段,可视需要决定。对于不指定的字段,要用“*”来填补其位置。

    1)除去前五段,从第六段开始到换行符或者“%”为止,为要执行的命令。

    2)默认第六段将被/bin/sh执行,除非在crontab文件中指定了非/bin/sh的SHELL变量。

    3)第六段中的”%”号,除非前面加”\”号转交,否则,“%”号将结束命令行、换行的意义,并且其后的内容会被做为标准输入发送给前面的命令。

    举例如下:

    1. Every minute (* * * * *)
    2. Every 5 minutes (*/5 * * * *)
    3. Twice an hour (0,30 * * * *)
    4. Once an hour (0 * * * *)
    5. Twice a day (0 0,12 * * *)
    6. Once a day (0 0 * * *)
    7. Once a week (0 0 * * 0)
    8. 1st and 15th (0 0 1,15 * *)
    9. Once a month (0 0 1 * *)
    10. Once a year (0 0 1 1 *)
    1. 5      *      *     *     *    ls  > /var/log.txt           指定每小时的第5分钟执行一次ls命令,并将结果保存到/var/log.txt文件
    2. 30    5      *      *     *     ls    指定每天的 5:30 执行ls命令
    3. 30    7      8      *     *     ls    指定每月8号的7:30分执行ls命令
    4. 30    5      8      6     *     ls    指定每年的6月8日5:30执行ls命令
    5. 30    6      *      *     0     ls    指定每星期日的6:30执行ls命令 [注:0表示星期天,1表示星期1,以此类推,也可以用英文来表示,sun表示星期天,mon表示星期一等。]
    6. 30    3     10,20   *     *     ls    每月10号及20号的3:30执行ls命令 [注:“,”用来连接多个不连续的时段]
    7. 25    8-11   *      *     *     ls    每天8-11点的第25分钟执行ls命令 [注:“-”用来连接连续的时段]
    8. */15  *      *      *     *     ls    每15分钟执行一次ls命令 [即每个小时的第0 15 30 45 60分钟执行ls命令]
    9. 30    6     */10    *     *     ls    每个月中,每隔10天6:30执行一次ls命令[即每月的1、11、21、31日是的6:30执行一次ls命令。]

    cron配置文件

    使用crontab命令添加完成计划任务后会在/var/spool/cron目录中生成一个用户名字的文件,文件里面就是你的计划任务,cron服务会每分钟读取一次/var/spool/cron 中的文件。

    系统计划任务

    还有一种方法可以添加计划任务,编辑/etc/crontab (cron服务每分钟也读取一次/etc/crontab文件。

    用crontab配置是针对某个用户的,而编辑/etc/crontab是针对系统的任务。此文件的文件格式是:

    1. SHELL=/bin/bash
    2. PATH=/sbin:/bin:/usr/sbin:/usr/bin
    3. MAILTO=root //如果出现错误,或者有数据输出,数据作为邮件发给这个帐号
    4. HOME=/ //使用者运行的路径,这里是根目录
    5. # run-parts
    6. #每小时执行/etc/cron.hourly内的脚本
    7. 01   *   *   *   *     root run-parts /etc/cron.hourly
    8. #每天执行/etc/cron.daily内的脚本
    9. 02   4   *   *   *     root run-parts /etc/cron.daily
    10. #每星期执行/etc/cron.weekly内的脚本
    11. 22   4   *   *   0     root run-parts /etc/cron.weekly
    12. #每月去执行/etc/cron.monthly内的脚本
    13. 42   4   1   *   *     root run-parts /etc/cron.monthly

    注意”run-parts”这个参数,如果去掉这个参数的话,后面就要写要运行的某个脚本名,而不是文件夹名。例如:11 2 21 10 * rm -rf /mnt/fb

    以下是两个cron语句的例子(在 /etc/crontab 文件里)。前者用来晚间备份 /etc 目录,后者运行Analog程序处理服务器的统计信息。

    1. 12 3 * * * root tar czf /usr/local/backups/daily/etc.tar.gz /etc >> /dev/null 2>&1
    2. 52 5 * * * root /usr/local/src/analog-5.32-lh/analog >> /dev/null 2>&1

    以下是cron语句中的字段与字段说明:

    字段 说明
    1 分钟(0-59)
    2 小时(0-23)
    3 日期(1-31)
    4 月份(1-12;或英文缩写Jan、Feb等)
    5 周几(0-6,0为周日;或单词缩写Sun、Mon等)
    6 用户名(执行命令时以此用户的身份)
    7 要执行的命令(路径)
       

    现在来看第一行:

    1. 12 3 * * * root tar czf /usr/local/backups/daily/etc.tar.gz /etc >> /dev/null 2>&1

    这条语句将在每天的凌晨3点12分 (03:12)运行 tar czf /usr/local/backups/daily/etc.tar.gz /etc命令。>> /dev/null 2>&1 表示把所有标准输出发送到 /dev/null(linux的回收站),把标准错误输出(2)发送到和标准输出(1)同样的地方(即 /dev/null)。运行这行命令将不会产生任何输出。

    这条语句可以变得稍微复杂一点:

    1. 30 15 13 6 1 * root tar czf /usr/local/backups/daily/etc.tar.gz /etc >> /dev/null 2>&1

    它将在6月13日周一的15:30 运行 tar czf /usr/local/backups/daily/etc.tar.gz /etc 命令。

    以下语句可以达到同样的效果:

    1. 30 15 13 Jun Mon * root tar czf /usr/local/backups/daily/etc.tar.gz /etc >> /dev/null 2>&1

    如果你想以用户joey的身份每小时的第15分钟 运行某个程序,可以使用:

    1. 15 * * * * joey /usr/bin/somecommand >> /dev/null 2>&1

    其中的星号(*)是通配符,表示cron将忽略这个字段。

    如果你想每两小时 就运行某个程序,可以在小时字段里使用 */2 。它将会在2点,4点,6点……22点,24点运行。具体语句如下:

    1. 0 */2 * * * joey /usr/bin/somecommand >> /dev/null 2>&1

    cron语句中还可以使用逗号(,)来指定多个时间。例如你想在每小时的15分和30分 运行某个程序,可以在分钟字段使用 15,30 :

    1. 15,30 * * * * joey /usr/bin/somecommand >> /dev/null 2>&1

    如果你想在每月的第一周(即1号到7号)每天的指定时间 运行某个程序,可以在日期字段使用 1-7 :

    1. 15,30 */2 1-7 * * joey /usr/bin/somecommand >> /dev/null 2>&1

    这条语句将在每月的第1-7日每两小时的15分和30分 (02:15,02:30……22: 15,22:30等)运行/usr/bin/somecommand 命令。

    如果你想在每天的16:18 执行一个脚本集合,可以把所有要执行的脚本放到一个目录中(如 /home/username/cron),可以使用:

    1. 18 16 * * * root run-parts /home/username/cron >> /dev/null 2>&1

    如果你想保存某个程序的输出结果, 可以把 >> /dev/null 2>&1 替换为>> /home/user/somecommand.log 2>&1 。

    总结

    • 查看当前用户的cron配置,使用 crontab -l
    • 编辑当前用户的cron配置,使用 crontab -e
    • 删除当前用户的cron配置,使用 crontab -r
    • 删除计时器设置时要先询问,使用 crontab -i 交互式模式
    • 以root身份查看/编辑/删除某用户的cron配置,在命令后加上 -u USERNAME
    • 配置系统级的任务,编辑 /etc/crontab 文件

linux crontab设置的更多相关文章

  1. linux crontab设置定期执行脚本

    Linux下crontab命令的用法 任务调度的crond常驻命令crond 是linux用来定期执行程序的命令.当安装完成操作系统之后,默认便会启动此任务调度命令.crond命令每分锺会定期检查是否 ...

  2. Linux crontab 设置定时任务

    crontab crontab 用于设置系统自动执行的周期性任务 # m h dom mon dow user command 17 * * * * root cd / && run- ...

  3. 使用python crontab设置linux定时任务

    熟悉linux的朋友应该知道在linux中可以使用crontab设置定时任务.可以通过命令crontab -e编写任务.当然也可以直接写配置文件设置任务. 但是有时候希望通过脚本自动设置,比如我们应用 ...

  4. Linux CentOS设置定时重启:crontab

    上一篇介绍了 开机自启动chkconfig命令  https://www.cnblogs.com/prefectjava/p/9399470.html 本篇介绍 crontab 设置定时任务,并且把 ...

  5. Linux 下用 crontab 设置定时执行python 程序

    Linux 下用 crontab 设置定时执行python 程序 方法/步骤   1,先大概了解crontab,/etc/crontab 就是crontab 的配置文件. crontab命令详解可以查 ...

  6. 详解使用python crontab设置linux定时任务

    熟悉linux的朋友应该知道在linux中可以使用crontab设置定时任务.可以通过命令crontab -e编写任务.当然也可以直接写配置文件设置任务. 但是有时候希望通过脚本自动设置,比如我们应用 ...

  7. Linux Ubuntu系统版本通过Crontab设置定时任务的执行

    Linux Ubuntu系统版本通过Crontab设置定时任务的执行 本文由本人收集网络信息总结而来 特别鸣谢:https://linux.zone/2258 1 crontab 简单介绍以及语法使用 ...

  8. Linux crontab 命令详解

    在 Linux 中,任务可以被配置在指定的时间段.指定的日期.或系统平均载量低于指定的数量时自动运行.红帽企业 Linux 预配置了对重要系统任务的运行,以便使系统能够时时被更新.譬如,被 locat ...

  9. linux crontab 计划任务 atd和windows下的计划任务

    crontab 命令 如果发现您的系统里没有这个命令,请安装下面两个软件包. vixie-cron crontabs crontab 是用来让使用者在固定时间或固定间隔执行程序之用,换句话说,也就是类 ...

随机推荐

  1. codeforces 336C Vasily the Bear and Sequence(贪心)

    转载请注明出处: http://www.cnblogs.com/fraud/          ——by fraud Vasily the Bear and Sequence Vasily the b ...

  2. poj1511/zoj2008 Invitation Cards(最短路模板题)

    转载请注明出处: http://www.cnblogs.com/fraud/          ——by fraud Invitation Cards Time Limit: 5 Seconds    ...

  3. CSS布局部分知识总结

    一 切图 通过一个周的切图练习,我发现只有亲自动手后才能通过问题不断加深技术,要熟练掌握HTML页面编写时候时PHOTOSHOP操作. 以下一些知识点在网络布局时也是很重要的. 1.ul标签在谷歌.火 ...

  4. Eloquent ORM 学习笔记

    最近在学习Laravel,觉得ORM功能很强大,我这里只是简单探索了一点,如果有更好的笔记,还请分享. 因为重点在于Eloquent ORM,所以路由设置,控制器就不详细描述了,这里直接进入Model ...

  5. Roads in the North(POJ 2631 DFS)

    Description Building and maintaining roads among communities in the far North is an expensive busine ...

  6. 前端上将字符串用语音读出来只能在IE上运行 其他不行 代码极少

    先保存保存自己的笔记 有高手看到求指点 <script type="text/javascript"> var VoiceObj; try { VoiceObj = n ...

  7. 如何在WPF程序中使用ArcGIS Engine的控件

    原文 http://www.gisall.com/html/47/122747-4038.html WPF(Windows Presentation Foundation)是美国微软公司推出.NET ...

  8. Silverlight 结合ArcGis 在地图画点

    原文 http://www.dotblogs.com.tw/justforgood/archive/2012/05/10/72076.aspx 我们直接来看完成后的画面读者会比较有兴趣 如上,小马在地 ...

  9. html模块一些方法

    <pre name="code" class="python"> find_by_tag_name: @elements = $h->find ...

  10. Windows XP SP3中远程桌面实现多用户登陆

    Windows XP SP3配置为支持多用户远程桌面连接,注意:此多用户远程桌面连接必须是不同的用户登录,不能像Windows server 2003那样,同一个用户可以同时登录,只能登陆2个不同用户 ...