定时任务概念
定时任务作用:
什么时间 做什么事
定时备份重要的数据
业务的低谷期
打包压缩 减少磁盘IO
时间同步 每间隔5分钟同步一次
定时任务cron
配置定时任务方式有两种
第一种 使用系统的定时任务配置
配置文件/etc/crontab
第二种:基于用户的定时任务
/var/spool/cron/以用户命名的文件
使用定时任务的相关命令操作:
crontab -e 实际编辑的 /var/spool/cron/用户名
crontab -l 列出/var/spool/cron/用户 的定时任务
cat /var/spool/cron/用户 查看定时任务
定时任务的日志文件: #定时任务出了问题看不出来
centos 麒麟 /var/log/cron
unbuntu /var/log/syslog
定时任务的使用
第一种方式
编辑配置文件/etc/crontab
# .---------------- 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
第一颗星 minute (0 - 59) 分钟 分钟0表示整点
第二颗星 hour (0 - 23) 小时 小时0表示晚上12点
第三颗星 day of month (1 - 31) 天 1-31天
第四颗星 month (1 - 12) 月 1-12个月
第五颗星 day of week (0 - 6) 星期 0表示周日
* 表示每的意思 */1 相同
*/ 表示间隔 每隔五分钟 10.32配置的定时任务 下次的执行时间10:35
- 表示区间范围 3-5 表示3点到五点
, 表示间隔
案例1:每分钟执行自己的姓名到a.txt中
[root@oldboy:~]# vim /etc/crontab
* * * * * root echo "shangwenhao" >> a.txt
[root@oldboy:~]# cat a.txt
[root@oldboy:~]# date
Fri Jul 19 17:02:03 CST 2024
[root@oldboy:~]# cat a.txt
shangwenhao
案例2:每间隔五分钟执行一次时间同步的命令
*/5 * * * * root ntpdate ntp2.aliyun.com
按照整点执行
eg:17.03 下次执行17.05
案例3:每天晚上的12点执行命令
00 00 * * * root ntpdate ntp2.aliyun.com
* 00 * * * root ntpdate ntp2.aliyun.com
#12点的每分钟执行一次
案例4.每天早上的3点-5点每小时执行一次
00 3-5 * * * root ntpdate ntp2.aliyun.com
案例5:每天早上的3-5 8-10点执行
00 3-5,8-10 * * * root ntpdate ntp2.aliyun.com
案例6:每天上午8点到下午三点 间隔2小时执行一次
00 8-15/2 * * * root ntpdate ntp2.aliyun.com
案例7:半夜10点到第二天早上5点
00 23-0,0-5 * * * root ntpdate ntp2.aliyun.com
案例8:每半个小时执行
*/30 * * * root ntpdate ntp2.aliyun.com
30 * * * root ntpdate ntp2.aliyun.com
#每个小时的30执行 eg:1:30 2:00 2:30
案例8:晚上的凌晨两点每半小时执行一次
30 02 * * root ntpdate ntp2.aliyun.com
第二种方式
/var/spool/cron/root
crontab -e 配置定时任务
crontab -l 查看
定时任务注意事项
在定时任务中 不识别% 需要加转义 \
多条命令写脚本
脚本面前加sh 或bash执行
将执行结果定向到文件中排查问题
定时任务关联脚本
注意语法结构
脚本文件是以sh为结尾的文件
出现2条或两条以上的命令写入到脚本中 使用定时任务执行脚本
按照行执行
语法结构:
sh file.sh
[root@shang:~]# vim 1.sh
echo "shang" >> a.txt
[root@shang:~]# cat a.txt
[root@shang:~]# sh 1.sh
[root@shang:~]# cat a.txt
shang
案例:
[root@shang:~]# vim 1.sh
echo "shang" >> a.txt
sed -i 's#shang#iloveyou#g' a.txt
[root@shang:~]# sh 1.sh
[root@shang:~]# cat a.txt
iloveyou
iloveyou
iloveyou
find查找查找所有 需要加*
注意事项 在定时任务中 不识别% 需要加\
查看执行步骤 -x
[root@shang:~]# sh -x 1.sh
+ echo shang
+ sed -i s#shang#iloveyou#g a.txt
执行脚本的两种方式 需要执行权限x
一种是使用绝对路径 相对路径执行
/root/1.sh #绝对路径
cd切换
./1.sh #相对路径
第二种是执行脚本的方式:不需要执行权限
sh 1.sh
sh /root/1.sh
通过脚本执行的流程
命令可以执行
命令写入脚本中
测试脚本是否可以成功执行
脚本加到定时任务
排查定时任务
将执行结果定向到文件中检查
echo shang >> /root/a.txt &>>/root/test.log
无论结果是正确还是错误都定向输出到test文件中
/var/log/syslog定时任务日志
使用crontab -e 刚开始需要选择编辑器