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
     
    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
     
    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点执行
     
    crontab定时任务的使用
     
    语法:#crontab -u  -e
             常用选项:
                      -l:list,列出指定用户的计划任务列表
                      -e:edit,编辑指定用户的计划任务列表
                      -u:user,指定的用户名,如果不指定,则表示当前用户
                      -r:remove,删除指定用户的计划任务列表
     
    1. 查看进程是否启动
    [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
     
    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
     
    问题1:每月1、10、22日的4:45重启network服务
    45  4  1,10,22  *  *  systemctl restart network (每月,周没有制定)
     
    问题2:每周六、周日的1:10重启network服务
    10  1  *  *  6,7  systemctl restart network   (日、月没有指定)
     
    问题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                    #编写计划任务
    * * * * * echo "123" >> /root/ken.txt      
    [root@ken ~]# tail -f ken.txt               #查看计划任务执行结果
    123
    123
     
    4. 删除计划任务
    [root@ken ~]# crontab -l
    * * * * * echo "123" >> /root/ken.txt
    [root@ken ~]# crontab -r
    [root@ken ~]# crontab -l
    no crontab for root
    注意:在计划任务中,默认的最小单位就是分,不能再小了。
    Crontab练习题
    1.     每周一到周六的凌晨3点20分,运行tar命令对/etc/目录进行存档另存,存储位置为/backups/etc-YYYY-MM-DD.tar.gz
    20 3 * * 1-6 /usr/bin/tar  /backups/etc-YYYY-MM-DD.tar.gz  /etc
    2.   每日凌晨2点30分,运行cp命令对/etc/fstab文件进行备份,存储位置为/backup/fstab-YYYY-MM-DD-hh-mm-ss;  
    30 2 * * 7 cp /etc/fstab  /backup/fstab-YYYY-MM-DD-hh-mm-ss
    3.     每天晚上12点,取得/proc/meminfo文件中所有以S或M开头的行,追加至/statistics/meminfo.txt文件中,且每天的消息之前,要加上类似===============分隔线;
    0 0 * * * cat /procminfo |grep “S” -o “M”
    4.     每月每天凌晨3点30分和中午12点20分执行test.sh脚本
    30,20 3,12 * * *  bash test..sh
    5.     每月每天每隔6小时的每30分钟执行test.sh脚本
    0,30  */6 * * *  bash.test.sh
    6.     每月每天早上8点到下午18点每隔 2小时的每30分钟执行test.sh脚本
    0,30 8-18/2 * * * bash.test.sh
    7.     每月每天晚上21点30分执行test.sh脚本
    30 21 * * * bash  test.sh
    8.     每月1号、10号、22号凌晨4点45分执行test.sh脚本
    45 4 1,10,22 * *  bash test.sh
    9.     8月份周一、周日凌晨1点10分执行test.sh脚本
    10 1 * 8 1,7  bash test.sh
    10.    每月每天每小时整点执行test.sh脚本  0 * * * *  bash test.sh
    11.  每天晚上 12 点,打包站点目录/var/www/html 备份到/data 目录下。每次备份按时间生成不同的备份包  0 0 * * *  usr/bin/tar  czvf   touch /data/‘$(date “+\%F”)’  /var/www/html
    12.    一月一号的4点重启smb  0 4 1 1 * systemctl restart smb
    13.    每小时执行/etc/cron.hourly目录内的脚本  0 * * * * bash /etc/cron.hourly/*.sh
    14.    每月的4号与每周一到周三的11点重启smb  0 11 4 * 1-3 systemctl restart smb
    15.    晚上11点到早上7点之间,每隔一小时重启smb  0 7-23/1 systemctl restart smb
    16.    每一小时重启smb  0 * * * * systemctl restart smb
    17.    每星期六的晚上11 : 00 pm重启smb   0 23 * * 6 systemctl restart smb
    18.    每天18 : 00至23 : 00之间每隔30分钟重启smb  0 18-12/30 systemctl rstart smb
    19.    每周六、周日的1 : 10重启smb 10 1 * * 6,7 systemctl restart smb
    20.    每月1、10、22日的4 : 45重启smb   45 4 1,10,22  *  *   systemctl restart smb
     
    压缩归档
     
    1. 掌握归档的定义:归档(archiving)就是将许多文件(或目录)打包成一个文件。
    2. 了解归档的目的:归档的目的就是方便备份、还原及传输文件。
    3. 掌握tar命令的功能:将多个文件(也可能包括目录,因为目录本身也是文件)放在一起存放到一个磁带或磁盘归档文件中。并且将来可以根据需要只还原归档文件中的某些指定的文件。
    4. 掌握tar命令的常用选项:
    • c:创建一个新的tar文件。
    • t:列出tar文件中目录的内容。
    • x:从tar文件中抽取文件。
    • f:指定归档文件或磁带(也可能是软盘)设备(一般都要选)。
    • v:显示所打包的文件的详细信息,v是verbose的第1个字母。
    • z:使用gzip压缩算法来压缩打包后的文件。
    • j:使用bzip2压缩算法来压缩打包后的文件(文件压缩的更小)
     
    常用选项组合:
    压缩归档:czvf
    解压:xzvf
     
     
    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
     
     

    人生一世,草木一秋。 众生无我,苦乐随缘。
  • 相关阅读:
    线上redis禁止使用keys等时间复杂度高的命令
    组合索引的使用效果的总结
    Netty 断线重连解决方案
    可作为GC Root的对象
    在同一个sqlSession执行一个相同的查询时,Mybatis有一级缓存,不会去查数据库,由此引发的一个bug
    HashMap 和 currentHashMap JDK8总结
    Java程序导致服务器CPU占用率过高的问题排除过程
    一条sql执行的很慢的原因有哪些
    主键索引和非主键索引的区别
    黑马程序员
  • 原文地址:https://www.cnblogs.com/hao6/p/12863275.html
Copyright © 2011-2022 走看看