1.课程介绍部分
- 定时任务概念介绍
- 定时任务实现方式
- 定时任务配置应用
- 定时任务操作练习
2.课程知识回顾
- 掌握文件权限信息
- 掌握系统默认权限设置 umask
- 了解系统用户相关文件 /etc/passwd /etc/shadow
- 了解系统用户相关目录 /etc/skel
- 掌握普通用户提权方法
a 直接切换用户 su -
b 修改文件/目录权限 chown chmod
c 进行用户提权 sudo visudo
d 进行特殊权限位配置 setuid setgid 粘滞位
扩展:
chattr +i 文件信息 --- 将一个文件上锁
chattr -i 文件系统 --- 将一个文件解锁
lsattr 文件系统 - 掌握用户管理相关命令
3.系统定时任务概念 == 生活中闹钟
1) 时间信息有时不准 时间同步操作 每过10分钟
2) 备份数据信息 凌晨
代替人自动完成一些任务
4.系统定时任务实现方法:
1). 定时任务软件:cronie *****
2). 定时任务软件:atd 设置一次定时任务,执行一次
3). 定时任务软件:anacron 定时时间有固定设置 每小时 每天 每个月 cronie-anacron
实现定时任务配置
1). 系统默认定时任务:
cron.hourly/ --- 每小时执行目录中脚本文件
cron.daily/ --- 每天执行目录中脚本文件
cron.weekly/ --- 每周执行目录中脚本文件
cron.monthly/ --- 每月执行目录中脚本文件
vim oldboy.sh
#!/bin/bash
echo "info_$(date +%F_%T)" >/tmp/test_cron.txt
2). 用户自定义设置定时任务
一个命令 两个文件
crontab --- 设置和查看定时任务命令
# crontab -l --- 查看设置的定时任务
# crontab -e --- 编辑设置定时任务/语法检查功能
配置文件
/var/spool/cron/root --- root用户设置定时任务配置文件
/var/spool/cron/oldboy --- oldboy用户设置定时任务配置文件
/var/log/cron --- 定时任务日志文件
5.定时任务如何进行配置
准备工作:
systemctl start crond
systemctl enable crond
编写定时任务:
[root@oldboyedu ~]# cat /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
定时任务时间信息 执行任务信息
* * * * * 命令/脚本
时间信息:
*(分) *(时) *(日) *(月) *(周)
分钟: 0-59
小时: 0-23
日期: 1-31
月份: 1-12
星期: 0-6
任务信息:
cp /etc/hosts /etc/hosts.bak
练习:
-
凌晨2点半 将数据进行备份
crontab -e 30 2 * * * cp /etc/hosts /etc/hosts.bak 如何验证定时任务功能: 01. 实时监控定时任务日志信息 [root@oldboyedu ~]# tail -f /var/log/cron Jul 30 16:56:25 oldboyedu crontab[42580]: (root) BEGIN EDIT (root) Jul 30 16:56:38 oldboyedu crontab[42580]: (root) REPLACE (root) Jul 30 16:56:38 oldboyedu crontab[42580]: (root) END EDIT (root) 01 02 03 04 Aug 1 02:30:01 oldboyedu CROND[42950]: (root) CMD (cp /etc/host /etc/hosts.bak) 1): 编写定时/定时任务触发 时间信息 2): 主机名称信息 3): 读取什么定时任务文件信息 4): 定时任务完成了事情 02. 加快定时任务执行 调整时间信息 PS: 调整时间尽量向后调整
-
下午3点40,8月6日,周日 将数据进行备份 错误题目
40 15 6 8 0 和女朋友发生小秘密 PS: 在设置时间信息时, 周信息不能和日期信息一起设置
-
每隔1个小时, 数据备份
/n 每隔多久执行定时任务 间隔多久 * 每分钟 每小时 每天 每月 每周 0 */1 * * * cp /etc/hosts /etc/hosts.01 正确 * */1 * * * cp /etc/hosts /etc/hosts.01 问题 说明: 每隔一小时会执行 1:00 --- 2:00 执行时间条件 * --- 每分钟执行 PS: 在设置好一个时间信息, 前面的时间也要做规划
-
每天上午9,10,11,12点 执行数据备份
- 连续的时间范围 0 9-12 * * * cp /etc/hosts /etc/hosts.01 规范配置 0 9-12/1 * * * cp /etc/hosts /etc/hosts.01 理论正确 间隔1小时执行 9-10 and 9-12点执行
-
每天上午9 11 执行数据备份
, 非连续的时间范围 0 9,11 * * * cp /etc/hosts /etc/hosts.01
时间表示形式:
* 每多少时间
*/n 每隔多久 间隔时间
1-10 连续时间范围
1,10 非连续时间范围
-
定时任务编写常见问题
1) 每隔5分钟, 进行时间同步(ntpdate ntp1.aliyun.com) 如何编写定时任务: 方法一: 采用绝对路径进行编写 */5 * * * * /usr/sbin/ntpdate ntp1.aliyun.com 方法二: 放入到脚本文件中 #!/bin/bash PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/oldboy:/oldgirl:/root/bin echo $PATH &>/tmp/oldboy.txt ntpdate ntp1.aliyun.com 说明: 定时任务执行时, 识别的环境变量只有/usr/bin:/bin 2) 规范化编写定时任务 */5 * * * * /usr/sbin/ntpdate ntp1.aliyun.com &>/dev/null postfix 服务开启 --- /var/spool/mail/root 邮件 文件不断变大 占用更多block postfix 服务关闭 --- /var/spool/postfix/maildrop/ 大量小文件 占用更多inode /dev/null --- 系统黑洞 3) 将/etc/hosts 打包备份 /opt/hosts_时间信息.tar.gz 每分钟操作 tar zcvf /opt/hosts_$(date +%F).tar.gz /etc/hosts tar zcvf /opt/hosts_`date +%F`.tar.gz /etc/hosts 解决方式一: 将特殊符号前面加上转义符号 * * * * * tar zcvf /opt/hosts_$(date +\%F).tar.gz /etc/hosts 解决方式二: 将有特殊符号命令放入脚本中 #!/bin/bash tar zcvf /opt/hosts_$(date +%F).tar.gz * * * * * sh /server/scripts/tar.sh &>/dev/null 说明: 定时任务中有些特殊符号无法识别
定时任务编写注意事项:
01. 编写定时任务需要有注释信息 (时间 编写人员 任务作用)
02. 编写定时任务注意环境变量 /usr/bin:/bin 命令书写为绝对路径
03. 编写定时任务注意特殊符号 需要标记转义符号
04. 编写定时任务需要将输出信息定义到空 &>/dev/null
05. 编写定时任务建议使用脚本编写
编写定时任务规范:
命令编写定时任务:
第一个里程: 测试命令是否可以在命令行执行
第二个里程: 放入定时任务中(绝对路径)
第三个里程: 调整时间信息进行测试
第四个里程: 检查日志信息/检查任务执行结果
脚本编写定时任务:
第一个里程: 编写脚本信息
第二个里程: 测试脚本执行效果
/bin/sh /server/scripts/test.sh
第三个里程: 放入定时任务中(绝对路径)
第四个里程: 调整时间信息进行测试
第五个里程: 检查日志信息/检查任务执行结果
测试环境测试定时任务没问题:
执行脚本将线上服务器定时任务做改动
compress.sh
#!/bin/bash
tar xxxxx
#!/bin/bash
echo "* * * * * /sh/bin /server/scripts/compress.sh" >>/var/spool/cron/root
6. 课程知识总结
1) 定时任务概念作用:
让反复工作任务, 可以系统自动执行
2) 定时任务实现方式:
系统默认定时任务:
自定义定时任务: 最短周期是每分钟 存储服务器(用户数据信息 18:00---传输图片---18:00:59)
实时同步备份数据
3) 定时任务编写规范
定时任务文件格式规范 * * * * * 任务
定时任务时间定义方法
4) 定时任务常见错误