第1章 定时任务

1.1 什么是定时任务

相当于闹钟每天叫你起床

设定一个时间去做某件事

1.2 系统定时任务

[root@zeq ~]# ll -d /etc/cron*

drwxr-xr-x. 2 root root 4096 Jul 10 18:24 /etc/cron.d 

drwxr-xr-x. 2 root root 4096 Jul 10 18:24 /etc/cron.daily    系统定时任务每天运行这个目录里的内容

drwxr-xr-x. 2 root root 4096 Jul 10 18:23 /etc/cron.hourly   系统定时任务每小时运行这个目录里的内容

drwxr-xr-x. 2 root root 4096 Jul 10 18:24 /etc/cron.monthly  系统定时任务每月运行这个目录里的内容

drwxr-xr-x. 2 root root 4096 Sep 27  2011 /etc/cron.weekly   系统定时任务每周运行这个目录里的内容

-rw-------. 1 root root    0 Aug 24  2016 /etc/cron.deny     系统定时任务的黑名单

-rw-r--r--. 1 root root  457 Sep 27  2011 /etc/crontab       系统定时任务的配置文件之一
系统定时任务日志切割

[root@zeq ~]# ll /var/log/messages* /var/log/secure*

-rw-------  1 root root   1132 Aug  7 15:34 /var/log/messages

-rw-------. 1 root root 110667 Jul 12 07:11 /var/log/messages-20180520

-rw-------. 1 root root  98541 Jul 30 12:29 /var/log/messages-20180730

-rw-------  1 root root   1273 Jul 31 03:39 /var/log/messages-20180807

-rw-------  1 root root   6131 Aug  8 17:20 /var/log/secure

-rw-------. 1 root root  17996 May 20 03:30 /var/log/secure-20180520

-rw-------. 1 root root  46696 Jul 30 13:06 /var/log/secure-20180730

-rw-------  1 root root   5764 Aug  7 09:10 /var/log/secure-20180807

1.3 用户的定时任务

crontab -l 查看用户的定时任务

crontab -e 编辑用户的定时任务

/var/spool/cron/root   root用户的定时任务

crontab -l  =  cat /var/spool/cron/root

crontab -e  =  vi /var/spool/cron/root

1.3.1 为什么使用crontab

1、 有语法检查功能

2、 方便

1.3.2 检查定时任务是否运行

定时任务服务 crond

方法1

[root@zeq ~]# /etc/init.d/crond status

crond (pid  1572) is running...

方法2

[root@zeq ~]# ps -ef |grep crond

root       1572      1  0 Aug07 ?        00:00:00 crond

root      27470  26990  0 17:30 pts/2    00:00:00 grep --color crond

1.3.3 查看crond是否开机自启动

[root@zeq ~]# chkconfig |grep crond

crond          0:off   1:off   2:on    3:on    4:on    5:on    6:off

1.4 定时任务的相关目录

/etc/spool/cron   定时任务的配置文件

/var/log/cron     定时任务的日志文件

/etc/cron.deny    定时任务的黑名单

1.5 定时任务基本格式

分时日月周

注意:周几和日期不能同时使用 如:2020年2月28星期六

例:

每天的上午8点30分,来学校上车(go to school)

30 08 * * * go to school

每天晚上12点准时,回家自己开车(go to bed)

00  0 * * *   go to bed

1.6 定时任务中常用符号

*     每

*/n   每隔n久

-     几点到几点

,     分割

1.7 定时任务测试

1、命令

[root@zeq ~]# echo  zeq >/tmp/name.log

[root@zeq ~]# cat /tmp/name.log

zeq

2、书写定时任务

[root@zeq ~]# crontab -e

#print name zhangenqing at 2018.xx.xx

* * * * * echo zeq >> /tmp/name.log

查看定时任务

[root@zeq ~]# crontab -l

#print name zhangenqing at 2018.xx.xx

* * * * * echo zeq >> /tmp/name.log

3、查看定时任务日志

[root@zeq ~]# tail -3 /var/log/cron

Aug  8 19:36:23 oldboy50 crontab[27563]: (root) END EDIT (root)

Aug  8 19:37:01 oldboy50 crond[1572]: (root) RELOAD (/var/spool/cron/root)

Aug  8 19:37:01 oldboy50 CROND[27572]: (root) CMD (echo zeq >> /tmp/name.log)

4、检查文件内容

[root@zeq ~]# cat /tmp/name.log

zeq

zeq

1.8 定时任务书写流程

1.8.1 第一个里程碑

命令行测试,把你的名字显示到文件中

1.8.2 第二个里程碑

把命令放到脚本中

1.8.3 第三个里程碑

测试脚本是否可以使用

1.8.4 第四个里程碑

书写定时任务

  1. 每分钟执行
  2. 改为需要的时间

1.8.5 第五个里程碑

检查结果

  1. 查看定时任务的日志
  2. 查看命令是否执行成功

第2章 定时任务练习

2.1 每天晚上12点打包备份/etc目录到/tmp下面 脚本

2.1.1 命令

[root@zeq ~]# tar zcf  /tmp/etc-`date +%F_%T`.tar.gz  /etc/

tar: Removing leading `/' from member names

tar: Removing leading `/' from hard link targets

[root@zeq ~]# ll /tmp/

total 9528

-rw-r--r-- 1 root root 9752749 Aug  9 15:26 etc-2018-08-09_15:26:26.tar.gz

2.1.2 书写脚本

[root@zeq ~]# cat /server/scripts/bak-etc.sh

tar zcf  /tmp/etc-`date +%F_%T`.tar.gz  /etc/

测试脚本 [root@zeq ~]# sh /server/scripts/bak-etc.sh tar: Removing leading `/' from member names tar: Removing leading `/' from hard link targets [root@zeq ~]# ll /tmp/ total 19056 -rw-r--r-- 1 root root 9752749 Aug 9 15:26 etc-2018-08-09_15:26:26.tar.gz -rw-r--r-- 1 root root 9752749 Aug 9 15:29 etc-2018-08-09_15:29:23.tar.gz 

2.1.3 书写定时任务

[root@zeq ~]# crontab  -e

00 00 * * * /bin/sh /server/scripts/bak-etc.sh >/dev/null 2>&1

查看定时任务内容

[root@zeq ~]# crontab -l

00 00 * * * /bin/sh /server/scripts/bak-etc.sh >/dev/null 2>&1

[root@zeq ~]# ll /tmp/

total 28584

-rw-r--r-- 1 root root 9752749 Aug  9 15:26 etc-2018-08-09_15:26:26.tar.gz

-rw-r--r-- 1 root root 9752749 Aug  9 15:29 etc-2018-08-09_15:29:23.tar.gz

-rw-r--r-- 1 root root 9752749 Aug  9 15:41 etc-2018-08-09_15:41:42.tar.gz

2.1.4 根据要求的时间修改定时任务时间

[root@zeq ~]# crontab -l

00 00 * * * /bin/sh /server/scripts/bak-etc.sh >/dev/null 2>&1

2.1.5 定时任务中-命令或脚本结果(正确及错误)定向

到黑洞(>/dev/null 2>&1)或追加到文件中 >>/tmp/zeq.txt 2>&1

2.2 企业案列

如果定时任务规则结尾不加>/dev/null 2>&1或者追加到文件中>>/tmp/oldboy 2>&1,很容易导致硬盘inode空间被占满,从而系统服务不正常。

2.2.1 定时任务不断给你发送邮件

You have new mail in /var/spool/mail/root

2.2.2 邮件软件关闭 , 定时任务不断给你发送邮件 存放在邮件的临时目录 等待发送

inode用光了 定时任务书写不规范导致的

2.3 每两个小时打包备份 /etc/rc.local /etc/hosts /etc/fstab /etc/sysconfig 备份到/backup目录

书写脚本

[root@zeq ~]# cat /server/scripts/bak-conf.sh

tar zchf  /backup/conf-`date +%F_%T`.tar.gz   /etc/rc.local  /etc/hosts /etc/fstab  /etc/sysconfig/

书写定时任务

[root@zeq ~]# crontab -l

00 00 * * * /bin/sh /server/scripts/bak-etc.sh >/dev/null 2>&1

00 */2 * * * sh  /server/scripts/bak-conf.sh >/dev/null 2>&1

2.4 每天晚上12点打包备份/etc/目录 备份到 /backup下面  备份到/backup/10.0.0.200

2.4.1 查看ip

[root@zeq ~]# hostname -I

10.0.0.201

2.4.2 修改变量ip

[root@zeq ~]# ip=`hostname -I|awk '{print $1}'`

2.4.3 查看变量

[root@zeq ~]# echo $ip

10.0.0.201

2.4.4 测试命令

创建ip目录

[root@zeq ~]# mkdir -p /backup/$ip

[root@zeq ~]# ll /backup/

total 136

drwxr-xr-x  2 root root  4096 Aug  9 16:20 10.0.0.201

-rw-r--r--  1 root root 61485 Aug  9 15:56 conf-2018-08-09_15:56:52.tar.gz

-rw-r--r--  1 root root 61485 Aug  9 16:00 conf-2018-08-09_16:00:01.tar.gz

-rw-r--r--. 1 root root   609 Jul 12 07:49 conf.tar.gz

测试命令

[root@zeq ~]# tar zcf /backup/$ip/etc-`date  +%F_%T`.tar.gz   /etc/

tar: Removing leading `/' from member names

tar: Removing leading `/' from hard link targets

[root@zeq ~]# ll /backup/10.0.0.201/

total 9528

-rw-r--r-- 1 root root 9752749 Aug  9 16:21 etc-2018-08-09_16:21:47.tar.gz

2.4.5 书写脚本

[root@zeq ~]# cat /server/scripts/bak-etc-adv.sh

ip=`hostname -I|awk '{print $1}'`

mkdir -p /backup/$ip

tar zcf /backup/$ip/etc-`date  +%F_%T`.tar.gz   /etc/

2.4.6 书写定时任务

[root@zeq ~]# crontab -l

00 00 * * * /bin/sh /server/scripts/bak-etc.sh >/dev/null 2>&1

00 */2 * * * sh  /server/scripts/bak-conf.sh >/dev/null 2>&1

00 00 * * * sh /server/scripts/bak-etc-adv.sh >/dev/null 2>&1

2.5 sh -x 显示脚本执行过程

以+开头的行 表示执行过程

不是以+开头的行 显示/输出

[root@zeq ~]# sh -x  /server/scripts/bak-etc.sh

++ date +%F_%T

+ tar zcf /tmp/etc-2018-08-09_16:29:34.tar.gz /etc/

tar: Removing leading `/' from member names

tar: Removing leading `/' from hard link targets
 

linux定时任务及练习的更多相关文章

  1. linux定时任务crond export变量问题

    linux定时任务crond export变量问题 1)我写了一个重启resin的脚本,由于业务原因,需要定时在某一个时间重启下resin服务器,于是就在 crontab里配置了如下内容: 50 17 ...

  2. Linux 定时任务

    200 ? "200px" : this.width)!important;} --> 介绍 本篇主要介绍Linux定时任务命令crontab的用法,crontab是定时任务 ...

  3. Linux 定时任务 Crontab命令 详解

    前言 crontab是Unix和Linux用于设置周期性被执行的指令,是互联网很常用的技术,很多任务都会设置在crontab循环执行,如果不使用crontab,那么任务就是常驻程序,这对你的程序要求比 ...

  4. 如何让Linux定时任务crond以秒为单位执行(如每隔3秒)

    需要用到Shell脚本每隔3秒钟去监控一个软件进程的运行状态,发现crond似乎只支持到分,不知道秒,怎么办呢? 第一种方法: 当然首先想到的是写一个触发的脚本,在触发脚本中使用死循环来解决此问题,如 ...

  5. 工作中linux定时任务的设置及相关配置

    工作中会用到定时任务,来处理以前采集来的数据备份, 每周一凌晨4点执行一次    0 4 * * */1 find/data/templatecdr/oracle/dcndatabak/ -type ...

  6. 如何让linux定时任务crontab按秒执行

    如何让linux定时任务crontab按秒执行? linux定时任务crontab最小执行时间单位为分钟如果想以秒为单位执行,应该如何设置呢?思路 正常情况是在crontab中直接定义要执行的任务,现 ...

  7. (转载)Linux定时任务cron配置

    (转载)http://blog.csdn.net/jbgtwang/article/details/7995801 实现linux定时任务有:cron.anacron.at等,这里主要介绍cron服务 ...

  8. linux定时任务crontab的设置

    linux定时任务crontab的设置http://www.blogjava.net/freeman1984/archive/2010/09/23/332715.html vi /etc/cronta ...

  9. Linux实战教学笔记11:linux定时任务

    第十一节 linux定时任务 标签(空格分隔): Linux实战教学笔记 ---更多资料点我查看 1.1 定时任务Crond介绍 Crond是linux系统中用来定期执行命令/脚本或指定程序任务的一种 ...

  10. linux定时任务访问url

    这次linux定时任务设置成功,也算是自己学习linux中一个小小的里程碑.:) 撒花撒花--- 以下操作均是在ubuntu 下操作的,亲测有效,其他的linux系统还望亲们自己去查.鞠躬感谢! 1 ...

随机推荐

  1. WebGL 踩坑系列-2

    需求:绘制斑点在球面上走过的路径 思路:要绘制斑点在球面上走过的路径,首先要记录上一时刻和当前时刻该斑点所在球面的位置,并且实时更新当前时刻的斑点位置和上一时刻的斑点位置. 为了方便,上一时刻斑点所在 ...

  2. Golang笔记(一)简洁的语言风格

    Golang笔记(一)简洁的语言风格 概述 Golang继承了很多C语言的风格,寡人使用了十几年C语言,切换到Golang时上手很快,并且随着深入的使用,越来越喜欢这门语言.Golang最直观的感受是 ...

  3. Chrome调式技巧

    1. 使用alert()调试 2.  console 基本输出 console.log("打印字符串"); console.error("我是个错误"); co ...

  4. c# cook book -Linq 关于Object的比较

    实际项目中经常用到 Union,Distinct,INtersect,Execpt对列表进行处理 一般来说要首先重写 Equals 和GetHashCode方法 首先看为重写的情况: namespac ...

  5. 特殊的流程控制语句break continue exit

    break语句可以结束当前的for.foreach.while.do-while.或者switch的执行. for($i=1; $i<10; $i++) { if($i == 5) { echo ...

  6. Python用户交互以及数据类型

    一.用户交互与格式化输出 1.用户交互 1.1什么是用户交互 程序等待用户输入的数据,程序执行完毕后为用户反馈信息. 1.2为何程序要与用户交互 为了让计算机像人类一样与用户交互 1.3使用方式 在p ...

  7. JavaScript流程语句

    循环语句 while 语法 while(条件表达式){ 循环执行代码段 } 流程 1.判断条件表达式的值 2.当值为true时,循环执行代码段 3.当值为false时退出循环体 特性 先检查条件,再执 ...

  8. 思科双出口+策略路由+NAT

    使用策略路由,从教育网出去的,在教育网接口进行nat转换 访问教育网资源平时走教育网,故障走电信 访问internat走电信线路,故障走教育网 服务器静态绑定教育网ip,不管电信.联通.教育网都走教育 ...

  9. MySQL入门很简单: 9 插入 更新与删除数据

    1. 插入数据:INSERT 1)为表的所有字段插入数据 第一种: 不指定具体的字段名 INSERT INTO 表名 VALUES(值1,值2,...,值n): 第二种:INSERT语句中列出所有字段 ...

  10. 初学React:JSX语法

    这是本人初学React做的学习笔记;讲的不是很深,只算是简单的进行介绍. 这是一个小系列.都是在同一个模板中搭建的,但是代码是不能正常执行的. >>第一个组件.js 'use strick ...