LINUX中定时任务设置使用

LINUX中定时任务设置使用

crond服务定时设置

  • crond服务的参数的口诀“分、时、日、月、星期 命令”,这正是crond服务设置任务的参数格式,我们需要注意的是,如果有些字段没有设置,则需要使用星号(*)占位。

  • crond设置任务的参数字段说明

注意事项

1、时间段的表示

  • 用逗号(,)来分别表示多个时间段,例如“8,9,12”表示8月、9月和12月。

  • 用减号(-)来表示一段连续的时间周期,例如字段“日”的取值为“12-15”,则表示每月的12~15日。

  • 用除号(/)表示执行任务的间隔时间,例如“*/5”表示每隔5分钟执行一次任务。

2、命令必须用绝对路径

在crond服务的计划任务参数中,所有命令一定要用绝对路径的方式来写,如果不知道绝对路径,请用whereis命令进行查询。

3、特殊情况

计划任务中的“分”字段必须有数值,绝对不能为空或是*号,而“日”和“星期”字段不能同时使用,否则就会发生冲突。

crontab定时任务

crontab命令是cron table的简写,它是cron的配置文件,也可以叫它作业列表,我们可以在以下文件夹内找到相关配置文件。

  • /usr/bin/crontab 目录为crontab程序默认地址

  • /var/spool/cron/ 目录下存放的是每个用户包括root的crontab任务,每个任务以创建者的名字命名
  • /etc/crontab 这个文件负责调度各种管理和维护任务。
  • /etc/cron.d/ 这个目录用来存放任何要执行的crontab文件或脚本。
  • 我们还可以把脚本放在/etc/cron.hourly、/etc/cron.daily、/etc/cron.weekly、/etc/cron.monthly目录中,让它每小时/天/星期、月执行一次。

crontab的使用

我们常用的命令如下:

crontab [-u username]    //省略用户表表示操作当前用户的crontab
    -e      (编辑工作表)
    -l      (列出工作表里的命令)
    -r      (删除工作表)
  • root查看自己的cron设置:crontab -u root -l

  • root想删除fred的cron设置:crontab -u fred -r

  • 在编辑cron服务时,编辑的内容有一些格式和约定

    1. 输入:crontab -u root -e 进入vi编辑模式

    2. 编辑的内容一定要符合下面的格式

      */1 * * * * ls >> /tmp/ls.txt 

crontab配置说明

  • cron的系统级配置文件位于/etc/crontab。

    cron服务每分钟不仅要读一次/var/spool/cron内的所有文件,还需要读一次/etc/crontab配置文件,因此我们配置这个文件也能运用 cron服务做一些事情。用crontab -e进行的配置是针对某个用户的,而编辑/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分钟执行一次myCommand
* * * * * myCommand
  • 在上午8点到11点的第3和第15分钟执行
3,15 8-11 * * * myCommand
  • 每隔两天的上午8点到11点的第3和第15分钟执行
3,15 8-11 */2  *  * myCommand
  • 每周一上午8点到11点的第3和第15分钟执行
3,15 8-11 * * 1 myCommand
  • 每周六、周日的1 : 10重启smb
10 1 * * 6,0 /etc/init.d/smb restart
  • 每一小时重启smb
* */1 * * * /etc/init.d/smb restart
  • 晚上11点到早上7点之间,每隔一小时重启smb
* 23-7/1 * * * /etc/init.d/smb restart