赞
踩
- 方法1:修改系统的配置文件
- /etc/crontab
- 1.编辑定时任务
- 直接vim编辑crontab即可
- 2.查看定时任务
- cat /etc/crontab
-
-
- 方法2:用户的定时任务
- /var/spool/cron/root #root定时任务的配置文件
- /var/spool/cron/oldboy #oldboy用户定时任务配置文件 普通用户很少用!!!因为普通用户没有权限
- 1.配置定时任务
- 使用命令:crontab -e 编辑用户的配置文件
- 当前登录用户root:crontab -e(有语法检测功能)=====vim/var/spool/cron/root
-
- 2.查看定时任务
- crontab -l #显示某个用户的crontab文件内容,如果不指定用户,则表示显示当前用户的crontab文件内容
- cat /var/spool/cron/root
-
- 3.查看定时任务状态
- [root@bubble ~]# systemctl status crond
-
- 排查定时任务问题时候,查看两个文件
- 1.定时任务的日志:
- /var/log/cron
- 2.系统邮件,更加详细
- [root@bubble ~]# cat /var/spool/mail/root
- 语法格式:
- 五颗星分别代表的含义:
- * * * * *
- 第一颗星:分钟 0-59
- 第二颗星:小时 0-23
- 第三颗星:日 1-31
- 第四颗星:月 1-12
- 第五颗星:周 0-6 星期天可用0或7表示
-
- * 表示每的意思
- */n 表示间隔n分钟 */5 每隔5分钟
- - 表示区间范围 * 1-8 * * * 表示凌晨1点到8点的每分钟执行...
- 00 1-8 * * * 表示凌晨1点到8点的整点执行....
- , 表示间隔 * 1-8,14,17 * * *表示凌晨1点到8点 下午的2点和下午的5点 每分钟执行..
-
- 凌晨12点表示方法:
- 0 0 * * *
-
- 用户语法格式: crontab -e ===== vim /var/spool/cron/root
- * * * * * 可执行命令
-
- 系统定时任务案例:
- 1.每天的上午8点30分,来学校上车(echo go to school)
- 30 08 * * * echo go to school
-
- 2.每天晚上12点准时,回家自己开车(go to bed)
- 00 00
-
- 案例: 每分钟把自己的名字 追加到 oldboy.txt # 默认在家目录
- [root@bubble ~]# cat /etc/crontab
- ……
- ……
- * * * * * root echo oldboyedu >> oldboy.txt
-
- 实时查看定时任务追加
- [root@bubble ~]# tail -f oldboy.txt
-
-
- 案例: * 23,00-07/1 * * * 加/1和不加/1是相同的概念 每小时
- * 和 */1 相同吗? 相同
-
- 案例: 每隔5分钟执行一次定时任务 时间同步
- */5 * * * * 每隔5分钟 05 10 15 20 25..
- 05 * * * * 每小时5分钟 1.05 2.05 3.05
-
- 案例:定时同步系统时间
- [root@bubble ~]# cat /etc/crontab
- * * * * * root ntpdate ntp1.aliyun.com
-
-
- # 注意.两条命令写入脚本中,定时任务执行脚本
- [root@bubble ~]# tail -1 /etc/crontab
- */5 * * * * root ntpdate ntp1.aliyun.com
-
- 用户定时任务配置:
- [root@bubble ~]# crontab -l
- * * * * * echo oldboyedu >> test.txt
-
- # 注意用户的定时任务PATH变量只识别: /usr/bin/和/bin目录
- [root@bubble ~]# which ntpdate
- /usr/sbin/ntpdate
- [root@bubble ~]# crontab -l
- * * * * * ntpdate ntp1.aliyun.com
-
- 重新配置用户的PATH变量:
- [root@bubble ~]# crontab -l
- PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/.local/bin:/root/bin
- * * * * * ntpdate ntp1.aliyun.com
-
- 使用绝对路径:
- [root@bubble ~]# crontab -l
- * * * * * /usr/sbin/ntpdate ntp1.aliyun.com
- 在定时任务中不识别% 需要加\
- 或者%在脚本中没问题的
-
- 案例:创建一个当前时间命名的一个文件
- [root@bubble ~]# touch `date +%F`.txt
- [root@bubble ~]# ll
- total 12
- -rw-r--r-- 1 root root 0 Mar 25 11:15 1.txt
- -rw-r--r-- 1 root root 0 Mar 25 11:17 2024-03-25.txt
-
- 创建一个IP地址和时间的目录
- 第一天:
- [root@bubble ~]# echo 10.0.0.200_2024-03-25 #不通用
-
- 第二天:
- [root@bubble ~]# echo 10.0.0.200_2024-03-25、6
-
- [root@bubble ~]# echo `hostname -I|sed 's# ##g'`_`date +%F`
- 或
- [root@bubble ~]# echo `ifconfig eth0|awk 'NR==2{print $2}'`_`date +%F`
-
-
- 需求: 创建主机名称+IP地址的目录
- [root@bubble ~]# echo `hostname`_`hostname -I`
- bubble_10.0.0.200
-
- [root@bubble ~]# mkdir `hostname`_`hostname -I`
- [root@bubble ~]# ll
- total 0
- drwxr-xr-x 2 root root 6 Mar 25 11:24 10.0.0.200_2024-03-25
- drwxr-xr-x 2 root root 6 Mar 25 11:27 bubble_10.0.0.200
-
- %在定时任务中需要加\,或者写入脚本
- [root@bubble ~]# crontab -l
- #* * * * * /usr/sbin/ntpdate ntp1.aliyun.com
- * * * * * mkdir /root/`hostname`_`date +\%F-\%M`
-
- 使用脚本:
- * * * * * sh /root/1.sh
- [root@bubble ~]# cat 1.sh
- mkdir /root/`hostname`_`date +%F-%M`
-
- 注意事项:
- 没有开启邮件服务器的情况下:
- 定时任务的结果如果不定向到空或者文件中,生成大量的小文件堆积到系统中,从而导致inode号码被沾满,最终导致磁盘无法写入数据
- 产生临时小文的位置:
-
- [root@bubble ~]# ll /var/spool/postfix/maildrop/
- total 0
- 关闭邮件服务在查看:
- [root@bubble ~]# systemctl stop postfix
- [root@bubble ~]# systemctl disable postfix
-
- 会生成大量的小文件
- [root@bubble ~]# ll /var/spool/postfix/maildrop/|head
- total 1212
- -rwxr--r-- 1 root postdrop 497 Mar 25 11:53 01E3D30AAAA1
- -rwxr--r-- 1 root postdrop 498 Mar 25 11:53 036F830AAAD0
- -rwxr--r-- 1 root postdrop 498 Mar 25 11:52 0379830AA518
- -rwxr--r-- 1 root postdrop 498 Mar 25 11:52 052D230AA756
- ......
- 如果邮件服务开启了,则不会产生临时小文件。
- 服务优化: 邮件服务关闭,耗费服务器性能
- 解决方法:
- 1.将结果定向到空
- 2.开启邮件服务
- 3.通过定时任务清空目录下所有的小文件
- 面试题: 什么情况系统的inode号会变满 大量小文件
- 1.定时任务没有开启邮件服务器情况会产生临时小文件
- 2.服务运行过程中,开发问题产生临时小文件
- 3.误操作脚本问题
- 如何查找大量的小文件 大部分都在同一个目录下
- find / -type d -size +1M
- 如果查找大文件 find / -size +100M
- 作业:
- 每分钟把/etc/目录 打包备份到/tmp目录并且要求在/tmp下创建主机名称+时间(精确到分钟)的目录
-
- [root@bubble ~]# crontab -e
- #* * * * * rm -rf /var/spool/postfix/maildrop/*
- #* * * * * tar zcvf /tmp/`hostname`_`date +\%F-\%M`.tar.gz /etc/
- 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 oldboy 到oldboy.txt文件中
- 00 00 * * * root echo oldboy > oldboy.txt
- 注意事项:
- 1./var/spool/mail/root # 排查的时候用
- 2.定时任务中不认识% 需要加\
- 3.多条命令使用脚本
- 4.用户定时任务需要重新定时PATH变量
- 5.关闭邮件会产生临时小文件,解决方案
- 定时任务的结果定向到空或者文件中
- 通过定时任务定时清理目录
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。