周期性任务计划
相关程序包:
cronie:主程序包,提供了crond守护进程及相关辅助工具
cronie-anacron:cronie的补充程序;用于监控cronie任务执行状况;如cronie中的任务在过去该运行的时间点未能正常运行,则anacron会随后启动一次次任务
crontabs:包含CentOS提供系统维护任务
计划任务守护进程crond运行状态查看方法
CentOS7:
systemctl status crond
CentOS6:
service crond status
编写计划任务两种方式:
系统计划任务设定:编写配置文件/etc/crontab
用户计划任务设定:执行# crontab -e 命令。在实际工作中,一般采用此方式设定计划任务
crontab命令常用选项
crontab -l:查看自己的cron任务列表
crontab -e:通过EDITOR变量中定义的编辑器打开用户自己的cron配置文件;编辑单独的任务都使用-e选项,无论是删除、修改还是新建
crontab -r:移除crontab文件,慎用!
crontab -i:同-r一同使用,以交互式模式让用户有选择的删除指定任务
crontab -u UserName:仅root可运行,指定某个用户,需要配合其他选项如-l -e使用例如:#crontab -e -u docker(管理员root用户给docker用户设定计划任务)
计划任务编写格式
时间格式
# 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
时间格式举例: 6 7 * * * #每天7点6分 6 7 8 * * #每月8号 7点6分 * 7 8 * * #每月8号7点,每分钟执行 30-35 7 * * * #每天7点30-35分,每分钟执行 5,35 * * * * #每小时的5,35分钟执行 5-45/3 * * * * #每小时的5-45分钟,每隔三分钟执行一次
时间表示法说明:
(1)特定值:每个时间位都应该使用其可用的有效取值范围内的值;
(2)*:某时间位上的*表示对应位的所有有效取值;
(3)-:连续的时间相邻点取值
(4),:离散的时间点取值 #,#,#
(5)/#:表示在指定时间范围内每隔#一次;
另一种时间格式
@reboot Run once after reboot #每次系统重启或者重新开机都执行一次
@yearly 0 0 1 1 *
@annually 0 0 1 1 *
@monthly 0 0 1 * *
@weekly 0 0 * * 0
@daily 0 0 * * *
@hourly 0 * * * *
计划任务编写举例
(1)每3分钟执行一个echo "how are you?" # crontab -e */3 * * * * /bin/echo "how are you?" (2)每周2、4、6备份/etc/目录至/backup目录中,备份的文件名以当前etc_开头并跟上当日的日期作为文件名 # crontab -e 3 2 * * 2,4,6 /bin/tar -Jcf /backup/etc_`date '+%F'` .tar.xz /etc/* (3)周天6、9、12、15、18查看一下当前系统挂载的所有文件系统,并将查看的结果追加至/tmp/mounts.txt文件中 # crontab -e 17 6,9,12,15,18 * * * /bin/mount >> /tmp/mounts.txt (4)每天每两小时取当前系统内存空间余量,将其保存至/stats/memory.txt文件中 # crontab -e 1 */2 * * * /bin/grep "^MemFree:" /proc/meminfo >> /stats/memory.txt
制作定时任务的规范:
1、为定时任务加必要的注释
2、执行shell脚本任务前加/bin/sh
3、默认输出信息会以邮件形式发送到用户,可通过重定向到/dev/null中来拒收邮件
如:1 1 * * * /bin/bash xxxx.sh &>/dev/null
4、定时任务命令或程序最好写到脚本里执行
5、在指定用户下执行相关的定时任务
6、定时任务执行的脚本要规范路径(/server/scripts)