Linux定时任务

一、为啥要学习定时任务

在我们现实生活中处处可以用到定时任务。
如:
亲爱的,2020年4月1号会上映一部动画片电影我们去看看啊。
明天上午老师要看论文了
我作业还没写,明天早上上课要收的
明天下午15点开工资

看看我们生活中的定时任务是不是很多。计算机是人来设计的,所以它的功能都是模仿我们人类的生活方式的。面向对象编程也是
在计算机中我们也是有很多需要预定时间来做的工作,比如:每天晚上6点给所有同学发送明日课程表。夜晚定时备份服务器的配置文件、定时备份服务器上的错误日志、定时同步服务器的时间、web服务器定时生成html页面进行缓存等等太多了
综上所述,我们需要学习定时任务

二、学习目标

  • linux中的定时任务分那几种类
  • 执行过程是怎样的
  • 区分定时任务需要使用那中类型的定时任务
  • linux中的定时任务涉及的文件有哪些
  • 我们怎么使用它们实际操作

三、定时任务的执行过程理解图


执行过程说明:
在我们工厂里有一支保安的队伍名字叫crond,他们的工作就是时刻监督美女A、美女B和美女C的工作计划并帮助执行计划。美女A、B、C的工作计划时间一到,他们就会马上按找美女们规定的时间做要做的事。
美女们现在使用crontab -e工具来来编辑工作计划任务。她们要使用crontab工具。crond检查/etc/cron.allow文件中是否明确的记录了她们那个人可以使用,如果记录了那么就可以给她使用该软件做编辑。如下图:

如果在allow文件中没有明确的记录她们可以使用,那么就需要检查她们是不是在deny文件中明确的记录了,她们不能使用。如下图

可以看到deny中没有记录menv A、meinv B和meinv C,而记录的是liangqingshan ,则说明只用liangqingshan这个账户是不能使用crontab 命令来编辑创建定时任务的,使用后会出现下面的提示。


下面我们以美女A的工作为实例
下图是美女A的工作端

美女A创建定时任务,每一分钟向hello.txt 文件中写入一条"hi,good luckly my motherland"信息。如下图

然后我们退出并保存文件。这样我们创建了一条定时任务,这条定时任务会放在下面的位置,如图

下面我们看一下于美女同名的文件meinv_A中的内容,如下图

如上图所见,同名文件中保存的内容就是该用户创建的定时任务。
总结:
1)用户在创建定时任务使用crontab -e命令来编辑的。当然这不是必须的,还有下面的方法来创建定时任务。

  • 在/etc/crontab中直接编辑。如下图(我们不推荐使用这种方式,因为这是设置全局的)

    2)用户能否使用crontab命令是受到/etc/cron.allow(白名单)文件和/etc/cron.deny(黑名单)文件来控制的。
文件名称 说明
/etc/cron.allow 检查白名单,加入到该名单的用户可以直接使用crontab工具,不需要在做deny的检查了,也就是说,/etc/cron.allow的文件等级高于/etc/cron.deny的文件等级
/etc/cron.deny 检查黑名单,在/etc/cron.allow中没有查询到的用户会做本文件的检查,只要用户名称记录在案的都不允许使用crontab工具来创建定时任务
特别说明 如果用户开始的时候是允许使用crontab工具来创建定时任务的,然后过了一段时间后,想禁止该用户使用crontab工具,即在/etc/cron.allow中不添加该用户的用户名,在/etc/cron.deny中记录该用户的用户名。则记录完成后的时间之后该用户就无法使用crontab工具来创建和查看她的定时任务了,但是该用户之前创建的定时任务依旧可以运行。如果想禁止运行清空或注释掉该任务就可以了,推荐注释掉任务

系统是怎么样运行的呢?
1)系统开机后crond服务启动后,crond服务会首先查找/etc/init.d或者/etc/rc.d/init.d/corn文件来设置环境,如下图

2)加载完环境后会查找3个位置,统计出全部的当前已经创建的定时任务。分别是:

目录或文件名称 说明
/var/spool/cron/目录 用户使用crontab创建的定时任务保存在该文件夹下且任务文件的名称就是该用在系统中的用户名。
/etc/anacrontab文件 系统定时任务保存位置,我们不要在该文件中创建定时任务
/etc/cron.d/目录 用户创建的shell脚本存放位置,这样方便管理,这里的脚本是用来定义全局任务的

3)统计完成全部定时任务后,检查每一个定时任务,判断每一个定时任务是否是在当前的分钟执行,是则执行,不是则等待

四、linux中的定时任务是什么

4.1 linux中定时任务分类

分类分为:
系统定时任务和用户自定义定时任务两种
从字面就可以知道这两种定时任务的区别和用法,这里就不详细写明了

4.1.1 系统定时任务

系统定时任务简单的说,就是系统每天需要在指定的时间要做的任务,比如把缓存中的数据写入硬盘,清理日志,打包文件等等
设置文件的位置在:/etc/anacrontab
文件权限是:600

注意:此位置是放系统的定时任务的,我们个人的任务不要放到这里面,这里面的任务会影响全部用户。此处禁止放入,禁止放入,禁止放入,重要的事情说三遍。

4.1.2 用户定时任务

用户定时任务就是用户自己定义的需要执行的任务,如定时的邮件提醒,收集系统状态然后发送邮件给运维人员。等等
crontab命令管理文件位置:白名单【/etc/cron.allow】黑名单【/etc/cron.deny】
操作定时任务的命令说明

  • 打开定时任务编辑器,使用如下命令
crontab -e #用来打开定时任务的编辑器,用来创建我们需要的定时任务。
#注意:这里涉及到的命令全部使用全路径,如:echo命令,在这里我们要用/bin/echo
  • 查看我都创建了哪些定时任务,使用的命令如下
crontab -l #相当于使用cat /var/spool/cron/当前用户名的文件
  • 制定用户创建定时任务
crontab -u meinv_A #制定给美女A创建定时任务,定时任务文件会
# 放在/var/spool/cron/meinv_A中

如下图的说明:

编辑的内容

在指定的用户下查询

  • 删除自己创建的定时任务。注意:创建的定时任务是保存在/var/spool/cron/文件夹下的任务
crontab -r 用户名 #这里的用户名不写,则便是删除当前用户,即谁用的这条命令,就删除谁的定时任务。写入用户名,就删除该用户的定时任务。
  • 操作确认
crontab -i -/e/l/r/u #加-i是用来确认是否要进行这些操作,需要和其他命令组合到一起使用。

如图:

五、定时任务创建的格式

格式说明保存在/etc/crontab文件中,如下图

理解图如下

  • 秘书们的权限说明
秘书名称 取值范围 权限职责说明
分秘书 0-59 可以选择的分钟范围是0分到59分钟
时秘书 0-23 可以选择的小时范围是0点到23点
日秘书 1-31 可以选择的天数范围是1号到31号
月秘书 1-12 可以选择的月份范围是1月到12月
周秘书 0-6 可以选择的每周天数范围是0到6,表示周一到周日
  • 秘书们的笔记记录格式说明
符号 说明及实例说明
* 表示所有可能的值。整数表示
- 表示范围取值。如:1-4 表示:1,2,3,4
, 表示列表。如:1,5 表示:1和5
/ 表示每。如:*/5放到分秘书哪里就表示:每五分钟。放在时秘书哪里表示每5小时等等
  • 创建秘书处
# 安装cron
yum -y install crontabs

对秘书处可以做的操作

操作名称 说明
开始启用秘书处 service crond start
关闭秘书处 service crond stop
重新启用秘书处 service crond restart
重新制定秘书处的工作内容 service crond reload
看看秘书们做的怎么样 service crond status
  • 检查秘书处是不是在上班可以用下面的方法
    查看crond进程是否启动
    第一种方法:

    第二种方法:

    对应crontab -e的编辑文件的格式就是
    *空格*空格*空格*空格*空格要执行的命令

六、让我们的秘书开始干活把

1)让我们的分秘书每间隔一分钟手书一次好运并记录到goodluck.txt文件

*/1 * * * * /bin/echo "good luck!!"  >> /home/meinv_A/goodluck.txt


2)让我们的时秘书每隔一小时的整点在goodluck.txt文件中写入“I am superman”

0 */1 * * * /bin/echo "I am superman" >> /home/meinv_A/goodluck.txt


3)让我们的日秘书,每天9点在goodluck.txt文件中写入“come here”

0 9 */1 * * /bin/echo "come here" >> /home/meinv_A/goodluck.txt


4)让我们的月秘书每月的第一天,上午9点整在文件goodluck.txt文件中写入“I am good”

0 9 1 */1 * /bin/echo "I am good" >> /home/meinv_A/goodluck.txt

)
5)让我们的月秘书每个月的每个星期的星期一上午9点10点整在文件goodluck.txt中写入“over”

0 9,10 * */1 1 /bin/echo "over" >> /home/meinv_A/goodluck.txt


6)每天早上的8:45分在job.txt文件中签署“here”

45 8 */1 * * /bin/echo "here" >> /home/meinv_A/job.txt

七、注意事项

1)定时任务中的命令要使用全路径,以防止环境变量引起的错误
2)定时任务中的文件地址要使用绝对路径
3)在定时任务中要执行的操作最好写成脚本
4)如果在定时任务中用到了%,则需要使用转义字符“\”进行转义(多用于日期格式设置)
5)crontab -r 命令能不用就不要用,可以把该命令进行注释,先停用几天看看是否对系统有影响,没有影响后在进行备份转移走该文件,做好备份工作,不要删除,切记!切记!切记!
6)在定时任务中使用变量时最好用(变量名称)如:(变量名称) 如:(变量名称)如:(data)-个人推荐
7)不要在定时任务中有输出,如果调试的过成中需要输出,那么就写在日志中
8)写定时任务完成后,要现在本地密集的测试一下,如每5分钟,每3分钟执行一次,看结果正确之后在放到生产环境中
9)在定时任务的前面一定要加上注释,否则后期自己就不知道是干什么的了。如果离职的话也方便交接
10)在定时任务后面加上重定向> /dev/null 2>&1。原因是:每条定时任务执行完毕后,系统都会将任务输出信息通过电子邮件的形式发送给当前系统用户,这样日积月累,日志信息会非常大,如果定时任务的时间间隔非常短,那么你的inode很快就没有了。
11)如果crontab命令突然失效了,我们可以重启/etc/init.d/crond服务。或者查看日志看看是不是那个定时任务写错了,日志通常在/var/log/cron,因为是刚发生的,所以用tail -n 10 /var/log/cron 现实日志都后10行应该够了。

/etc/init.d/crond restart

八、定时任务误删除了怎么办

1)祈祷引起的生产事故不大
2)祈祷你删除的用户的定时任务在该用户的加目录还有备份
如果有备份使用下面的方式做处理
查询是否有备份

下面使用crontab -r命令删除/var/spool/cron/目录下的meinv_A定时任务

下面开始还原任务
1:权限满足的情况下,直接拷贝过去

2:权限不满足的情况下,的做法
不满足权限的样子如下图

然后找有权限的同事考过去。这个主要是看你的授权权限了,其他的办法我这没有了。

小白成长之路-linux定时任务cron和crontab相关推荐

  1. Linux的cron和crontab定时任务

    定时任务调用shell 本地Windows写一个shell test.sh #!/bin/bashecho "Course Arrange Job runs well at: " ...

  2. Linux定时任务cron及部分Linux命令

    cron服务¶ 在Ubuntu中,定时任务cron服务默认被安装.可以通过以下命令操作该服务: service cron status 查看服务运行状态 service cron start 启动服务 ...

  3. 技术小白成长之路 - 谷歌云端 GCP Cloud Engineering - 第一篇 - 核心架构 Core Infrastructure

    谷歌云端 GCP Cloud Engineering Certificate - 第一篇 - 核心架构 Core Infrastructure 谷歌云端平台GCP简介 1. 谷歌云端平台GCP资源层次 ...

  4. linux定时任务 - CRON表达式

    CRON 表达式是一个字符串,以 5 或 6 个空格隔开,分为 6 或 7 个域,每一个域代表一个含义. CRON 有如下两种语法格式: 秒 分 小时 日期 月份 星期 年 秒 分 小时 日期 月份 ...

  5. Linux的cron和crontab

    2019独角兽企业重金招聘Python工程师标准>>> 一 cron crond位于/etc/rc.d/init.d/crond 或 /etc/init.d 或 /etc/rc.d ...

  6. 【“计算机科学与技术”专业小白成长系列】Linux Shell 编程 极简教程

    Linux Shell 编程 极简教程 内容摘要 本文是 Linux Shell 编程简单入门.主要内容: Linux 简介 Shell 编程入门 Kotlin 脚本与 Shell 脚本 Linux ...

  7. 大数据开发成长之路——Linux基础

    Linux基础 这里主要介绍学习大数据过程中用到的Linux基础知识,现在主攻的方向是大数据开发,欢迎大家共同交流. 环境 推荐安装VMware虚拟机并安装CentOS操作系统,具体资源的下载和安装可 ...

  8. 小白成长之路_LeetCode刷题记录

    题目: 给你一个长度为 n 的整数数组,请你判断在 最多 改变 1 个元素的情况下,该数组能否变成一个非递减数列. 思考: 我们是这样定义一个非递减数列的: 对于数组中所有的 i (0 <= i ...

  9. linux定时任务cron配置

    http://www.cnblogs.com/shuaiqing/p/7742382.html

最新文章

  1. 双11背后基础设施软硬 结合实践创新
  2. Ubuntu 上 hi3531 交叉编译环境 arm-hisiv100nptl-linux 建设过程
  3. Chrome 打印PDF技巧
  4. 参加第十六届全国大学生智能车竞赛广东省报名队伍
  5. 吴恩达 神经网络和深度学习 第一课 第三周 (代码)planar data classify
  6. 重磅!AI大牛邢波出任AI大学校长,李开复姚期智都是校董
  7. android检测是否跳出应用程序,android – 检测应用程序何时打开/恢复
  8. 【数据结构和算法笔记】:图的深度优先搜索(DFS)
  9. foxmail邮箱pop3服务器,Foxmail设置POP3邮箱的操作流程
  10. (五)Excel函数应用之查询与引用函数
  11. DZ X页头主菜单背景图片透明自由更换页头背景图片的方法
  12. 这里excel将文本转换为数字
  13. 《西游记》中师徒四人的形象探究及现实意义
  14. 如何改进企业旧式工时管理系统?
  15. spring项目中使用slf4j和log4j2日志框架
  16. Perl(五)Perl的反引号
  17. python基础知识7——元组
  18. 简述计算机系统集成的特点,谈计算机系统集成的特点与发展
  19. 基于vc2017 编译 python 3.7
  20. 计算机财务管理模型分析报告,计算机财务管理实验报告1.doc

热门文章

  1. 苹果发布全新旗舰,对国内手机市场将造成什么影响?
  2. pd.melt和FacetGrid
  3. 铁甲雄心机器人冠军_《铁甲雄心》第二季首播 优必选科技引领中国AI机器人进击之路...
  4. 50个BBS经典签名
  5. 南京市租房网上提取公积金步骤
  6. 微信公众号商城是否需要云服务器,云商城公众号绑定、微信支付配置文档
  7. android 手电筒服务,Android上实现手电筒功能
  8. 2020nyist第三场个人赛
  9. BTC涨这么多,还能买吗?要卖吗?| 量化定投策略告诉你答案【附代码】
  10. LTC逆袭活跃地址一周增长84! ETH、BTC、BCH每秒交易均呈负增长! 以太坊网络传播时间再缩短| 数据周榜...