您的位置:首页 > 运维架构 > Linux

Linux 任务定时命令crontab解析

2015-11-30 11:17 483 查看
      crontab命令用于设置周期性被执行的指令,该命令从标准输入中读取指令,并存放在crontab文件中,crontab文件储存的指令被守护进程crond激活,

它是linux下用来周期性的执行某个任务和等待处理事件的一个守护进程。crond在后台运行每分钟会定时检查是否有要执行的任务。

      linux下的任务调度分为:系统任务调度和用户任务调度

      系统任务调度是系统周期性所要执行的工作,例如备份系统数据、清理缓存。/etc/crontab文件就是系统任务调度的配置文件。
      用户任务调度:用户定期要执行的工作,用户可以使用crontab工具来定制自己的任务,/var/spool/cron目录下的文件就是用户任务调度的配置文件,其文件名与用户名一致。

   # cat /etc/crontab

   SHELL=/bin/bash

   PATH=/sbin:/bin:/usr/sbin:/usr/bin

   MAILTO=root

   HOME=/

 PATH命令指定了系统执行命令时的路径

 crond 执行的任务信息将通过电子邮件发送给   MAILTO=root用户,如果MAILTO为空则不发送任务执行信息给用户,

 HOME变量指定了在执行命令或者脚本时使用的主目录

 

 crontab文件和每一行任务均遵守特定的格式
 minute hour day month dayofweek command
# Example of job definition:

# .---------------- minute (0 - 59)

# |  .------------- hour (0 - 23)

# |  |  .---------- day of month (1 - 31)

# |  |  |  .------- month (1 - 12) OR jan,feb,mar,apr ...

# |  |  |  |  .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat

# |  |  |  |  |

# *  *  *  *  * user-name  command to be executed

前5列中*号代表所有可用的连续时间,例如*在指代month时表示每月执行该命令。
"-" 表示范围

"/"表示步进值 如0-59/2 或是*/2表示每两分钟执行一次

每小时执行:0 * * * *    * /1 * * *

每天执行:0 0 * * *

每周执行:0 0 * * 0

每月执行:0 0 1 * *

每年执行:0 0 1 1*

例:每月1,15,29日的0:00运行脚本

0 0 1,15,29 * * /usr/bin/backup.sh

每个周日的12:30执行命令

30 12 * * 6 /usr/bin/backup.sh

每天的18点到23点,每隔30分钟执行脚本

*/30 18-23 * * *

每天12点到22点每隔一小时执行一次

* 12-22/1 * * *

crontab 命令使用

crontab [-u user] file

crontab [-u user] [-e | -l | -r]

-
u user 用来指定某个用户的crontab服务,此参数一般由root用户运行

(1)-e  进入vi编辑模式编辑某个用户的crontab文件内容,如果不指定用户,则表示当前用户的crontab文件

也可以这样创建:

# cat >mycron

*/30 * * * * /bin/echo `date` > /dev/console

ctrl+d保存文件mycron
#crontab mycron   将该文件提交给crond进程,它每隔30分钟执行一次

# cd /var/spool/cron

cron#ll

-rw------- 1 root root 44 11月 30 16:50 root    保存在/var/spool/cron下,名字与用户名一致

注:如果要让配置文件生效,还得重启cron,/sbin/service crond restart
在/etc/rc.d/rc.local这个脚本后面加上/sbin/service/crond start  crond 服务将在系统启动的时候自动启动

service crond status 查看cron服务状态

service crond start/stop 启动/停止cron服务

(2)-l 显示某个用户的crontab文件内容

     -i 删除某个用户的crond服务。

crontab -u  root -l      root 查看自己的cron设置。

crontab -u seven -r    root 删除用户seven的cron 设置。

 注:每条任务调度执行完后,系统都会将任务输出信息通过电子邮件的形式发送给当前系统用户,时间久了,日志信息会非常多,可能会影响系统的正常运行,

可以在crontab文件中将每条任务重定向>/dev/null 2>&1  标准输出和错误都会重定向到/dev/null

  
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  crontab