当前位置:   article > 正文

Linux操作系统之定时任务_linux定时任务

linux定时任务

1.定时任务配置方式

  1. 方法1:修改系统的配置文件
  2. /etc/crontab
  3. 1.编辑定时任务
  4. 直接vim编辑crontab即可
  5. 2.查看定时任务
  6. cat /etc/crontab
  7. 方法2:用户的定时任务
  8. /var/spool/cron/root #root定时任务的配置文件
  9. /var/spool/cron/oldboy #oldboy用户定时任务配置文件 普通用户很少用!!!因为普通用户没有权限
  10. 1.配置定时任务
  11. 使用命令:crontab -e 编辑用户的配置文件
  12. 当前登录用户root:crontab -e(有语法检测功能)=====vim/var/spool/cron/root
  13. 2.查看定时任务
  14. crontab -l #显示某个用户的crontab文件内容,如果不指定用户,则表示显示当前用户的crontab文件内容
  15. cat /var/spool/cron/root
  16. 3.查看定时任务状态
  17. [root@bubble ~]# systemctl status crond
  18. 排查定时任务问题时候,查看两个文件
  19. 1.定时任务的日志:
  20. /var/log/cron
  21. 2.系统邮件,更加详细
  22. [root@bubble ~]# cat /var/spool/mail/root

2.定时任务案例

  1. 语法格式:
  2. 五颗星分别代表的含义:
  3. * * * * *
  4. 第一颗星:分钟 0-59
  5. 第二颗星:小时 0-23
  6. 第三颗星:日 1-31
  7. 第四颗星:月 1-12
  8. 第五颗星:周 0-6 星期天可用0或7表示
  9. * 表示每的意思
  10. */n 表示间隔n分钟 */5 每隔5分钟
  11. - 表示区间范围 * 1-8 * * * 表示凌晨1点到8点的每分钟执行...
  12. 00 1-8 * * * 表示凌晨1点到8点的整点执行....
  13. , 表示间隔 * 1-8,14,17 * * *表示凌晨1点到8点 下午的2点和下午的5点 每分钟执行..
  14. 凌晨12点表示方法:
  15. 0 0 * * *
  16. 用户语法格式: crontab -e ===== vim /var/spool/cron/root
  17. * * * * * 可执行命令
  18. 系统定时任务案例:
  19. 1.每天的上午8点30分,来学校上车(echo go to school)
  20. 30 08 * * * echo go to school
  21. 2.每天晚上12点准时,回家自己开车(go to bed)
  22. 00 00
  23. 案例: 每分钟把自己的名字 追加到 oldboy.txt # 默认在家目录
  24. [root@bubble ~]# cat /etc/crontab
  25. ……
  26. ……
  27. * * * * * root echo oldboyedu >> oldboy.txt
  28. 实时查看定时任务追加
  29. [root@bubble ~]# tail -f oldboy.txt
  30. 案例: * 23,00-07/1 * * * 加/1和不加/1是相同的概念 每小时
  31. * 和 */1 相同吗? 相同
  32. 案例: 每隔5分钟执行一次定时任务 时间同步
  33. */5 * * * * 每隔5分钟 05 10 15 20 25..
  34. 05 * * * * 每小时5分钟 1.05 2.05 3.05
  35. 案例:定时同步系统时间
  36. [root@bubble ~]# cat /etc/crontab
  37. * * * * * root ntpdate ntp1.aliyun.com
  38. # 注意.两条命令写入脚本中,定时任务执行脚本
  39. [root@bubble ~]# tail -1 /etc/crontab
  40. */5 * * * * root ntpdate ntp1.aliyun.com
  41. 用户定时任务配置:
  42. [root@bubble ~]# crontab -l
  43. * * * * * echo oldboyedu >> test.txt
  44. # 注意用户的定时任务PATH变量只识别: /usr/bin/和/bin目录
  45. [root@bubble ~]# which ntpdate
  46. /usr/sbin/ntpdate
  47. [root@bubble ~]# crontab -l
  48. * * * * * ntpdate ntp1.aliyun.com
  49. 重新配置用户的PATH变量:
  50. [root@bubble ~]# crontab -l
  51. PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/.local/bin:/root/bin
  52. * * * * * ntpdate ntp1.aliyun.com
  53. 使用绝对路径:
  54. [root@bubble ~]# crontab -l
  55. * * * * * /usr/sbin/ntpdate ntp1.aliyun.com

3.定时任务注意事项

  1. 在定时任务中不识别% 需要加\
  2. 或者%在脚本中没问题的
  3. 案例:创建一个当前时间命名的一个文件
  4. [root@bubble ~]# touch `date +%F`.txt
  5. [root@bubble ~]# ll
  6. total 12
  7. -rw-r--r-- 1 root root 0 Mar 25 11:15 1.txt
  8. -rw-r--r-- 1 root root 0 Mar 25 11:17 2024-03-25.txt
  9. 创建一个IP地址和时间的目录
  10. 第一天:
  11. [root@bubble ~]# echo 10.0.0.200_2024-03-25 #不通用
  12. 第二天:
  13. [root@bubble ~]# echo 10.0.0.200_2024-03-25、6
  14. [root@bubble ~]# echo `hostname -I|sed 's# ##g'`_`date +%F`
  15. [root@bubble ~]# echo `ifconfig eth0|awk 'NR==2{print $2}'`_`date +%F`
  16. 需求: 创建主机名称+IP地址的目录
  17. [root@bubble ~]# echo `hostname`_`hostname -I`
  18. bubble_10.0.0.200
  19. [root@bubble ~]# mkdir `hostname`_`hostname -I`
  20. [root@bubble ~]# ll
  21. total 0
  22. drwxr-xr-x 2 root root 6 Mar 25 11:24 10.0.0.200_2024-03-25
  23. drwxr-xr-x 2 root root 6 Mar 25 11:27 bubble_10.0.0.200
  24. %在定时任务中需要加\,或者写入脚本
  25. [root@bubble ~]# crontab -l
  26. #* * * * * /usr/sbin/ntpdate ntp1.aliyun.com
  27. * * * * * mkdir /root/`hostname`_`date +\%F-\%M`
  28. 使用脚本:
  29. * * * * * sh /root/1.sh
  30. [root@bubble ~]# cat 1.sh
  31. mkdir /root/`hostname`_`date +%F-%M`
  32. 注意事项:
  33. 没有开启邮件服务器的情况下:
  34. 定时任务的结果如果不定向到空或者文件中,生成大量的小文件堆积到系统中,从而导致inode号码被沾满,最终导致磁盘无法写入数据
  35. 产生临时小文的位置:
  36. [root@bubble ~]# ll /var/spool/postfix/maildrop/
  37. total 0
  38. 关闭邮件服务在查看:
  39. [root@bubble ~]# systemctl stop postfix
  40. [root@bubble ~]# systemctl disable postfix
  41. 会生成大量的小文件
  42. [root@bubble ~]# ll /var/spool/postfix/maildrop/|head
  43. total 1212
  44. -rwxr--r-- 1 root postdrop 497 Mar 25 11:53 01E3D30AAAA1
  45. -rwxr--r-- 1 root postdrop 498 Mar 25 11:53 036F830AAAD0
  46. -rwxr--r-- 1 root postdrop 498 Mar 25 11:52 0379830AA518
  47. -rwxr--r-- 1 root postdrop 498 Mar 25 11:52 052D230AA756
  48. ......
  49. 如果邮件服务开启了,则不会产生临时小文件。
  50. 服务优化: 邮件服务关闭,耗费服务器性能
  51. 解决方法:
  52. 1.将结果定向到空
  53. 2.开启邮件服务
  54. 3.通过定时任务清空目录下所有的小文件
  55. 面试题: 什么情况系统的inode号会变满 大量小文件
  56. 1.定时任务没有开启邮件服务器情况会产生临时小文件
  57. 2.服务运行过程中,开发问题产生临时小文件
  58. 3.误操作脚本问题
  59. 如何查找大量的小文件 大部分都在同一个目录下
  60. find / -type d -size +1M
  61. 如果查找大文件 find / -size +100M
  62. 作业:
  63. 每分钟把/etc/目录 打包备份到/tmp目录并且要求在/tmp下创建主机名称+时间(精确到分钟)的目录
  64. [root@bubble ~]# crontab -e
  65. #* * * * * rm -rf /var/spool/postfix/maildrop/*
  66. #* * * * * tar zcvf /tmp/`hostname`_`date +\%F-\%M`.tar.gz /etc/

 

4.小结

  1. 1.配置方法
  2. 系统配置中:
  3. vim /etc/crontab
  4. 用户配置文件:
  5. crontab -e ==== vim /var/spool/cron/root
  6. 两点写法:
  7. 1)crontab
  8. * * * * * root 命令
  9. 2)用户定时任务
  10. * * * * * 命令
  11. 3)PATH变量不同
  12. 2.语法格式
  13. * * * * *
  14. 分时日月周
  15. 常用: 分钟 小时
  16. * 每
  17. * * * * * 每分钟执行..
  18. */5 每5分钟 从整点开始计算 1.03创建定时任务 下次执行时间是: 1.05 1.10
  19. 00 7-12 * * * 区间范围 执行6次
  20. , 间隔 00 7,10,12 * * * 执行3次
  21. 笔试题: 每天凌晨执行一个命令 echo oldboy 到oldboy.txt文件中
  22. 00 00 * * * root echo oldboy > oldboy.txt
  23. 注意事项:
  24. 1./var/spool/mail/root # 排查的时候用
  25. 2.定时任务中不认识% 需要加\
  26. 3.多条命令使用脚本
  27. 4.用户定时任务需要重新定时PATH变量
  28. 5.关闭邮件会产生临时小文件,解决方案
  29. 定时任务的结果定向到空或者文件中
  30. 通过定时任务定时清理目录

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/繁依Fanyi0/article/detail/1003113
推荐阅读
相关标签
  

闽ICP备14008679号