探索Linux之—CRONTAB计划任务

探索Linux之—CRONTAB计划任务

 

作者:吴伟龙Prudence Woo QQ:286507175

Mail:happy-wuweilong@hotmail.com

 

  cron是一个linux下的定时执行工具,可以在无需人工干预的情况下运行作业。由于Crond 是Linux系统内置服务,默认情况下会随系统自动启动,当然也可以通过如下方式管理和维护contab计划任务服务。

  /sbin/service crond start //启动服务

  /sbin/service crond stop //关闭服务

  /sbin/service crond restart //重启服务

  /sbin/service crond reload //重新载入配置

  

下面的篇章我们就crond服务来我们来谈谈如何有效使得使用crontab服务管理计划任务:

 1、直接用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常驻命令

2、linux任务调度的工作主要分为以下两类:

     *系统执行的工作:系统周期性所要执行的工作,如备份系统数据、清理缓存

     *个人执行的工作:某个用户定期要做的工作,例如每隔10分钟检查邮件服务器是否有新信,这些工作可由每个用户自行设置。

3、cron文件语法:

           分    小时  
日      月      
星期    命令

         0-59   0-23  1-31   1-12     0-6    command   

 

注意:取值范围,0表示周日一般一行对应一个任务

4、记住几个特殊符号的含义:

       "*"  代表取值范围内的数字,

     "/"   
代表"每",

     "-"   
代表从某个数字到某个数字,

     ","   
分开几个离散的数字

 

5、任务调度设置文件的写法

       可用crontab -e命令来编辑,编辑的是/var/spool/cron下对应用户的cron文件,也可以直接修改/etc/crontab文件

具体格式如下:

       Minute Hour DayMonth 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参数表示,执行后面目录中的所有可执行文件。 ]

7、新增调度任务

新增调度任务可用两种方法:

     1、在命令行输入: crontab -e
然后添加相应的任务,wq存盘退出。

    2、直接编辑/etc/crontab
文件,即vi /etc/crontab,添加相应的任务。

8、查看调度任务

         crontab -l //列出当前的所有调度任务

         crontab -l-u jp   //列出用户jp的所有调度任务

 

9、删除任务调度工作

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

 

10、任务调度执行结果的转向

     例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

时间: 2025-01-23 12:11:13

探索Linux之—CRONTAB计划任务的相关文章

linux中crontab 计划任务

1.作用 使用crontab命令可以修改crontab配置文件,然后该配置由cron公用程序在适当的时 间执行,该命令使用权限是所有用户. 2.格式  代码如下 复制代码 crontab [ -u user ] 文件 crontab [ -u user ] { -l | -r | -e } 3.主要参数 -e:执行文字编辑器来设定时程表,内定的文字编辑器是vi. -r:删除目前的时程表. -l:列出目前的时程表. crontab文件的格式为"M H D m d cmd".其中,M代表分

linux中crontab计划任务自动清空解决办法

背景描述: 某次,同事告知有台服务器上的crontab里面的任务全部都没有了,要我帮忙查一下,幸好crontab内容有备份.于是就先恢复了crontab的任务. 再具体查一下是由人为操作导致的还是其他情况 问题排查: 检查一下所有的history记录,发现没有crontab -r之类的操作(已知的是只有crontab -r可以直接清空定时任务),当然执行crontab -e编辑也可以清空,但这种情况还是排除啦 但是发现有crontab之类的操作,大家都知道执行crontab不加任何参数,命令行会

Linux中crontab任务计划不执行的问题分析

crond是Linux下用来周期性的执行某种任务或等待处理某些事件的一个守护进程,与windows下的计划任务类似,当安装完成操作系统后,默认会安装此服务工具,并且会自动启动crond进程,crond进程每分钟会定期检查是否有要执行的任务,如果有要执行的任务,则自动执行该任务. 使用权限: root用户和crontab文件的所有者 语法: crontab [-e [UserName]|-l [UserName]|-r [UserName]|-v [UserName]|File ] 说明: cro

Linux用crontab例行工作安排

  Linux中用crontab例行工作安排 1.什么是crontab? 周期性的处理待办事项的守护进程,类死任务计划. 2.crontab命令解析. 示例: 0 0 * * 1-5 cd /home/hiperry; ./shutDwon.sh > ./logs/shutDwon.log 2>&1 --每天晚上十二点执行自定义的关机脚本并将日志信息写入到指定日志文件. 命令解析: # .---------------- 分钟 (0 - 59) # | .------------- 小

Linux定时任务Crontab详解(推荐)_Linux

今天做了个数据库的备份脚本,顺便系统得学习一下Linux下定时执行脚本的设置.Linux下的定时执行主要是使用crontab文件中加入定制计划来执行,设置比Windows稍微复杂一些(因为没有图形界面嘛),但是也不是非常复杂,基本上用过一遍就能记住了,关键是要记住/var/spool/cron这个目录.下面看一下具体的用法: 首先查看一下/etc/crontab文件: $ cat /etc/crontab SHELL=/bin/bash PATH=/sbin:/bin:/usr/sbin:/us

Linux 定时任务——crontab 的使用

cron 是一个可以用来根据时间.日期.月份.星期的组合来调度对重复任务的执行的守护进程. 名称 : crontab  使用权限 : 所有使用者  使用方式 :  crontab [ -u user ] file  crontab [ -u user ] { -l | -r | -e }  说明 :  crontab 是用来让使用者在固定时间或固定间隔执行程序之用,换句话说,也就是类似使用者的时程表.-u user 是指设定指定 user 的时程表,这个前提是你必须要有其权限(比如说是 root

linux服务器crontab无法自动运行php文件问题

问题描述 linux服务器crontab无法自动运行php文件问题 1.crontab -l 2.geturl.php文件内容 3.geturl.php文件权限截图 4.如果php文件内容是 echo "123";的话可以正常运行. 请各位大神帮忙一下,应该是什么问题,多谢~ 解决方案 加一些echo在php中等,看具体是不是哪一步出错了 解决方案二: cli模式不支持header跳转,所以我用file_get_contents函数实现了这个功能,问题解决了,多谢了~ 解决方案三: 你

linux mutt crontab 定时发邮件的问题

问题描述 linux mutt crontab 定时发邮件的问题 脚本中有发送邮件的功能,定时执行脚本,邮件不会发送,手动执行脚本,邮件正常发送(我的权限比较低) echo $content | /usr/bin/mutt -s "nginx access_log 报表" $toMail >>error; */30 * * * * /home/users/jiangfeng01/dayreport/run.sh 1 >>out 解决方案 自己解决了,用mail命

linux使用crontab实现PHP执行计划定时任务_php技巧

首先说说cron,它是一个linux下的定时执行工具.根用户以外的用户可以使用 crontab 工具来配置 cron 任务.所有用户定义的 crontab 都被保存在/var/spool/cron 目录中,并使用创建它们的用户身份来执行.要以某用户身份创建一个 crontab 项目,登录为该用户,然后键入 crontab -e 命令来编辑该用户的 crontab.该文件使用的格式和 /etc/crontab 相同.当对 crontab 所做的改变被保存后,该 crontab 文件就会根据该用户名