如果你想拥有你从未拥有过的东西,那么你必须去做你从未做过的事情
做运维经常会遇到数据备份,重要代码备份,配置文件备份,日志备份,执行备份的时候会占用资源,提高系统负载,那么就遇到了一个问题,在什么时候备份呢?总不能在用户访问量最高点备份吧,一般会选择在服务器负载的低谷期进行备份,这就看公司的业务决定了,外卖平台什么时候负载高呢?饭点上午10点到下午2点,下午5点到晚上2点负载最高;短视频平台什么时候负载最高呢,晚上8点到凌晨2点(上班困,下班该睡不着了),问题来了,运维人员总不能等到半夜做完备份再下班吧,都知道做运维费命,但是也不是这么费的,这时候就需要今天这篇文章了——定时任务~~~~
目录
💬欢迎交流:在学习过程中如果你有任何疑问或想法,欢迎在评论区留言,我们可以共同探讨学习的内容。你的支持是我持续创作的动力!
👍点赞、收藏与推荐:如果你觉得这篇文章对你有所帮助,请不要忘记点赞、收藏,并分享给更多的小伙伴!你们的鼓励是我不断进步的源泉!
🚀推广给更多人:如果你认为这篇文章对你有帮助,欢迎分享给更多对Linux感兴趣的朋友,让我们一起进步,共同提升!
一、定时任务配置
1、系统的配置文件
系统定时任务的位置是:/etc/crontab
1.配置定时任务:
vim编辑crontab即可
2.查看定时任务
cat /etc/crontab
2、用户的定时任务
/var/spool/cron/root # root定时任务配置文件
/var/spool/cron/yunzhongzi # yunzhongzi用户定时任务配置文件 普通用户很少用!
1.配置定时任务:
使用命令:crontab -e 编辑用户的定时任务的配置文件(常用)
查看当前登录用户root:crontab -e(有语法检测功能)====vim /var/spool/cron/root
2.查看定时任务
crontab -l
cat /var/spool/cron/root
3.排查定时任务问题时,查看两个文件
1).定时任务的日志
/var/log/cron
2).系统邮件,更加详细
[root@yunzhongziedu ~]# cat /var/spool/mail/root
二、定时任务的写法
语法格式:
* * * * * +用户 +命令
五颗星分别代表含义:
* * * * * root 可执行的命令
第一颗星:分钟 0-59 每分钟
第二颗星:小时 0-23 每小时
第三颗星:日 1-31
第四颗星:月 1-12
第五颗星:周 0-6 星期天可以用0或者7表示
* 表示每的意思 * * * * * 表示每分钟都执行
*/n 表示间隔n分钟 */5 * * * * 每隔5分钟执行一次
- 表示区间范围 * 0-8 * * *表示0-8点的每分钟执行
00 1-8 * * *表示凌晨1点到8点整点执行
, 表示间隔 * 1-8,14,17* * * 表示凌晨1点到8点 下午14点和17点每分钟执行
每小时的05分都执行一次表方法: 5 * * * *
凌晨12点表示方法: 0 0 * * *
用户语法格式:crontab -e ==== vim /var/spool/cron/root
* * * * *可执行的命令
三、定时任务案例
系统定时任务案例:
1.每天的上午8点30分,去上班(echo go to work)
30 08 * * * echo go to work
2.每天晚上12点准时,回家(go home)
00 00 * * * echo go home
案例3.每分钟把名字追加到yunzhongzi.txt #默认在家目录
[root@yunzhongziedu ~]# vim /etc/crontab
* * * * * root echo 于小屁 >> yunzhongzi.txt
* * * * * root echo yunzhongziedu >> yunzhongzi.txt
[root@yunzhongziedu ~]# cat yunzhongzi.txt
于小屁
yunzhongziedu
案例4.每隔5分钟执行一次时间同步的定时任务
*/5 * * * *每隔五分钟
05 * * * *每小时的5分钟
[root@yunzhongziedu ~]# vim /etc/crontab
*/5 * * * * root ntpdate ntp1.aliyun.com
#注意:两条命令写入脚本中定时执行脚本
[root@db01 ~]# which ntpdate
/usr/sbin/ntpdate
[root@db01 ~]# crontab -l
* * * * * ntpdate ntp1.aliyun.com
重新配置用户的PATH变量:
[root@db01 ~]# crontab -l
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/.local/bin:/root/bin
* * * * * ntpdate ntp1.aliyun.com
使用绝对路径:
[root@db01 ~]# crontab -l
* * * * * /usr/sbin/ntpdate ntp1.aliyun.com
四、定时任务注意事项
定时任务不识别百分号(%)如何处理?
1、很简单,对正则表达式有没有印象 %前加个反斜杠/即可
2、%在脚本中没有问题,可以被识别,将shell语句写进脚本,通过定时执行脚本的方式即可,当然执行脚本可能会遇到继承变量之类的问题,这个咱们下回分解。
案例:
1.创建一个当前时间命名的文件
[root@yunzhongziedu ~]# touch `date +%F`.txt
[root@yunzhongziedu ~]# ll
total 12
-rw-r--r-- 1 root root 0 Mar 25 19:58 2024-03-25.txt
-rw-r--r-- 1 root root 44 Mar 25 19:43 yunzhongzi.txt
-rw-r--r-- 1 root root 1017 Mar 23 17:41 passwd.txt
-rw-r--r-- 1 root root 385 Mar 23 17:07 test.txt
2.创建一个以IP地址和时间的目录
[root@yunzhongziedu ~]# echo `hostname -I|sed 's# ##g'`_`date +%F`
10.0.0.200_2024-03-25
[root@yunzhongziedu ~]# echo `ifconfig eth0|awk 'NR==2{print $2}'`_`date +%F`
10.0.0.200_2024-03-25
3.创建主机名称+IP地址的目录
[root@yunzhongziedu ~]# mkdir `hostname`_`hostname -I`
[root@yunzhongziedu ~]# ll
total 12
-rw-r--r-- 1 root root 0 Mar 25 19:58 2024-03-25.txt
drwxr-xr-x 2 root root 6 Mar 25 20:01 yunzhongziedu_10.0.0.200
在定时任务中需要加\,或者写入脚本
[root@db01 ~]# crontab -l
#* * * * * /usr/sbin/ntpdate ntp1.aliyun.com
* * * * * mkdir /root/`hostname`_`date +\%F-\%M`
使用脚本:
* * * * * sh /root/1.sh
[root@db01 ~]# cat 1.sh
mkdir /root/`hostname`_`date +%F-%M`
注意事项:
没有开启邮件服务器的情况下:
定时任务的结果如果不定向到空或者文件中,生成大量的小文件堆积到系统中,从而导致inode号码被沾满,最终导致磁盘无法写入数据
产生临时小文件位置:
[root@yunzhongziedu ~]# ll /var/spool/postfix/maildrop/
total 0
如果邮件服务开启了,则不会产生临时小文件。
服务优化: 邮件服务关闭,耗费服务器性能
解决方法:
1.将结果定向到空
2.开启邮件服务
3.通过定时任务清空目录下所有的小文件
什么情况系统的inode号会变满 大量小文件
1.定时任务没有开启邮件服务器情况会产生临时小文件
2.服务运行过程中,开发问题产生临时小文件
3.误操作脚本问题
如何查找大量的小文件 大部分都在同一个目录下
find / -type d -size +1M
如果查找大文件 find / -size +100M
五、定时任务小结
重点:
1.配置方法
系统配置中:
vim /etc/crontab
用户配置文件:
crontab -e ==== vim /var/spool/cron/root
两点写法:
1)crontab
* * * * * root 命令
2)用户定时任务
* * * * * 命令
3)PATH变量不同
2.语法格式
* * * * *
分时日月周
常用: 分钟 小时
* 每
* * * * * 每分钟执行..
*/5 每5分钟 从整点开始计算 1.03创建定时任务 下次执行时间是: 1.05 1.10
00 7-12 * * * 区间范围 执行6次
, 间隔 00 7,10,12 * * * 执行3次
笔试题: 每天凌晨执行一个命令 echo yunzhongzi 到yunzhongzi.txt文件中
00 00 * * * root echo yunzhongzi > yunzhongzi.txt
注意事项:
1./var/spool/mail/root # 排查的时候用
2.定时任务中不认识% 需要加\
3.多条命令使用脚本
4.用户定时任务需要重新定时PATH变量
5.关闭邮件会产生临时小文件,解决方案
定时任务的结果定向到空或者文件中
通过定时任务定时清理目录
权限管理的分享到此结束,明日预告,磁盘管理~~~~~
想成为大佬,就要从小白开始,从0开始,一点一点的积累,慢慢成长,明天你就是大佬!!想学习更多麒麟操作系统的知识,关注小屁,让你成为运维老鸟~~~~~