zoukankan      html  css  js  c++  java
  • 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/
    本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。

  • 相关阅读:
    LeetCode 24. Swap Nodes in Pairs (两两交换链表中的节点)
    LeetCode 1041. Robot Bounded In Circle (困于环中的机器人)
    LeetCode 1037. Valid Boomerang (有效的回旋镖)
    LeetCode 1108. Defanging an IP Address (IP 地址无效化)
    LeetCode 704. Binary Search (二分查找)
    LeetCode 744. Find Smallest Letter Greater Than Target (寻找比目标字母大的最小字母)
    LeetCode 852. Peak Index in a Mountain Array (山脉数组的峰顶索引)
    LeetCode 817. Linked List Components (链表组件)
    LeetCode 1019. Next Greater Node In Linked List (链表中的下一个更大节点)
    29. Divide Two Integers
  • 原文地址:https://www.cnblogs.com/WIU1905/p/10677217.html
Copyright © 2011-2022 走看看