LINUX计划任务
crond就是计划任务,类似于我们平时生活中的闹钟。定点执行。
作用
crond主要是做一些周期性的任务。 场景1: 定期备份重要的文件或数据。
场景2: 促销活动,准点开启抢购接口,准点关闭抢
购接口。
场景3: 每分钟检测超时订单,超过30分钟未支付的订单进行取消。
场景4: 每隔5分钟上各个电商平台刷取订单信息写入自己公司的系统中。
计划任务两大类
1.系统级别的定时任务: 临时文件清理、系统信息采集、日志文件切割
2用户级别的定时任务: 定时备份数据,同步时间, 订单超时自动取消,按时间段统计信息等等
配置文件解释
[root@yum_server10 ~]# vim /etc/crontab
SHELL=/bin/bash #命令行解释器
PATH=/sbin:/bin:/usr/sbin:/usr/bin #环境变量
MAILTO=root #邮件发给谁
# For details see man 4 crontabs
# 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--7点
,表示分隔时段,如6,0,4表示周六,日,四
/1表示每隔n单位时间,如*/10 每10分钟
******分 时 日 月 周******
计划任务编写范例
00 02 * * * ls 每天的凌晨2点整执行
00 02 1* * ls 每月的1号凌晨两点执行
00 02 14 2 * ls 每年的2月14日凌晨2点执行
00 02 * * 7 ls 每周天的凌晨2点整执行
00 02 * 6 5 ls 每年的6月周五凌晨2点执行
00 02 14 * 7 ls 每月14日或每周日的凌晨2点都执行
00 02 14 2 7 ls 每年的2月14日或每年2月的周天的凌晨2点执行
*/10 02 * * * sl ls 每天凌晨2点,每隔10分钟执行一次 2:00开始 2:50结束
* * * * * ls 每分钟都执行
00 02 14 2 * ls 每年2月14日的凌晨执行命令
*/5 * * * * ls 每隔5分钟执行一次
00 02 * 1,5,8 * ls 每年的1月5月8月凌晨2点执
00 02 1-8 * * ls 每月1号到8号凌晨2点执行
00 21 * * * ls每天晚上21:00执行
45 04 * 1,10 * ls 每月1、10、22日的4:45执
45 04 1-10 * * * ls 每月1到10日的4:45执行
3,15 8-11 */2 * * ls 每隔两天的上午8点到11点的第3和15分钟执行
00 23-7 /1 * * * ls 晚上11点到早上7点之间,每小时都执行
15 21 * * 1-5 ls 周一到周五每天晚上21:15执行
使用crond 实现计划任务
-e 编辑定时任务
-l 定时查看任务
-r 删除定时任务
-u 指定其他用户
定时同步时间
使用root用户每5分钟执行一下时间同步
[root@yum_server10 ~]# crontab -l -u root
*/5 * * * * ntpdate time.windows.com
每天备份文件
每天凌晨3点做一次备份 ? 备份/etc/ 目录到/backup 下面
1 将备份命令写入一个脚本中
2 每天备份文件名要求格式 : 2020 -01-01_hostname_etc.tar .gz
3 在执行计划任务时不要输出任务信息
4存放备份内容的目录要求只保存三天的数据
#!/usr/bin/bash
DATE=$(date +%F)
NAME=$(hostname)
Dir=/etc/
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin
cd ~/backup
tar czf ${DATE}_${NAME}__etc.tar.gz ${Dir}
find ~/backup/ -name '*.tar.gz' -a -mtime +3 | xargs rm -rf
~
[root@yum_server10 ~]# crontab -l -u root
*/5 * * * * ntpdate time.windows.com
# 每天凌晨3点备份/etc 配置定期删除3天前的/etc下的数据
00 03 * * * bash ~/backup.sh &>/dev/null
[root@yum_server10 ~]# crontab -l
*/5 * * * * ntpdate time.windows.com
# 每天凌晨3点备份/etc 配置定期删除3天前的/etc下的数据
00 03 * * * bash ~/backup.sh &>/dev/null
[root@yum_server10 ~]# vim backup.sh
[root@yum_server10 ~]# crontab -l -u root
*/5 * * * * ntpdate time.windows.com
# 每天凌晨3点备份/etc 配置定期删除3天前的/etc下的数据
00 03 * * * bash ~/backup.sh &>/dev/null
计划任务注意事项
(1)给定时任务注释
(2)将需要定期执行的任务写入shell脚本中,避免
直接使用命令无法执行的情况tar date
(3)定时任务的结尾一定要有&>/dev/null或者将结
果追加重定向>>/tmp/date.log文件
set from=344767835@qq.com
set smtp=smtp.qq.com
set smtp-auth-user=344767835@qq.com
set smtp-auth-password=wddwotpytzrpbhjd
set smtp-auth=login
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin
DATA=$(curl http://wttr.in)
mkdir ~/tianqii.txt
echo ${DATA} > ~/tianqi.txt
cat ~/tianqi.txt | mail -s "hello test" 344767835@qq.com
~
~
~