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
它是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
相关文章推荐
- CentOS下使用yum命令安装计划任务程序crontab
- 解析Ubuntu下crontab命令的用法
- linux crontab实例分析
- 关于crontab的使用详解
- Web服务器日志统计分析完全解决方案
- MySQL定时备份之使用Linux下的crontab定时备份实例
- linux下使用crontab实现定时PHP计划任务失败的原因分析
- 解析crontab php自动运行的方法
- linux使用crontab实现PHP执行计划定时任务
- Linux中使用Crontab定时监测维护Tomcat应用程序的方法
- 任务调度的使用crontab
- CentOS安装crontab及使用方法
- Linux 定时执行命令 crontab
- crontab基础学习
- linux 自动执行 crontab学习笔记
- 例行命令
- linux crontab command
- Linux中后台执行任务及通配符
- Crontab 命令需要注意的地方
- linux crontab 详解