crond和crontab的调研

来源:互联网 发布:淘宝白底图片制作教程 编辑:程序博客网 时间:2024/05/18 02:35

1、crond是什么、干什么

      crond 的概念和crontab是不可分割的。crond是crontab的守护进程。crontab储存的指令被守护进程激活, crond常常在后台运行,每一分钟检查是否有预定的作业需要执行。这类作业一般称为cron jobs。

2、crontab是什么、干什么

      crontab是一个命令,crontab命令常见于Unix和类Unix的操作系统之中,用于设置周期性被执行的指令。该命令从标准输入设备读取指令,并将其存放于“crontab”文件中,以供之后读取和执行。该词来源于希腊语 chronos,原意是时间。

3、cron是什么

   计划任务,是任务在约定的时间执行已经计划好的工作,这是表面的意思。在Linux中,我们经常用到cron服务器来完成这项工作。cron服务器可以根据配置文件约定的时间来执行特定的作务。


4、crond和crontab怎么使用

      如果需要实现任务调度功能,可以编写cron脚本来实现以某一频率执行任务

      Linux缺省会启动crond进程,crond进程不需要用户启动、关闭。

     crond进程负责读取调度任务并执行,用户需要将相应的调度脚本写入cron的调度配置文件中

     crontab -u //设定某个用户的cron服务 

     crontab -l //列出某个用户cron服务的详细内容 

     crontab -r //删除某个用户的cron服务 

     crontab -e //编辑某个用户的cron服务

5、编写crond和crontab测试实例

   

cron的启动与关闭

  由于CronLinux的内置服务,可以用以下的方法启动.关闭这个服务:

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

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

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

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


   *  *  *  *  *  command
  分 时 日 月 周   命令

   crontab文件的格式:M H D m d cmd.

   M: 分钟(0-59)。

   H:小时(0-23)。

   D:天(1-31)。

   m: 月(1-12)。

   d: 一星期内的天(0~6,0为星期天)。

        这个格式的前一部分是对时间的设定,后面一部分是要执行的命令,如果要执行的命令太多,可以把这些命令写到一个脚本里面,然后在这里直接调用这个脚本就可以了,调用的时候记得写出命令的完整路径。时间的设定我们有一定的约定,前面五个*号代表五个数字,

除了数字还有几个个特殊的符号就是"*"、"/"和"-"、",",*代表所有的取值范围内的数字,"/"代表每的意思,"*/5"表示每5个单位,"-"代表从某个数字到某个数字,","分开几个离散的数字。

6、测试用例

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内的脚本

在很多系统中,用户目录下都有cron.daily之类的文件夹,里面的可执行文件每天都会被执行一次。也就是说如果想添加一个每天都被执行的任务的话,在目录下放置该任务的脚本即可。使用很方便,原理是什么呢,就是run-parts命令

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

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

30 15 13 6 2 * 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 命令。

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

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

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

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

0 */2 * * * joey /usr/bin/somecommand >> /dev/null 2

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

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

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

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),可以使用:

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

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











    

 





 

    





原创粉丝点击