什么是计划任务。
在设定的一个时间自动执行任务,定点执行。
为什么使用定时任务
主要用于周期性的工作,节省人力。
主要分为一下了两种情况
1.系统级别的定时任务: 临时文件清理、系统信息采集、日志文件切割
2.用户级别的定时任务: 定时向互联网同步时间、定时备份系统配置文件、定时备份数据库的数据
计划任务时间管理
Crontab的配置文件结构。
例题:
00 02 * * * ls 每天凌晨两点整执行
00 02 1 * * ls 每月的1号凌晨两点整执行
00 02 14 2 * ls 每年的2月14日凌晨两点整执行
00 02 * * 7 ls 每个星期天的凌晨两点整执行
00 02 * 6 5 ls 每个月的星期五凌晨两点整执行
00 02 14 * 7 ls 每个月的14号凌晨两点整执行、或者每个月的星期天凌晨两点整执行
00 02 14 2 7 ls 每年的2月14凌晨两点整执行,或者每年二月的周天凌晨两点整执行
*/10 02 * * * ls 每天凌晨两点整每间隔十分钟执行一次
00 00 14 2 * ls 每年的3月14日凌晨整执行
*/5 * * * * ls 每间隔五分钟执行一次
00 02 * 1,5,8 * ls 每年1、5、8月的凌晨两点整执行
00 02 1-8 * * ls 每月1到8号的凌晨两点整开始执行
0 21 * * * ls 每天晚上9点整执行
45 4 1,10,22 * * ls 每月1、10、22号的凌晨4点45分执行
45 4 1-10 * * ls 每个月的1-10号凌晨4点45分执行
3.使用crontab编写cron定时任务*
参数 含义
-e 编辑定时任务
-l 查看定时任务
-r 删除定时任务
-u 指定其他用户
计划任务编写实践
- root用户同步时间
第一种方式
[root@ZhaoJianHao-1 ~]# ntpdate time.windows.com &>/dev/null
第二种通过阿里云方式
[root@ZhaoJianHao-1 ~]# ntpdate ntp1.aliyun.com
2.每天晚上12点备份/etc/rc.local /etc/sysconfig/ /var/spool/cron /etc/fstab 这些文件到/backup目录
vim dierti.sh #vim新建脚本,把命令写到脚本中。
#1.创建目录文件
mkdir /backup
#2.编写命令
cp -r /etc/rc.local /etc/sysconfig/ /var/spool/cron /etc/fstab /babkup
[root@ZhaoJianHao-1 ~]# crontab -l #编写计划任务配置,添加任务。
#1.每天晚上12点备份/etc/rc.local /etc/sysconfig/ /var/spool/cron /etc/fstab 这些文件到/backup目录
00 12 * * * /bin/bash /root/diyiti.sh &>/dev/null #执行时指定创建的脚本,不保留执行结果
3.每两个小时打包备份 /etc/rc.local /etc/hosts /etc/fstab /etc/sysconfig 备份到/backup目录
[root@ZhaoJianHao-1 ~]# vim diwuti.sh
[root@ZhaoJianHao-1 ~]# cat diliuti.sh
#编写任务
tar xzf /backup/dabaobeifen.tar.gz /etc/rc.local /etc/hosts /etc/fstab /etc/sysconfig
crontab -e
* */2 * * * /bin/bash /root/diliuti.sh &>/dev/null
4.每5分钟进行一次时间同步
vim diqiti.sh
ntp1.aliyun.com
ncrontab -e
*/5 * * * * /bin.bash /root/diqiti.sh &>/dev/null
crond如何拒绝某个用户使用
1.使用root将需要拒绝的用户加入/etc/cron.deny
[root@zhaojianhao ~]# echo "xuliangwei" >> /etc/cron.deny
2.登陆该普通用户,测试是否能编写定时任务
[oldboy@zhaojianhao ~]$ crontab -e
You (zhaojianhao) are not allowed to use this program (crontab)
See crontab(1) for more information
计划任务如何调试
1.crond调试
- 调整任务每分钟执行的频率, 以便做后续的调试。
- 如果使用cron运行脚本,请将脚本执行的结果写入指定日志文件, 观察日志内容是否正常。
- 命令使用绝对路径, 防止无法找到命令导致定时任务执行产生故障。
- 通过查看/var/log/cron日志,以便检查我们执行的结果,方便进行调试。
2.crond编写思路
1.手动执行命令,然后保留执行成功的结果。
2.编写脚本
脚本需要统一路径/scripts
脚本内容复制执行成功的命令(减少每个环节出错几率)
脚本内容尽可能的优化, 使用一些变量或使用简单的判断语句
脚本执行的输出信息可以重定向至其他位置保留或写入/dev/null
3.执行脚本
使用bash命令执行, 防止脚本没有增加执行权限(/usr/bin/bash)
执行脚本成功后,复制该执行的命令,以便写入cron
4.编写计划任务
加上必要的注释信息, 人、时间、任务
设定计划任务执行的周期
粘贴执行脚本的命令(不要手敲)
5.调试计划任务
增加任务频率测试
检查环境变量问题
检查crond服务日志