linux定时任务及练习

内容预览:

    第1章 定时任务

    1.1 什么是定时任务

    相当于闹钟每天叫你起床

    设定一个时间去做某件事

    1.2 系统定时任务

    [[email protected] ~]# 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 系统定时任务的配置文件之一

    系统定时任务日志切割
    

    [[email protected]
    ~]# 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
    

    [[email protected]
    ~]# /etc/init.d/crond status

    crond (pid
    1572) is running...

    方法2

    [[email protected]
    ~]# 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是否开机自启动

    [[email protected] ~]# 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、命令
    

    [[email protected]
    ~]# echo zeq >/tmp/name.log

    [[email protected]
    ~]# cat /tmp/name.log

    zeq

    2、书写定时任务

    [[email protected]
    ~]# crontab -e

    #print name zhangenqing at 2018.xx.xx

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

    查看定时任务

    [[email protected]
    ~]# crontab -l

    #print name zhangenqing at 2018.xx.xx

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

    3、查看定时任务日志

    [[email protected]
    ~]# 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、检查文件内容

    [[email protected]
    ~]# 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

    命令

    [[email protected] ~]# tar zcf  /tmp/etc-`date +%F_%T`.tar.gz  /etc/
    

    tar: Removing leading `
    /' from member names

    tar: Removing leading `
    /' from hard link targets

    [[email protected]
    ~]# 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 书写脚本

    [[email protected] ~]# cat /server/scripts/bak-etc.sh
    

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

    测试脚本

    [[email protected]
    ~]# sh /server/scripts/bak-etc.sh

    tar: Removing leading `
    /' from member names

    tar: Removing leading `
    /' from hard link targets

    [[email protected]
    ~]# 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

    书写定时任务

    [[email protected] ~]# crontab  -e
    

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

    查看定时任务内容

    [[email protected]
    ~]# crontab -l

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

    [[email protected]
    ~]# 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

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

    [[email protected] ~]# 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.3 每两个小时打包备份 /etc/rc.local /etc/hosts /etc/fstab /etc/sysconfig 备份到/backup目录

    书写脚本
    

    [[email protected]
    ~]# cat /server/scripts/bak-conf.sh

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

    书写定时任务

    [[email protected]
    ~]# 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.3.1 邮件软件关闭 , 定时任务不断给你发送邮件 存放在邮件的临时目录 等待发送

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

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

    2.4.1 查看ip

    [[email protected] ~]# hostname -I
    

    10.0.0.201

    2.4.2 修改变量ip

    [[email protected] ~]# ip=`hostname -I|awk ''`

    2.4.3 查看变量

    [[email protected] ~]# echo $ip
    

    10.0.0.201

    2.4.4 测试命令

    创建ip目录
    

    [[email protected]
    ~]# mkdir -p /backup/$ip

    [[email protected]
    ~]# 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

    测试命令

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

    tar: Removing leading `
    /' from member names

    tar: Removing leading `
    /' from hard link targets

    [[email protected]
    ~]# 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 书写脚本

    [[email protected] ~]# cat /server/scripts/bak-etc-adv.sh
    

    ip
    =`hostname -I|awk ''`

    mkdir
    -p /backup/$ip

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

    2.4.6 书写定时任务

    [[email protected] ~]# 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 显示脚本执行过程

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

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

    [[email protected]
    ~]# 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定时任务及练习 的全部内容

    本站部分内容来源于互联网和用户投稿,如有侵权请联系我们删除,谢谢^^
    Email:[email protected]


    0 条回复 A 作者 M 管理员
      所有的伟大,都源于一个勇敢的开始!
    欢迎您,新朋友,感谢参与互动!欢迎您 {{author}},您在本站有{{commentsCount}}条评论