zoukankan      html  css  js  c++  java
  • linux进阶之计划任务及压缩归档

    本节内容

    1. at一次性计划任务(atd

          at 时间点 command

              ctrl+d:保存

                  -l:查看计划任务

                  atrm:删除计划任务

                  atq:查看计划任务

           2. crontab周期性计划任务(crond)

                  -l 查看计划任务

                  -u:指定用户

                  -r:删除计划任务

                  -e:编辑计划任务

                  格式:

                  *    *     *   *     * command && command

                             

                  0-59 0-23 1-31  1-12  0-61-7

                         *:表示范围内的所有

                     - 表示一段范围

                     /:每隔多少

                     ,:表示间隔

           3. tar压缩归档

                  -c:创建压缩包

                  -v:显示过程

                  -z:采用gzip压缩

                  -f:指定文件名

                  -x:解压

                  -j:采用bzip2压缩

                  常用组合:

                         创建:czvf

                         解压:xzvf



    计划任务

    定时执行我们预先设置的指令

    计划任务的作用:是做一些周期性的任务,在生产中的主要用来定期备份数据

    定时任务的安排方式:

    一次性计划任务:执行单个任务之后就会自动退出

    周期性计划任务:每隔一定的周期就要重复来做这个事情

    一、at一次性计划任务

    at语法格式:at 时间

    1、需要下载at程序

    第一步:下载at一次性计划任务

    [root@renyz08 ~]# yum install at -y

    第二步:启动atd服务并设置为开机自启

    [root@renyz08 ~]# systemctl restart atd

    [root@renyz08 ~]# systemctl enable atd

    常用选项:

    -l 列出at一次性计划任务(atq的别名)

    -r 删除一次性计划任务(atrm的别名)

    -d 删除一次性计划任务(atrm的别名)

    -c 查看计划任务详情(cat连接命令行中列出的作业并输出到标准输出)

    atq  列出at一次性计划任务(queue排队,队列)

    atrm 删除一次性计划任务

    2、设置at计划任务

    例子1:在18:48分在/tmp目录下创建at_test文件

    第一步:设置计划任务

    [root@renyz08 tmp]# date

    2019 07 15 星期一 18:50:12 CST

    [root@renyz08 tmp]# at 18:55         #at使用格式:at 时间

    at> touch at_test       #CMD1

    at> mkdir at_test2       #CMD2

    at> <EOT>       #按住ctrl+D

    job 3 at Mon Jul 15 18:55:00 2019

    第二步:查看at计划任务

    方法一:

    [root@renyz08 tmp]# at -l

    3    Mon Jul 15 18:55:00 2019 a root

    方法二:

    [root@renyz08 tmp]# atq

    3    Mon Jul 15 18:55:00 2019 a root

    第三步:再次查看计划任务

    [root@renyz08 tmp]# atq    #一次性计划任务执行成功之后就会退出

    [root@renyz08 tmp]# ls    #计划任务已经生效

    at_test

    at_test2

    2、删除一次性计划任务

    怎么删除计划任务?(先创建多个计划任务)

    [root@renyz08 ~]# at 19:00

    at> touch /tmp/at_test3

    at> <EOT>

    job 4 at Mon Jul 15 19:00:00 2019

    [root@renyz08 ~]# at 19:01

    at> touch /tmp/at_test4

    at> <EOT>

    job 5 at Mon Jul 15 19:01:00 2019

    [root@renyz08 ~]# at 19:02

    at> whoami     

    at> <EOT>

    job 6 at Mon Jul 15 19:02:00 2019

    [root@renyz08 ~]# atq

    4    Mon Jul 15 19:00:00 2019 a root

    5    Mon Jul 15 19:01:00 2019 a root

    6    Mon Jul 15 19:02:00 2019 a root

    删除一次性计划任务6

    [root@renyz08 ~]# atrm 6    #格式:atrm 任务序号

    [root@renyz08 ~]# atq   #再次查看,6任务已删除

    4    Mon Jul 15 19:00:00 2019 a root

    5    Mon Jul 15 19:01:00 2019 a root

    查看计划命令详情:

    [root@renyz08 ~]# atq

    7    Mon Jul 15 19:10:00 2019 a root

    [root@renyz08 ~]# at -c 7  #选项-c可查看计划命令详情

    touch at_test5   #打开后,在倒数第二行有显示计划命令的详情

    3at计划任务的特殊写法

    [root@renyz08 ~]# at 20:00 2018-10-1   在某天

    [root@renyz08 ~]# at now +10min   10分钟后执行

    [root@renyz08 ~]# at 17:00 tomorrow   明天下午5点执行

    [root@renyz08 ~]# at 6:00 pm +3 days   3天以后的下午6点执行

    二、crontab周期性计划任务

    定期周期性的执行预先设定的指令

    1、查看crond服务

    crond服务实现了周期性计划任务,需要确保crond服务正在运行,一般系统已经默认开启自启

    第一步:查看crond是否正在运行:

    [root@renyz08 ~]# ps aux | grep crond

    root       6514  0.0  0.1 126288  1640 ?        Ss   03:12   0:00 /usr/sbin/crond -n

    第二步:如果系统当中没有周期性计划任务:

    yum install cronie -y

    第三步:启动计划任务:

    systemctl restart crond

    第四步:查看crond生成文件

    [root@renyz08 ~]# rpm -ql cronie

    /etc/cron.d

    /etc/cron.deny

    /etc/sysconfig/crond

    /usr/bin/crontab

    /var/spool/cron

    2、查看crond主文件:

    [root@renyz08 ~]# vim /etc/crontab

    SHELL=/bin/bash   #指定shell解释器

    PATH=/sbin:/bin:/usr/sbin:/usr/bin  #指定命令在哪些路径下查找,计划任务命令需要写绝对路径!

    MAILTO=root  #发送邮件接收的用户/var/spool/mail/

    # For details see man 4 crontabs

    # Example of job definition:

    # .---------------- minute (0 - 59)

    # |  .------------- hour (0 - 23)

    # |  |  .---------- day of month (1 - 31)

    # |  |  |  .------- month (1 - 12) OR jan,feb,mar,apr ...

    # |  |  |  |  .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat

    # |  |  |  |  |

    # *  *  *  *  * user-name  command to be executed

    1* 指定分钟0-59

    2* 执行小时0-23

    3* 1-31

    4* 1-12

    5* 星期几 0-6

    CMD

    注意:crond最小的执行的单位是分钟!

    例子1

    * * * * * /usr/sbin/reboot

    每天每分钟执行一次重启系统任务

    例子2:凌晨三点钟执行一次系统重启任务

    错误写法:

    * 3 * * * /usr/sbin/reboot

    注意:表示每天的三点钟开始,会执行60次系统重启

    正确写法:

    0 3 * * * /usr/sbin/reboot

    总结:在周期性计划任务的时候要确保分钟要有数值,如果没有数值表示一个小时的60分钟之内都会执行相应的操作!

    例子3:星期四的凌晨2点钟重启系统

    0 2 * * 4 /usr/sbin/reboot

    例子4: 42号下午4点钟执行一次系统重启

    0 16 2 4 * /usr/sbin/reboot

    注意:在写天和周的时候一定要把握好时间!

    一般写天就不写周了,写周就不写天了!

    例子5:星期天晚上11点钟执行一次系统重启

    0 23 * * 0 /usr/sbin/reboot

    3、四个符号

    表示范围内的任意数值

    表示一定的范围。比如分上:45-50  45分到50分之间执行操作

    表示每隔多久执行操作 比如分上:*/10 表示每隔10分钟执行一次操作

    表示指定多个时间点 比如分上:4,35,54 表示在4分,35分钟,54分钟执行操作

    例子1:在每个月的4-10号之间凌晨三点钟执行一次系统重启操作

    0 3 4-10 * * /usr/sbin/reboot

    例子2:每天的凌晨23点各执行系统重启操作

    0 2-3 * * * /usr/sbin/reboot

    例子3:每天的凌晨2点钟,4点钟,10点钟执行一次系统重启操作

    0 2,4,10 * * * /usr/sbin/reboot

    例子4:凌晨210点每个小时重启一次系统

    10 2-10 * * * /usr/sbin/reboot

    4、在linux系统当中编写计划任务:

    选项:

    -e 编写计划任务(edit

    -r 删除计划任务(remove

    -l 查询计划任务(Displays the current crontab on standard output

    -u 指定给那个用户创建计划任务

    例子11942/tmp下创建文件at_test5

    [root@renyz08 ~]# crontab -e

    42 19 * * * /usr/bin/touch /tmp/at_test5

    验证:

    [root@renyz08 ~]# ls /tmp

    at_test

    at_test2

    at_test3

    at_test4

    at_test5

    例子2:以时间命名文件

    [root@renyz08 ~]# touch /tmp/`date "+%F_%T"`.txt

    [root@renyz08 ~]# ls /tmp

    2019-07-15_19:44:24.txt

    例子3:在计划任务当中创建以时间命名的文件,每分钟创建一个

    * * * * * /usr/bin/touch /tmp/`date "+\%F_\%T"`.txt

    注意:在计划任务当中%前面都要加一个进行转义

    我们在写计划任务的时候其实本质就是创建了一个和用户同名的文件!

    [root@renyz08 ~]# cat /var/spool/cron/root

    42 19 * * * /usr/bin/touch /tmp/at_test5

    例子4:给ren2用户创建计划任务

    [root@renyz08 ~]# crontab -e -u ren2   #在给其他用户创建计划任务的时候需要使用-u选项指定用户名

    [root@renyz08 ~]# crontab -l -u ren2   #查看的时候也是需要-u选项指定用户名

    在该路径下创建了一个和用户名同名的文件:

    [root@renyz08 ~]# cat /var/spool/cron/ren2

    0 20 * * * /usr/bin/touch /tmp/at_test6

    5、删除计划任务

    a. 删除所有的计划任务

    [root@renyz08 ~]# crontab -l

    42 19 * * * /usr/bin/touch /tmp/at_test5

    [root@renyz08 ~]# crontab -r  #使用-r选型会把所有的计划任务都删掉

    [root@renyz08 ~]# crontab -l

    no crontab for root

    b. 删除单条计划任务

    [root@renyz08 ~]# crontab -l

    #* * * * * /usr/bin/touch /tmp/`date "+\%T"`.txt1

    * * * * * /usr/bin/touch /tmp/`date "+\%T"`.txt2

    * * * * * /usr/bin/touch /tmp/`date "+\%T"`.txt3

    * * * * * /usr/bin/touch /tmp/`date "+\%T"`.txt4

    验证:

    [root@renyz08 ~]# ls /tmp

    20:01:02.txt2

    20:01:02.txt3

    20:01:02.txt4

    6、计划任务使用管控

    [root@renyz08 ~]# ls /etc/cron.deny(否认,拒绝)

    例子1:不让ren3ren4ren5用户使用crond服务

    [root@renyz08 ~]# vim /etc/cron.deny

    [root@renyz08 ~]# cat /etc/cron.deny

    ren3

    ren4

    ren5

    切换至ken用户使用crontab创建计划任务被拒绝!

    [root@renyz08 ~]# su - ren3

    上一次登录:六 7 13 11:32:37 CST 2019pts/1

    [ren3@renyz08 ~]$ crontab -e

    You (ren3) are not allowed to use this program (crontab)

    See crontab(1) for more information

    7、定时执行脚本

    [root@renyz08 ~]# ls -ld /etc/cron.*

    drwxr-xr-x. 2 root root 21 Apr  4 06:47 /etc/cron.d

    drwxr-xr-x. 2 root root 42 Apr  4 06:47 /etc/cron.daily  #每天执行一次

    drwxr-xr-x. 2 root root 22 Jun 10  2014 /etc/cron.hourly  #每小时执行一次

    drwxr-xr-x. 2 root root  6 Jun 10  2014 /etc/cron.monthly #每月执行一次

    drwxr-xr-x. 2 root root  6 Jun 10  2014 /etc/cron.weekly  #每周执行一次

    如何使用?

    把脚本放到相应的目录之下,就会在相应的时间定期执行

    但是需要注意的是脚本必须有执行权限

    [root@renyz08 ~]# cat test.sh   #编写脚本

    #!/bin/bash

    echo "123" >> /root/test

    [root@renyz08 ~]# cp test.sh /etc/cron.hourly/  #脚本在该目录之下会每小时执行一次

    [root@renyz08 ~]# chmod +x /etc/cron.hourly/test.sh   #必须加执行权限

    定时任务执行的两种方式:

    1. crontab -e

    2. 脚本放在相应的/etc/cron.*

    三、tar压缩归档

    定义:归档(archiving)就是将许多文件(或目录)打包成一个文件

    目的:归档的目的就是方便备份、还原及文件的传输操作

    功能:将多个文件(也可能包括目录,因为目录本身也是文件)放在一起存放到一个磁带或磁盘归档文件中。并且将来可以根据需要只还原归档文件中的某些指定的文件

    常用选项:

    c 创建压缩归档包(create

    z 使用gzip进行压缩

    j 使用bzip2进行压缩(文件压缩的更小)

    v 显示压缩归档的过程(verbose冗长的,啰嗦)详细显示处理的文件)

    f 指定归档名(file

    x 解压所归档包(extract提取,抽出)

    t 列出包文件(list

    -C 指定解压包的位置(directory DIR转到指定的目录)

    --exclude 压缩时除去部分内容(压缩时不压缩个别文件)

    常用选项组合:

    创建压缩归档包:czvf

    解压缩归档包:xzvf   xf

    例子1:创建压缩归档tar

    [root@renyz08 tmp]# tar czvf at_test.tar.gz ./**  #对当前路径下的所有文件进行打包,包文件名为text.tar.gz

    例子2:解压压缩归档tar

    方法一:

    [root@renyz08 tmp]# tar xzvf at_test.tar.gz

    方法二:

    [root@renyz08 tmp]# tar xf at_test.tar.gz

    例子3:查看包文件

    [root@renyz08 tmp]# tar tf at_test.tar.gz

    例子4:打包当前目录下的文件并以时间进行命名

    [root@renyz08 tmp]# tar czvf `date "+%f"`.tar.ga *

    例子5:每天凌晨3点钟打包一次/test下所有的文件

    [root@renyz08 tmp]# crontab -e

    0 3 * * * /usr/bin/tar czf /tmp/`date "+\%F"`.tar.ga /test

    例子6:解压包到指定的目录

    [root@renyz08 test]# tar xf at_test.tar.gz -C /root

    例子7:创建tar包排除某些文件

    [root@renyz08 test]# tar czvf at_test.tar.gz * --exclude=test*

    [root@renyz08 test]# tar tf *tar.gz

  • 相关阅读:
    javaweb一
    javaweb三、JDBC访问数据库
    Java学习笔记十
    socket qt基础版本
    QT+VS+添加console 解决方案
    QT创建TCP Socket通信
    左值引用与右值引用
    STL 中 map和set的区别
    C++中STL哈希表介绍
    虚函数总结
  • 原文地址:https://www.cnblogs.com/renyz/p/11191453.html
Copyright © 2011-2022 走看看