• Linux计划任务及压缩归档


    计划任务介绍 

    自动执行,备份数据。

    crontab          at  :

    at:它是一个可以处理仅执行一次就结束的指令

    crontab:它是会把你指定的工作或任务,比如:脚本等,按照你设定的周期一直循环执行下去

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

    计划任务的安排方式分两种:

      at : 一种是定时性的,也就是例行。就是每隔一定的周期就要重复来做这个事情

      crontab : 一种是突发性的,就是这次做完了这个事,就没有下一次了,临时决定,只执行一次的任务

    at一次性计划任务使用 

    at语法格式:at 时间

    1. 下载at程序

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

    2. 启动atd服务

    [root@ken ~]# systemctl restart atd
    [root@ken ~]# ps aux |  grep atd
    root       1166  0.0  0.1  25904   944 ?        Ss   17:52   0:00 /usr/sbin/at -f
    root       1168  0.0  0.1 112704   956 pts/0    S+   17:52   0:00 grep --color=auto atd

     atd 中的 d  :一般服务程序的守护程序(daemon)后缀。

    3. 设置at计划任务

     
    [root@ken ~]# at 10:00                       #如果是上午时间,后面加上am,比如9:20am
    at> touch /tmp/test1                         #输入你要执行的命令
    at> <EOT>                                    #按ctrl+d保存
    job 1 at Fri Mar  1 10:00:00 2019
    [root@ken ~]# at -l                          #查看计划任务
    1    Fri Mar  1 10:00:00 2019 a root
    [root@ken ~]# atq                            #查看计划任务
    1    Fri Mar  1 10:00:00 2019 a root
     # ls /tmp   

     在 at> 下,使用ctrl + backspace 执行命令输入的修改、删除操作。  执行完自动退出。

    4. 删除计划任务atrm

    [root@ken ~]# at -l                           #第一步查看计划任务,获取前面编号
    1    Fri Mar  1 10:00:00 2019 a root
    [root@ken ~]# atrm 1  (数字一)                 #删除计划任务加上编号
    [root@ken ~]# at -l                           #再次查看计划任务发现已经删除
     

    5. at计划任务的特殊写法

    [root@ken ~]# at 20:00 2018-10-1   在某天 
    [root@ken ~]# at now +10min   在 10分钟后执行
    [root@ken ~]# at 17:00 tomorrow   明天下午5点执行
    [root@ken ~]# at 6:00 pm +3 days   在3天以后的下午6点执行

     更改系统时间: # date -s "2019-3-18 10:44:00"

    crontab定时任务的使用(很重要)

    语法:#crontab -u  -e

             常用选项:

                      -l:list,列出指定用户的计划任务列表

                      -e:edit,编辑指定用户的计划任务列表,写入文件

                      -u:user,指定的用户名,如果不指定,则表示当前用户

                      -r:remove,删除指定用户的计划任务列表,删除文件

    1. 查看进程是否启动,,默认开启crond

    [root@ken ~]# ps aux | grep crond
    root        621  0.0  0.3 126284  1600 ?        Ss   17:46   0:00 /usr/sbin/crond -n
    root       1194  0.0  0.1 112704   956 pts/0    S+   18:05   0:00 grep --color=auto crond

    2. 查看计划任务

    [root@ken ~]# crontab -l
    no crontab for root

    工作时,接手一台服务器,首先 #  crontab -l  回车。查询有哪些计划任务。

    查看计划任务的格式 # vim /etc/crontab

    # which ls    查找 ls 的绝对路径。在 crontab 中要写绝对路径。

    3. 编写计划任务

      计划任务的规则语法格式,以行为单位,一行为一个计划:

      分 时 日 月 周 需要执行的命令

      执行的命令建议写成绝对路径的格式!

    例如:如果想要每天的0点0分执行reboot指令,则可以写成

      0 0 * * * reboot

    取值范围(常识):

      分:0~59

      时:0~23

      日:1~31

      月:1~12

      周:0~7,0和7表示星期天 

    四个符号:

    *:表示取值范围中的每一个数字

    -:做连续区间表达式的,要想表示1~7,则可以写成:1-7

    /:表示每多少个,例如:想每10分钟一次,则可以在分的位置写:*/10

    ,:(英文格式下的)表示多个取值,比如想在1点,2点6点执行,则可以在时的位置写:1,2,6

     For:

      问题1:每月1、10、22日的4:45重启network服务

        # which systemctl     通过此操作找到 systemctl 的绝对路径:/usr/bin/systemctl

        # crontab -e  回车

        45  4  1,10,22  *  *  /usr/bin/systemctl systemctl restart network    :wq  回车。(每月,周没有制定)

         # crontab -l     查看此计划任务。

        #  crontab -r    删除此计划任务。

      问题2:每周六、周日的1:10重启network服务

        # crontab -e  回车

           10  1  *  *  6,7  /usr/bin/systemctl  systemctl restart network   (日、月没有指定)

            #45  4  1,10,22  *  *  /usr/bin/systemctl systemctl restart network  (当计划任务命令中有这条不想执行时,可在前面加入#,变为注释)

          # crontab -l     查看此计划任务。默认显示 root 用户下的。

        # crontab -r  删除此计划任务,此时改为注释的不能被删除。

    For:

    # useradd ken (在 root 下创建ken 用户,可用 ls 查看)   

    # crontab -u ken -e   对新建用户进行操作。

    # crontab -l  -u ken    查看此计划任务(不能用 -l 直接查看)  or   # cat ken

      问题3:每天18:00至23:00之间每隔30分钟重启network服务

        */30  18-23  *  *  *  systemctl restart network  ( 日 月 周 没有指定)

      问题4:每隔两天的上午8点到11点的第3和第15分钟执行一次重启

        3,15  8-11  */2  *  *  reboot   (月和周没有指定)

    案例:真实测试案例,每1分钟往root家目录中的ken.txt中输一个123,为了看到效果使用追加输出

    [root@ken ~]# crontab -e                    #编写计划任务
    * * * * * /usr/bin/echo "123" >> /root/ken.txt  每分钟向ken.txt 中输入123     
    [root@ken ~]# tail -f ken.txt               #查看计划任务执行结果 #tail -f 监控执行
    123
    123

    4. 删除计划任务

    [root@ken ~]# crontab -l
    * * * * * echo "123" >> /root/ken.txt
    [root@ken ~]# crontab -r
    [root@ken ~]# crontab -l
    no crontab for root

    注意:在计划任务中,默认的最小单位就是分,不能再小了。

    关于备份

    每天晚上一点备份ken下的文件:

    # which tar       /usr/bin/tar

    以时间命名创建一个时间命名的文件:

    0 1 * * * /usr/bin/tar czf `touch $(date “+\%F”)`  /ken    ($加括号表示第二次操作)

    以时间命名一个文件 # touch `date "+%F"`       (反引号的为了显示日期)

              # touch $(date "+%T")    # ls 

    压缩归档 

    1. 掌握归档的定义:归档(archiving)就是将许多文件(或目录)打包成一个文件。
    2. 了解归档的目的:归档的目的就是方便备份、还原及文件的传输操作。
    3.  掌握tar命令的功能:将多个文件(也可能包括目录,因为目录本身也是文件)放在一起存放到一个磁带或磁盘归档文件中。并且将来可以根据需要只还原归档文件中的某些指定的文件。
    4. 掌握tar命令的常用选项:
    • c:创建一个新的tar文件。
    • t:列出tar文件中目录的内容。
    • x:从tar文件中抽取文件。
    • f:指定归档文件或磁带(也可能是软盘)设备(一般都要选)。
    • v:显示所打包的文件的详细信息,v是verbose的第1个字母。
    • z:使gzip压缩算法来压缩打包后的文件。
    • j:使用bzip2压缩算法来压缩打包后的文件(文件压缩的更小)

    常用选项组合:

      压缩归档:czvf

      解压:xzvf            (v :显示执行过程)

    1. 压缩归档

     
    [root@ken ~]# mkdir test
    [root@ken ~]# cd test
    [root@ken test]# touch {1..10}.txt
    [root@ken test]# tar czvf test.tar.gz ./*
    ./10.txt
    ./1.txt
    ./2.txt
    ./3.txt
    ./4.txt
    ./5.txt
    ./6.txt
    ./7.txt
    ./8.txt
    ./9.txt
    [root@ken test]# ls
    10.txt  2.txt  4.txt  6.txt  8.txt  test.tar.gz
    1.txt   3.txt  5.txt  7.txt  9.txt
     

    2. 解压

     
    [root@ken test]# rm -rf {1..10}.txt
    [root@ken test]# ls
    test.tar.gz
    [root@ken test]# tar xzvf test.tar.gz 
    ./10.txt
    ./1.txt
    ./2.txt
    ./3.txt
    ./4.txt
    ./5.txt
    ./6.txt
    ./7.txt
    ./8.txt
    ./9.txt
    [root@ken test]# ls
    10.txt  2.txt  4.txt  6.txt  8.txt  test.tar.gz
    1.txt   3.txt  5.txt  7.txt  9.txt
     

    可以加上-C制定解压到那个目录

     
    [root@ken test]# tar xvf test.tar.gz -C /tmp
    ./10.txt
    ./1.txt
    ./2.txt
    ./3.txt
    ./4.txt
    ./5.txt
    ./6.txt
    ./7.txt
    ./8.txt
    ./9.txt
    [root@ken test]# ls /tmp
    10.txt  2.txt  4.txt  6.txt  8.txt  ks-script-8jIJc_  yum.log
    1.txt   3.txt  5.txt  7.txt  9.txt  vmware-root
     
    .......懒人回复方式,请不要重复点击,以免页面崩溃......


    作者:WIU1905
    出处:http://www.cnblogs.com/WIU1905/
    本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。

  • 相关阅读:
    如何基于 String 实现同步锁?
    Web前端开发必不可少的9个开源框架
    Java知识,面试总会问到虚拟机,虚拟机类加载机制你懂吗?
    带你了解Java的序列化与反序列化
    想自己写框架?不了解Java注解机制可不行
    深度解密:Java与线程的关系
    手把手教你分析Mysql死锁问题
    windows server 2012 安装 DockerToolbox
    .NET CORE MVC  返回 JSON 数据
    .net core ajax提交Controller接收不到的问题处理方法
  • 原文地址:https://www.cnblogs.com/WIU1905/p/10677217.html
Copyright © 2020-2023  润新知