博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
linux系统管理之系统定时任务
阅读量:4228 次
发布时间:2019-05-26

本文共 3282 字,大约阅读时间需要 10 分钟。

前言

之前写了一篇linux系统管理的合集篇,显得篇幅太长,用的是普通的富文本编辑器阅读体验效果也不是很友好,可能描述的不够详细。经过老夫的深思熟虑,掐指一算,分篇来写确实可行,容易阅读,也便于小伙伴们翻阅。于是就有了写这篇文章的想法,Markdown编辑器用起来舒服多了。骚话不多说,直接进入正题。

正文

linux对于做研发岗位或者运维的小伙伴,相信接触的肯定不少,或多或少也应该接触过、使用过。公司开发项目,svn,mysql,git,nginx等等都是部署在linux服务器上的,项目用svn或者git协同开发,最终打包发布也是在云服务器上。这时候我们对linux系统管理的了解那肯定是必不可少的,一些基本命令也需要熟练掌握。

at命令,一次性定时任务

at访问机制

  • 如果系统中有/etc/at.allow文件,只有写入/etc/at.allow文件(白名单)中的用户可以使用at命令(/etc/at.deny文件被忽略)
  • 如果系统中没有/etc/at.allow文件,只有/etc/at.deny文件,写入/etc/at.deny文件(黑名单)中的用户不能使用at命令。对root无效
  • 如果系统中两个文件都不存在,只有root用户可以使用at命令

查询是否安装,通过chkconfig命令:

  • chkconfig --list | grep atd
  • 查看atd状态:service atd status,值得注意的是,在CentOS7中使用systemctl命令进行查看
  • at [选项] 时间

选项

  • -m:at工作完成后,无论是否命令有输出,都用email通知执行at命令的用户
  • -c工作号:显示at工作的实际内容

时间

  • HH:MM 例如:04:30
  • HH:MM YYYY-MM-DD 例如:4:30 2018-08-08
  • HH:MM[AM|PM|] [mouth][date] 例如:4:30 June 01
  • HH:MM[AM|PM|] [minutes|hours|days|week] 例如:now + 5minutes,5分钟后执行

atqatm

  • atq:查询当前服务器上的at工作
  • atm[工作号]:删除指定的at任务

cron命令,循环定时任务,crond服务管理与访问控制

查询是否安装

  • chkconfig --list | grep cron服务

查看crond状态

  • service crond status

访问控制:[root用户除外,毕竟是超级用户]

  • 当系统中有/etc/cron.allow文件,只有写入此文件的用户可以使用crontab命令,没有写入的用户则不能使用crontab命令。
  • 同样如果有此文件,/etc/cron.deny文件被忽略,/etc/cron.allow文件优先级更高。
  • 当系统中只有/etc/cron.deny文件时,写入此文件的用户不能使用crontab命令,没有写入的用户可以使用crontab命令。
crontab[选项] 循环定时任务

选项:

  • crontab -r 删除当前用户所有的crontab任务
  • crontab -l 查询crontab任务
  • crontab -e 编辑crontab定时任务
* * * * * 执行的任务
  • “ * ”:代表任意时间 例如:第一个“*” 每分钟执行一次命令
  • “ , ”:代表不连续的时间 例如:“0,9,12,15 * * *命令” 每天的9:00,12:00,15:00都执行一次命令
  • “ - ":代表连续的时间范围 例如:“0 8 * * 1-6命令” 每周一到周六的上午8点执行命令
  • “ * /n ”:代表每隔多久执行一次 例如:“*/7 * * * *命令” 每隔7分钟执行一遍命令
每一个*号代表的内容以及含义
  • 内容:第一个“*”号 ,含义:一小时当中的第几分钟 范围:0-59
  • 内容:第二个“*”号 ,含义:一天当中的第几小时 范围:0-23
  • 内容:第三个“*”号 ,含义:一个月当中的第几天 范围:1-31
  • 内容:第四个“*”号 ,含义:一年当中的第几个月 范围:1-12
  • 内容:第五个“*”号 ,含义:一周当中的星期几 范围:0-7(0和7都代表星期日)

crontab注意事项

  • 六个选项都不能为空,必须填写。不确定则用“*”代替。
  • 最小时效为分钟,最大时效是月。
  • 定义时,最好不要把日期和星期放在一条定时任务中执行,容易混淆。
  • 定时任务中,不管事直接写命令,还是在脚本中写命令,最好都是绝对路径。

通过crontab设置:

执行系统定时任务的方法

  • 手工执行定时任务
  • 通过执行命令:crontab -e 配置

系统定时任务

  • 查看cron文件 ls /etc/cron.*
  • 第一种把需要定时执行的脚本复制到(/etc/cron.[daily|weekly|monthly]目录中的任意一个),推荐此方法
  • 第二种修改/etc/crontab配置文件

anacron设置

  • anacron作用:用来保证在系统关机的时候错过的定时任务,可以在系统开机之后执行。

anacron检测周期

  • anacron使用一天,七天,一个月作为检测周期
  • 在系统的/var/spool/anacron/目录中存在cron.[daily|weekly|monthly]文件,用于记录上次执行cron的时间
  • 和当前时间作比较,如果两个时间差超过了anacron的指定时间差,证明cron任务被执行。

Centos 6.x的区别

  • 在老的centos版本中, /etc/cron.[daily|weekly|monthly]这些目录会被cron调用,也会被anacron调用,容易重复执行
  • 只会被anacron调用,避免重复执行
  • anacron不再是服务,而是系统命令

anacron配置文件含义

使用vi或者vim编辑anacrontab 文件,vi /etc/anacrontab 如下图:

anacrontab文件内容

这里根据上图给出一些字段的含义,其实不难理解,了解一下就好。

  • RANDOM_DELAY=45 最大随机延迟
  • START_HOURS_RANGE=3-22 执行时间范围:3-22点
天数 强制延迟(分) 工作名称 实际执行命令
1 5 cron.daily nice run-parts /etc/cron.daily
7 25 cron.weekly nice run-parts /etc/cron.weekly
@monthly 45 cron.monthly nice run-parts /etc/cron.monthly

以cron.daily工作来说明执行过程

  • 首先读取/var/spool/anacron/cron.daily中的上一次anacron执行的时间
  • 和当前时间作比较,如果两个时间的差值超过一天,就执行cron.daily工作
  • 执行这个工作只能在03:00-22:00之间
  • 执行工作强制延迟时间为5分钟,再随机延迟0-45分钟
  • 使用nice命令指定默认优先级,使用run-parts脚本执行/etc/daily目录中所有可执行文件

尾声

好了,以上就是linux系统定时任务的全部内容了,希望对即将入门的同学有所帮助。书山有路勤为径,学海无涯苦作舟。这个系列的文章总算是写完了,重构了一次,收获多多。多学多练,命令不是靠死记硬背的,长期使用才能熟能生巧。

ps:忽然想起 2 年前就开始总结这篇笔记了,前几天阅读当时的笔记,写的太粗糙了,看完之后,下决心整理一篇详细一点的文章,如今在原来的基础上加以雕琢,完成自我超越。总结完后自己也受益匪浅,读者阅读到了,也有些许收获吧。有错误的地方也希望各位客官帮忙指正,大家一起学习,一起进步,每天都有好心情。最后还得感谢某编程学习网站的 Tony 老师,带我入门了 linux。Tony 老师幽默的教学风格,估计在座的部分客官也很熟悉,老司机带带我,请问这是通往幼儿园的车吗,我要下车,啊呀一不小心扯远了…

转载地址:http://xzcqi.baihongyu.com/

你可能感兴趣的文章
安卓:股票筛选及分析系统
查看>>
增加windows下Tomcat运行时的内存
查看>>
tomcat群集中session共享的几个方案
查看>>
查找google谷歌北京IP地址的方法
查看>>
本科大数据专业该怎么上?
查看>>
云创大数据1+X大数据应用部署与调优职业技能等级证书预申报正式开启!
查看>>
人工智能需要一个可被证明的理论作为基础 | 哈佛丘成桐
查看>>
入门 | 一文概览深度学习中的激活函数
查看>>
一分钟整明白Tensorflow Extended
查看>>
人工智能再次参加高考:和作家比写作文,AI能打多少分?
查看>>
云创冬日紫金山踏雪游记
查看>>
西安思源学院电子信息工程学院院长张卫钢一行到访
查看>>
邀请函|欢迎参加2019云创大数据实验平台金融类/电子商务类/数学统计类院校各省总代理招募大会!...
查看>>
云创大数据的2018年!
查看>>
QNX简介
查看>>
MQTT协议基本介绍
查看>>
进程和线程是操作系统基本概念,了解一下
查看>>
SSL与TLS的区别以及介绍
查看>>
对象切割 - 常量引用传递
查看>>
北邮同学面经
查看>>