第十一节 linux定时任务

标签(空格分隔): Linux实战教学笔记

---更多资料点我查看

1.1 定时任务Crond介绍

Crond是linux系统中用来定期执行命令/脚本或指定程序任务的一种服务或软件,一般情况下,我们安装完Centos5/6 linux操作系统之后,默认便会启动Crond任务调度服务,在我们前面的系统安装及开机启动优化的设置中,我们也设置保留了Crond开机自启动,Crond服务会定期(默认每分钟检查一次)检查系统中是否有要执行的任务工作,如果有,便会根据其预先设定的定时任务规则自动执行该定时任务工作,这个crond定时任务服务就相当于我们平时早起使用的闹钟一样。

1.2 开始做linux开机自启动服务优化

必须最低保留的启动服务:

crond:定时任务服务

network:网络服务

rsyslog:日志服务

sshd:远程链接服务

sysstat:系统监控服务(涉及一系列监控工具)

1.2.1小结

  • 常用服务,必须开机启动的服务crond,sshd,network,rsyslog,sysstat
  • 命令拼接(awk/sed)>品良>循环

1.2.2 为什么要使用Crond定时任务?

  • 为什么要使用定时任务呢?
  • 我们举个例子说明:例如,我们的数据库或者代码程序需要每天晚上0点做一次全备份,这样每天夜里都需要执行的周期性工作,如果要让人操作的话,就得每天半夜爬起来,然后登录系统执行任务,执行完接着睡觉。另外,执行任务的过程也可能持续几个小时,这样一来,一个晚上我们就都不用睡觉了,这样显然是不行的。那么有什么办法来解决这个周期性的执行任务需求呢?
  • 这就是linux系统的定时任务Crond,这相当于我们平时生活中的闹钟功能,每天晚上提前设置定时,早晨按时叫醒你。

1.2.3 linux系统的定时任务

linux系统中定时任务调度的工作可以分为以下两种情况:

,linux系统自身定期执行的任务工作:系统周期性自行执行的任务工作,如轮询系统日志,备份系统数据,清理系统缓存等,这些任务无需我们人为干预。

  1. [root@chensiqi1 ~]# ls -l /var/log/messages* #系统的日志
  2. -rw-------. 1 root root 4680 Feb 4 07:41 /var/log/messages
  3. -rw-------. 1 root root 191470 Dec 25 05:44 /var/log/messages-20161225
  4. -rw-------. 1 root root 1492005 Jan 2 06:51 /var/log/messages-20170102
  5. -rw-------. 1 root root 633737 Jan 8 08:02 /var/log/messages-20170108
  6. -rw-------. 1 root root 1594144 Feb 4 04:25 /var/log/messages-20170204
  7. [root@chensiqi1 ~]#
  1. [root@chensiqi1 ~]# ls -l /var/log/secure* #用户登录日志
  2. -rw-------. 1 root root 872 Feb 4 07:13 /var/log/secure
  3. -rw-------. 1 root root 5254 Dec 25 05:44 /var/log/secure-20161225
  4. -rw-------. 1 root root 64822 Jan 2 06:27 /var/log/secure-20170102
  5. -rw-------. 1 root root 14187 Jan 8 07:22 /var/log/secure-20170108
  6. -rw-------. 1 root root 13540 Jan 12 00:17 /var/log/secure-20170204
  7. [root@chensiqi1 ~]#

,用户执行的任务工作:某个用户或系统管理员定期要做的任务工作,例如每隔5分钟和互联网上时间服务器进行时间同步(这是安装系统基础优化部分的内容),每天晚上0点备份网站站点数据及数据库数据,一般这些工作需要由每个运维自行设置才行。

例如:服务器时间同步

  1. [root@chensiqi1 ~]# crontab -l
  2. */5 * * * * /sbin/ntpdate time.windows.com >/dev/null 2>&1
  3. [root@chensiqi1 ~]#

用户执行的任务工作,也就是我们运维管理人员执行的任务工作,因此,这个用户执行的任务是我们今天讨论的重点

1.2.4 linux系统下定时任务软件的种类

严格的说,linux系统下的定时任务软件还真不少,例如:at,crontab,anacron

假如:某天晚上需要处理一个任务,仅仅是这一天的晚上,属于突发性的工作任务。要执行at命令,还需要启动一个名为atd的服务才行,在实际工作中,还真没碰到需要用到它的时候。因此,建议大家不要深入研究了,到此我们讲解到这里为止即可。

  • crontab(命令):正如前面所说的这个命令可以周期性的执行任务工作,例如:每五分钟做一次服务器时间同步。要执行crontab这个命令,也需要启动一个服务crond才行,这个crontab命令是生产工作中最常用到的命令,请大家务必掌握。

1,开机自启动crond服务

  1. [root@chensiqi1 ~]# chkconfig --list | grep crond
  2. crond 0:off 1:off 2:on 3:on 4:on 5:on 6:off
  3. [root@chensiqi1 ~]#

2,此时此刻服务的状态(查看,开启,关闭)

  1. [root@chensiqi1 ~]# /etc/init.d/crond status
  2. crond (pid 1139) is running...
  3. [root@chensiqi1 ~]#

/etc/init.d 服务启动命令(脚本)

3,如何查看进程

ps -ef | grep crond

  • anacron:这个命令主要用于非7*24小时开机的服务器准备的,anacron并不能指定具体时间执行任务工作,而是以天为周期或者在系统每次开机后执行的任务工作。

    它会检测服务器停机期间应该执行,但是并没有进行的任务工作,并将该任务执行一遍。

小结提示:

1,我们所说的crond服务是运行的程序,而crontab是用来管理用户的定时任务(规则)的命令

2,crond服务是企业生产工作中常用的重要服务,at和anacron很少用,可以忽略

3,几乎每个服务器都会用到crond服务

4,上千服务器可以开发分布式定时任务项目方案(批量管理ansible/saltstack)

1.3 定时任务Crond使用说明

1.3.1 指令语法

crontab [-u user] { -l | -e | -r | -i }

查看系统帮助

man crontab

  1. [root@chensiqi1 ~]# crontab --help
  2. crontab: invalid option -- '-'
  3. crontab: usage error: unrecognized option
  4. usage: crontab [-u user] file
  5. crontab [-u user] [ -e | -l | -r ]
  6. (default operation is replace, per 1003.2)
  7. -e (edit user's crontab)
  8. -l (list user's crontab)
  9. -r (delete user's crontab)
  10. -i (prompt before deleting user's crontab)
  11. -s (selinux context)
  12. [root@chensiqi1 ~]#

crontab -l 查看当前用户的定时任务配置

  1. [root@chensiqi1 ~]# crontab -l
  2. */5 * * * * /sbin/ntpdate time.windows.com >/dev/null 2>&1

crontab -e 进入当前用户的定时任务vim编辑模式

crontab -u 用户名 -l 查看指定用户的定时任务设置

  1. [root@chensiqi1 ~]# crontab -u root -l
  2. */5 * * * * /sbin/ntpdate time.windows.com >/dev/null 2>&1
  3. [root@chensiqi1 ~]# crontab -u chensiqi -l
  4. no crontab for chensiqi

1.3.2 指令说明

通过crontab我们可以在固定的间隔时间执行指定的系统指令或script脚本。时间间隔的单位可以是分钟,小时,日,月,周及以上的任意组合(注意:日和周不要组合)。crond服务通过crontab命令可以很容易的实现周期性的日志分析或数据备份等企业运维场景工作

1.3.3 使用者权限及定时任务文件

文件 说明
/etc/cron.deny(拒绝) 该文件中所列用户不允许使用crontab
/etc/cron.allow(允许) 该文件优先级高于cron.deny(默认不存在,一般不用)
/var/spool/cron/ 所有用户crontab配置文件默认都存在此目录,文件名以用户名命名
  1. [root@chensiqi1 ~]# cat /etc/cron.deny
  2. chensiqi
  3. [root@chensiqi1 ~]# su - chensiqi
  4. [chensiqi@chensiqi1 ~]$ crontab -l
  5. You (chensiqi) are not allowed to use this program (crontab)
  6. See crontab(1) for more information
  7. [chensiqi@chensiqi1 ~]$ crontab -e
  8. You (chensiqi) are not allowed to use this program (crontab)
  9. See crontab(1) for more information
  1. [root@chensiqi1 ~]# ls /var/spool/cron/
  2. root #默认是没有的,只有创建了定时任务才有
  3. [root@chensiqi1 ~]# cat /var/spool/cron/root
  4. */5 * * * * /sbin/ntpdate time.windows.com >/dev/null 2>&1

1.3.4 指令选项说明含义表

|参数|含义|指定示例|

|---|---|

|-l(字母)|查看crontab文件内容|crontab -l|

|-e|编辑crontab文件内容|crontab -e|

|-r|删除crontab文件内容(用的很少)|crontab -r|

|-u user|指定使用的用户执行任务|crontab -u chensiqi -l|

特别强调:-r参数在生产中很少用,没什么特殊需求必须要用-e进入编辑即可

补充:

crontab { -l | -e } 实际上就是在操作/var/spool/cron/当前用户这样的文件

使用crontab命令的优点:

1,crontab可以检查语法

2,输入方便

1.3.5 定时任务指令的使用格式

默认情况下,当用户建立定时任务规则后,该规则记录对应的配置文件会存在于/var/spool/cron中,其crontab配置文件对应的文件名与登录的用户名一致,如:root用户的定时任务配置文件为/var/spool/cron/root

Crontab定时任务的书写格式很简单,用户的定时任务规则一般分为6个段(每个段通过空格来分隔,系统的定时任务为/etc/crontab,分为7个段,空格来分隔),前五段为时间的设定段,第六段为所要执行的命令或脚本任务段

用户定时任务实例:

01 * * * * cmd #每小时的01分钟执行

02 04 * * * cmd #每天4点的02分钟执行

22 14 * * 00 cmd #每周日的14点22分执行

42 04 01 * * cmd #每月1日的4点42分执行

提示:

1,cmd为要执行的命令或脚本,例如:/bin/sh /server/scripts/chensiqi.sh

2,每个列之间必须要有一个空格。多个空格可以么?自己实践

1.3.6 crontab 语法格式中时间段的含义如下表

|段|含义|取值范围(整数)|

|--|--|

|第一段|代表分钟|00-59(00也可以是0)|

|第二段|代表小时|00-23|

|第三段|代表日,天|01-31|

|第四段|代表月份|01-12|

|第五段|代表星期,周几|0-7(0和7都代表星期日)|

提示:时间记忆口诀:分时日月周。取值范围记忆:正常日期时间范围,小学生都会的了

1.3.7 crontab 语法格式中特殊符号含义如下表

特殊符号 含义
* *号,表示任意时间都,实际就是“每”的意思
- 减号表示分隔符,表示一个时间范围,区间段,如17-19点,例如:每天的17,18,19点的00分执行任务。00 17-19 * * * cmd
逗号,表示分隔时段的意思例如每天的5点10点00分执行任务,00 5,10 * * * cmd
/n n代表数字,即“每隔n单位时间”,例如:每10分钟执行一次任务可以写成/10 * * * * cmd,其中,/10,*的范围是0-59,因此也可以写成0-59/10

1.3.8 学习画图来表达说明(亿图)

强调:这是学习态度的体现,这种态度极其重要,不要单纯理解技术,多结合画图,案例理解原理,记一次很久都忘不掉。

要学好linux运维请从排版画图开始

Linux实战教学笔记11:linux定时任务的更多相关文章

  1. Linux实战教学笔记04:Linux命令基础

    第四节:Linux命令基础 标签(空格分隔):Linux实战教学笔记 第1章 认识操作环境 root:当前登陆的用户名 @分隔符 chensiqi:主机名 -:当前路径位置 用户的提示符 1.1 Li ...

  2. Linux实战教学笔记08:Linux 文件的属性(上半部分)

    第八节 Linux 文件的属性(上半部分) 标签(空格分隔):Linux实战教学笔记 第1章 Linux中的文件 1.1 文件属性概述(ls -lhi) linux里一切皆文件 Linux系统中的文件 ...

  3. Linux实战教学笔记07:Linux系统目录结构介绍

    第七节 Linux系统目录结构介绍 标签(空格分隔):Linux实战教学笔记 第1章 前言 windows目录结构 C:\windows D:\Program Files E:\你懂的\精品 F:\你 ...

  4. Linux实战教学笔记06:Linux系统基础优化

    第六节 Linux系统基础优化 标签(空格分隔):Linux实战教学笔记-陈思齐 第1章 基础环境 第2章 使用网易163镜像做yum源 默认国外的yum源速度很慢,所以换成国内的. 第一步:先备份 ...

  5. Linux实战教学笔记12:linux三剑客之sed命令精讲

    第十二节 linux三剑客之sed命令精讲 标签(空格分隔): Linux实战教学笔记-陈思齐 ---更多资料点我查看 1,前言 我们都知道,在Linux中一切皆文件,比如配置文件,日志文件,启动文件 ...

  6. Linux实战教学笔记18:linux三剑客之awk精讲

    Linux三剑客之awk精讲(基础与进阶) 标签(空格分隔): Linux实战教学笔记-陈思齐 快捷跳转目录: * 第1章:awk基础入门 * 1.1:awk简介 * 1.2:学完awk你可以掌握: ...

  7. Linux实战教学笔记19:Linux相关网络知识梳理

    第十九节 Linux相关网络知识梳理 标签(空格分隔): Linux实战教学笔记-陈思齐 一,前言 一个运维有时也要和网络打交道,所以具备最基本的网络知识,对一个运维人员来说是必要的.但,对于我们的工 ...

  8. Linux实战教学笔记08:Linux 文件的属性(下半部分)

    第八节 Linux 文件的属性(下半部分) 标签(空格分隔): Linux教学笔记 ---更多相关资料请点我查看 第1章 链接的概念 在linux系统中,链接可分为两种:一种为硬链接(Hard Lin ...

  9. Linux实战教学笔记

    Linux实战教学笔记01:计算机硬件组成与基本原理 Linux实战教学笔记02:计算机系统硬件核心知识 Linux实战教学笔记03:操作系统发展历程及系统版本选择 Linux实战教学笔记04:Lin ...

随机推荐

  1. Python快速入门(4)

    输入输出: open() read() readine() readlines() write() pickle模块可以做序列化操作,持久保持对象的信息. 我们可以很容易的读写文件中的字符串.数值就要 ...

  2. bzoj3531——树链剖分+动态开点线段树

    3531: [Sdoi2014]旅行 Time Limit: 20 Sec  Memory Limit: 512 MB Description S国有N个城市,编号从1到N.城市间用N-1条双向道路连 ...

  3. Struts2之i18N国际化

    对于i18n其实没有太多内容,一般的公司用不到这些内容,除非是跨国公司,但即便是跨国公司也不一定会使用i18n来进行国际化处理,所以本篇内容仅供大家了解,不做深入的探讨,希望通过本篇内容,可以帮助大家 ...

  4. git commit -m与-am的区别

    前面的话 使用git commit -am是不是就可以完全不使用git add命令呢?不是 理论 要了解git commit -m与git commit -am的区别,首先要明白它们的定义 字面解释的 ...

  5. AngularJS1.X学习笔记3-内置模板指令

    前面学习了数据绑定指令,现在开始学习内置模板指令.看起来有点多,目测比较好理解.OK!开始! 一.ng-repeat 1.基本用法 <!DOCTYPE html> <html lan ...

  6. 使用VS2015将解决方案同步更新到Github上

    如今开源已经是一种趋势与潮流了,今天就来谈一谈如何将利用VS将我们的解决方案同步更新到Github上. 第一步:登录自己的Github账号(没有的自行注册). 我的Github登录后的界面: 第二步: ...

  7. Android Studio 安装后首次启动的 Config path ...... is invalid 问题(转)

    原文链接:http://m.blog.csdn.net/blog/hnust_xiehonghao/46127775 1. 问题描述: 安装好Android Studio后,启动时弹出如下信息: Co ...

  8. Bar 3D 和Pie 3D的统计图形

    最近在做一个关于图形统计的界面,主要用到的是Dev控件ChartControl(功能很强大,能解决基本和复杂图形统计问题). ChartControl主要有Diagram.Series.Legend三 ...

  9. Vuex随笔

    最近在项目中使用到了vuex,但是在配合vue使用时,也还是遇到了不少的问题,最终还是解决了问题,因此写一篇随笔来记录期间遇到的问题吧 项目概要: Vuex中所储存的的状态如下: Vue中:有一个ta ...

  10. 初步了解关于js跨域问题

    js跨域问题是指在js在不同的域中进行数据传输或者数据通信,比如通过ajax向不同的域请求数据(说到ajax,不可避免的就会遇到两个问题:一是ajax是如何传递数据的?二是ajax是如何实现跨域的?) ...