`

linux定时任务的设置 crontab 配置指南

 
阅读更多
http://blog.csdn.net/xiyuan1999/article/details/8160998

为当前用户创建cron服务

1.  键入 crontab  -e 编辑crontab服务文件

      例如 文件内容如下:
     */2 * * * * /bin/sh /home/admin/jiaoben/buy/deleteFile.sh

     保存文件并并退出
     */2 * * * * /bin/sh /home/admin/jiaoben/buy/deleteFile.sh

    */2 * * * * 通过这段字段可以设定什么时候执行脚本
      /bin/sh /home/admin/jiaoben/buy/deleteFile.sh 这一字段可以设定你要执行的脚本,这里要注意一下bin/sh 是指运行  脚本的命令  后面一段时指脚本存放的路径


2. 查看该用户下的crontab服务是否创建成功, 用 crontab  -l 命令 


3. 启动crontab服务
      一般启动服务用  /sbin/service crond start 若是根用户的cron服务可以用 sudo service crond start, 这里还是要注意  下 不同版本linux系统启动的服务的命令也不同 ,像我的虚拟机里只需用 sudo service cron restart 即可,若是在根用下直接键入service cron start就能启动服务



4. 查看服务是否已经运行用 ps -ax | grep cron

5. crontab命令

      cron服务提供crontab命令来设定cron服务的,以下是这个命令的一些参数与说明:
      crontab -u //设定某个用户的cron服务,一般root用户在执行这个命令的时候需要此参数 
  crontab -l //列出某个用户cron服务的详细内容
  crontab -r //删除没个用户的cron服务
  crontab -e //编辑某个用户的cron服务
  比如说root查看自己的cron设置:crontab -u root -l
  再例如,root想删除fred的cron设置:crontab -u fred -r
  在编辑cron服务时,编辑的内容有一些格式和约定,输入:crontab -u root -e
  进入vi编辑模式,编辑的内容一定要符合下面的格式:*/1 * * * * ls >> /tmp/ls.txt
        任务调度的crond常驻命令
        crond 是linux用来定期执行程序的命令。当安装完成操作系统之后,默认便会启动此任务调度命令。crond命令每分锺会定期检查是否有要执行的工作,如果有要执行的工作便会自动执行该工作。



6. crontab命令选项:
     -u指定一个用户
     -l列出某个用户的任务计划
     -r删除某个用户的任务
     -e编辑某个用户的任务

7. cron文件语法:

      分     小时    日       月       星期     命令
      0-59   0-23   1-31   1-12     0-6     command     (取值范围,0表示周日一般一行对应一个任务)

     记住几个特殊符号的含义:
         “*”代表取值范围内的数字,
         “/”代表”每”,
         “-”代表从某个数字到某个数字,
         “,”分开几个离散的数字

8. 任务调度设置文件的写法
      可用crontab -e命令来编辑,编辑的是/var/spool/cron下对应用户的cron文件,也可以直接修改/etc/crontab文件
     具体格式如下:
      Minute Hour Day Month Dayofweek   command
      分钟     小时   天     月       天每星期       命令
     每个字段代表的含义如下:
     Minute             每个小时的第几分钟执行该任务
     Hour               每天的第几个小时执行该任务
     Day                 每月的第几天执行该任务
     Month             每年的第几个月执行该任务
     DayOfWeek     每周的第几天执行该任务
     Command       指定要执行的程序
     在这些字段里,除了“Command”是每次都必须指定的字段以外,其它字段皆为可选

    字段,可视需要决定。对于不指定的字段,要用“*”来填补其位置。
    举例如下:
    5       *       *           *     *     ls             指定每小时的第5分钟执行一次ls命令
    30     5       *           *     *     ls             指定每天的 5:30 执行ls命令
    30     7       8         *     *     ls             指定每月8号的7:30分执行ls命令
    30     5       8         6     *     ls             指定每年的6月8日5:30执行ls命令
    30     6       *           *     0     ls             指定每星期日的6:30执行ls命令[注:0表示星期天,1表示星期1,

    以此类推,也可以用英文来表示,sun表示星期天,mon表示星期一等。]

   30     3     10,20     *     *     ls     每月10号及20号的3:30执行ls命令[注:“,”用来连接多个不连续的时段]

    25     8-11 *           *     *     ls       每天8-11点的第25分钟执行ls命令[注:“-”用来连接连续的时段]

    */15   *       *           *     *     ls         每15分钟执行一次ls命令 [即每个小时的第0 15 30 45 60分钟执行ls命令 ]

     30   6     */10         *     *     ls       每个月中,每隔10天6:30执行一次ls命令[即每月的1、11、21、31日是的6:30执行一次ls 命令。 ]

     每天7:50以root 身份执行/etc/cron.daily目录中的所有可执行文件

     50   7       *             *     *     root     run-parts     /etc/cron.daily   [ 注:run-parts参数表示,执行后面目录中的所有可执行文件。 ]



9. 新增调度任务
     新增调度任务可用两种方法:
       1)、在命令行输入: crontab -e 然后添加相应的任务,wq存盘退出。
        2)、直接编辑/etc/crontab 文件,即vi /etc/crontab,添加相应的任务。

10. 查看调度任务
        crontab -l //列出当前的所有调度任务
        crontab -l -u jp   //列出用户jp的所有调度任务

11. 删除任务调度工作
         crontab -r   //删除所有任务调度工作

12. 任务调度执行结果的转向
       例1:每天5:30执行ls命令,并把结果输出到/jp/test文件中
            30 5 * * * ls >/jp/test 2>&1
            注:2>&1 表示执行结果及错误信息。
      编辑/etc/crontab 文件配置cron 

     cron服务每分钟不仅要读一次/var/spool/cron内的所有文件,还需要读一次 /etc/crontab,因此我们配置这个文件也能运用cron服务做一些事情。用crontab配置是针对某个用户的,而编辑/etc/crontab是针对系统的任务。此文件的文件格式是:
  SHELL=/bin/bash 
  PATH=/sbin:/bin:/usr/sbin:/usr/bin
  MAILTO=root //如果出现错误,或者有数据输出,数据作为邮件发给这个帐号
  HOME=/ //使用者运行的路径,这里是根目录 
  # run-parts 
  01   *   *   *   *     root run-parts /etc/cron.hourly         //每小时执行

        /etc/cron.hourly内的脚本
     02   4   *   *   *     root run-parts /etc/cron.daily           //每天执行/etc/cron.daily内的脚本 

       22   4   *   *   0     root run-parts /etc/cron.weekly       //每星期执行 /etc/cron.weekly内的脚本 

      42   4   1   *   *     root run-parts /etc/cron.monthly     //每月去执行/etc/cron.monthly内的脚本 
  大家注意”run-parts”这个参数了,如果去掉这个参数的话,后面就可以写要运行的某个脚本名,而不是文件夹名了

    例如:
     1) 在命令行输入: crontab -e 然后添加相应的任务,wq存盘退出。
      2)直接编辑/etc/crontab 文件,即vi /etc/crontab,添加相应的任务
          11 2 21 10 * rm -rf /mnt/fb

查看日志:
tail -f /var/log/cron

输出:
以下 crontab 命令项将于每月第一天和第十五天下午 4 点在用户的控制台窗口中显示提醒。
0 16 1,15 * * echo Timesheets Due > /dev/console



& 后台执行
当在前台运行某个作业时,终端被该作业占据;而在后台运行作业时,它不会占据终端。可以使用&命令把作业放到后台执行。
如:
30 2 * * * /data/app/scripts/hotbackup/hot_database_backup.sh &
在后台运行作业时要当心:需要用户交互的命令不要放在后台执行,因为这样你的机器就会在那里傻等。
不过,作业在后台运行一样会将结果输出到屏幕上,干扰你的工作。如果放在后台运行的作业会产生大量的输出,最好使用下面的方法把它的输出重定向到某个文件中:
如:
command >out.file 2>&1 &
在这个例子中,2>&1表示所有的标准输出和错误输出都将被重定向到一个叫做out.file 的文件中。

2>&1 含义
先看一个例子:
0 2 * * * /u01/test.sh >/dev/null 2>&1 &
这句话的意思就是在后台执行这条命令,并将错误输出2重定向到标准输出1,然后将标准输出1全部放到/dev/null 文件,也就是清空。
在这里有有几个数字的意思:
0表示键盘输入
1表示标准输出
2表示错误输出.


我们也可以这样写:
0 2 * * * /u01/test.sh  >/u01/out.file &  --这里没写,默认是1
0 2 * * * /u01/test.sh  1>/u01/out.file &
0 2 * * * /u01/test.sh  2>/u01/out.file &
0 2 * * * /u01/test.sh  2>/u01/out.file  2>&1 &
将tesh.sh 命令输出重定向到out.file, 即输出内容不打印到屏幕上,而是输出到out.file文件中。
2>&1 是将错误输出重定向到标准输出。 然后将标准输入重定向到文件out.file。
&1 表示的是文件描述1,表示标准输出,如果这里少了&就成了数字1,就表示重定向到文件1。
& :后台执行

测试:
ls 2>1 : 不会报没有2文件的错误,但会输出一个空的文件1;
ls xxx 2>1: 没有xxx这个文件的错误输出到了1中;
ls xxx 2>&1: 不会生成1这个文件了,不过错误跑到标准输出了;

ls xxx >out.txt 2>&1 == ls xxx 1>out.txt 2>&1;  因为重定向符号>默认是1,这句就把错误输出和标准输出都传到out.txt 文件中。

2>&1写在后面的原因
格式:command > file 2>&1   == command  1> file 2>&1
首先是command > file将标准输出重定向到file中, 2>&1 是标准错误拷贝了标准输出,也就是同样被重定向到file中,最终结果就是标准输出和错误都被重定向到file中。
如果改成: command 2>&1 >file

2>&1 标准错误拷贝了标准输出的行为,但此时标准输出还是在终端。>file 后输出才被重定向到file,但标准错误仍然保持在终端。



CRON语法:
除了数字还有几个个特殊的符号就是"*"、"/"和"-"、",",*代表所有的取值范围内的数字,"/"代表每的意思,"*/5"表示每5个单位,"-"代表从某个数字到某个数字,","分开几个离散的数字。几个例子:
  
  每天早上6点   
  0 6 * * * echo "Good morning." >> /tmp/test.txt //注意单纯echo,从屏幕上看不到任何输出,因为cron把任何输出都email到root的信箱了。
  
  每两个小时   
  0 */2 * * * echo "Have a break now." >> /tmp/test.txt
  
  晚上11点到早上8点之间每两个小时,早上八点   
  0 23-7/2,8 * * * echo "Have a good dream:)" >> /tmp/test.txt
  
  每个月的4号和每个礼拜的礼拜一到礼拜三的早上11点   
  0 11 4 * 1-3 command line
  
  1月1日早上4点   
  0 4 1 1 * command line

  30 21 * * * 表示每晚的21:30

  45 4 1,10,22 * * 表示每月1、10、22日的4 : 45

  10 1 * * 6,0 表示每周六、周日的1 : 10

  0,30 18-23 * * * 表示在每天18 : 00至23 : 00之间每隔30分钟

  0 23 * * 6 表示每星期六的11 : 00 pm

  * */1 * * * 每一小时

  * 23-7/1 * * * 晚上11点到早上7点之间,每隔一小时

  * 8,13 * * 1-5 从周一到周五的上午8点和下午1点

  0 11 4 * mon-wed 每月的4号与每周一到周三的11点

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

相关推荐

    Linux定时任务的设置及 crontab 配置指南

    本指南将详细介绍如何设置Linux定时任务以及如何配置`crontab`。 首先,要为当前用户创建cron服务,我们需要打开终端并输入`crontab -e`命令。这会打开一个文本编辑器,如vi或nano,让我们编辑crontab服务文件。...

    Linux Crontab 定时任务全攻略:从基础语法到高效运维实战

    本文全面讲解了 Linux 系统中 crontab 的使用方法,帮助用户快速掌握定时任务的配置和管理。首先,介绍了 crontab 的基本概念及其依赖的 cron 服务,并详细说明了时间调度字段的含义及其灵活用法,如星号、逗号、...

    Linux Cron 作业:定时任务管理的简单指南

    在 Linux 系统中使用 Cron 实现定时任务管理的基本方法。Cron 是一种强大的工具,允许用户设置定时执行的命令或脚本。通过使用 crontab -l 查看当前用户的 Cron 作业,crontab -e 编辑作业,用户可以方便地安排任务...

    利用rsync+crontab实现Linux的定时增量备份

    5. **自动化备份**:结合crontab工具,可以设置定时任务,让rsync定期执行备份操作,实现自动化增量备份。 【总结】 rsync是一款强大的文件同步和备份工具,它的灵活性和效率使其成为Linux环境中不可或缺的一部分...

    Go开发的crontab 代替linux原生crontab.zip

    在嵌入式Linux开发中,经常需要进行定时任务的管理,传统的解决方案是利用Linux的原生`crontab`工具。然而,在某些情况下,如在资源有限的嵌入式设备上,可能需要更轻量级的替代方案。"Go开发的crontab 代替linux...

    suse linux 定时备份脚本

    4. 配置定时任务:使用 crontab 命令配置定时任务,以便每周六凌晨 2 点自动备份服务器上的数据。 知识点总结 * 如何在 SUSE Linux 系统上生成密钥对 * 如何发布密钥到目标服务器上 * 如何将备份脚本传输到服务器...

    Solaris:crontab的用法(定时任务).docx

    总的来说,虽然Solaris的`crontab`命令与Linux等系统有所不同,但理解了这些差异后,你就可以有效地在Solaris上设置和管理定时任务了。在使用过程中,查阅`man crontab`获取更多帮助总是明智的选择。

    centos7 crontab 安装包

    在Linux系统中,`cron`是一个用于自动化任务调度的强大工具,而`crontab`是管理这些定时任务的命令。在CentOS7环境中,为了使用`crontab`服务,首先需要安装相关的软件包。本文将详细阐述如何在CentOS7上安装`...

    linux操作系统管理指南

    5. 定时任务:crontab是Linux下的定时任务管理工具,能设置周期性的任务执行。 6. 系统维护:包括磁盘管理(分区、格式化、挂载)、系统升级、性能监控(如vmstat、iostat、mpstat)等。 三、shell脚本编程 Linux...

    crontab中英文手册。很清晰完整。

    标题提到的是"crontab中英文手册",这指的是Linux操作系统中的定时任务调度工具crontab的手册,包含了中文和英文版本。crontab是Linux系统管理员用来设置周期性被执行的任务的工具,它可以按照设定的时间间隔执行...

    Linux Ubuntu快速上手指南

    同时讲述了APT软件包管理器的应用场景,如何利用crontab进行定时任务设置,并展示了网络统计信息的相关命令操作和处理网络配置的方法。 适合人群:Linux初学者及运维人员。 使用场景及目标:适用于熟悉和掌握Linux...

    数据库定时脚本.zip

    “数据库定时脚本使用方法.docx”文档则提供了详细的操作指南,它会解释如何设置和调整这些脚本,以及如何配置Windows的任务计划程序和Linux的crontab来执行这些脚本。文档可能会涵盖以下内容: 1. 如何编辑和理解...

    cron和crontab概念详解

    因此,确保crontab文件中正确设置了用户的邮箱地址是非常重要的。 通过以上介绍,我们可以了解到cron和crontab在Linux系统中的重要性和基本使用方法。合理利用它们能够极大地提高系统的自动化水平和管理效率。

    Docker 使用技巧全解:提升容器化开发与运维效率的实用指南

    本文全面讲解了 Linux 系统中 crontab 的使用方法,帮助用户快速掌握定时任务的配置和管理。首先,介绍了 crontab 的基本概念及其依赖的 cron 服务,并详细说明了时间调度字段的含义及其灵活用法,如星号、逗号、...

    linux\linux和unix编程指南适合初学者使用part00001.pdf

    - **3.1.4 创建一个新的crontab文件**:指导如何创建一个新的定时任务配置文件。 - **3.1.5 列出crontab文件**:展示如何查看现有的定时任务列表。 - **3.1.6 编辑crontab文件**:说明编辑crontab文件的方法。 -...

    Linux环境下的项目开发指南.pdf

    使用 `crontab` 设置定时任务来定期重启应用,确保其长期稳定运行。 3. **配置监控工具**(如Nagios或Prometheus)来监控应用的性能和健康状态。 使用这类工具可以帮助及时发现并解决问题。 #### 八、总结 上传...

    Linux初级应用指南 chm格式

    - **定时任务**:`cron`是Linux的定时任务系统,通过编辑`crontab`文件设置定时任务。 ### 7. 网络与远程连接 - **网络配置**:`ifconfig`查看网络接口信息,`ping`测试网络连通性,`nslookup`或`dig`查询DNS。 -...

    Linux下基于python的定时提醒工具

    7. **系统集成**:为了使提醒工具能在开机时自动运行,可以将其设置为Linux系统的启动项,利用`systemd`的服务配置或`crontab`定时任务。 在实际使用中,用户需要根据项目提供的文档或安装指南进行安装和配置。安装...

    LINUX与UNIX SHELL编程指南.rar

    最后,crontab是Linux和Unix系统中的定时任务调度器,用于设置周期性的任务。通过编辑crontab文件,用户可以设置每天、每周或每月何时运行脚本或命令。这非常适合执行定期维护任务,如清理日志、备份数据等。 总结...

Global site tag (gtag.js) - Google Analytics