压缩、解压缩工具及周期性任务计划

1、压缩、解压缩工具

压缩比:压缩前体积大小/压缩后体积大小
压缩是一种用时间换空间的操作,用压缩时CPU的时间换取磁盘的存储空间。
压缩、解压缩工具:
(1)compress/uncompress,.Z
(2)gzip/gunzip,.gz
(3)bzip2/bunzip2,.bz2
(4)xz/unxz,.xz
(5)lzma/unlzma,.lzma
(6)zip/unzip,.zip
(7)tar,.tar
(8)cpio,.cpio

(1)gzip/gunzip/zcat
1)gzip [OPTION]... FILE...
压缩命令。该命令只能压缩文件,不能压缩目录。
-d:decompress,解压缩,相当于gunzip;
-#:指定压缩比,默认是6,数字越大压缩比越大(1-9),所需CPU时钟周期越长,所占空间越小;
-c:将压缩结果输出至标准输出,原文件和压缩文件全部保留;
gzip -c FILE > /PATH/TO/SOMEFILE.gz
-r:递归至目录中对每个文件进行压缩。
2)gunzip,解压缩命令。
3)zcat /PATH/TO/SOMEFILE.gz:无需显式解压缩即可查看压缩文件内容的命令。将压缩文件放在一个临时位置,生成临时文件查看,而cat看到的压缩文件只是乱码。只适用于查看小文件。
(2)bzip2/bunzip2/bzcat
1)bzip2 [OPTION]... FILE...
压缩命令。该命令只能压缩文件,不能压缩目录。
-d:decompress,解压缩,相当于bunzip2;
-#:指定压缩比;默认是6;数字越大压缩比越大(1-9);
-k:keep,压缩后保留原文件;
2)bunzip2,解压缩命令。
3)bzcat /PATH/TO/SOMEFILE.bz2:无需显式解压缩即可查看压缩文件内容的命令。
(3)xz/unxz/xzcat,lzma/unlzma/lzcat
1)xz [OPTION]… FILE…
压缩文件命令。只能压缩文件,不能压缩目录。
-d:decompress,解压缩,相当于unxz;
-#:指定压缩比;默认是6;数字越大压缩比越大(1-9);
-k:压缩后保留原文件。
2)unxz,解压缩命令。
3)xzcat /PATH/TO/SOMEFILE.xz:无需显式解压缩查看压缩文件内容的命令。
(4)归档命令:tar, cpio
归档就是将多个文件打包为单个文件以便于管理,默认的归档不会执行压缩。
1)tar [OPTION]... FILE...

  1. 创建归档
    -c -f /PATH/TO/TARFILE.tar /PATH/TO/FILE...
    注意:归档不会删除原文件。
    -cf /PATH/TO/SOMEFILE.tar FILE...:顺序前后不能颠倒;
    [root@localhost exercise]# tar -cf ./mylog.tar *.log
  2. 展开归档
    -xf /PATH/FROM/SOMEFILE.tar
    -xf /PATH/FROM/SOMEFILE.tar -C /PATH/TO/SOMEDIR:展开至某处
    [root@localhost exercise]# mkdir newtest
    [root@localhost exercise]# tar -xf mylog.tar -C newtest/
  3. 查看归档文件的文件列表
    -tf /PATH/TO/SOMEFILE.tar
    归档完成后通常需要压缩,结合此前的压缩工具,就能实现压缩多个文件了。
  4. 归档压缩
    1)-z:gzip2
    后缀名:.tar.gz
    归档并压缩:tar -zcf /PATH/TO/SOMEFILE.tar.gz FILE...
    展开归档:tar -zxf /PATH/FROM/SOMEFILE.tar -C /PATH/TO/SOMEDIR
    2)-j:bzip2
    后缀名:.tar.bz2
    归档并压缩:tar -jcf
    展开归档:tar -jxf
    3)-J:xz
    后缀名:.tar.xz
    归档并压缩:tar -Jcf
    展开归档:tar -Jxf
    Note:展开归档可以直接使用tar -xf,而无须为其指定对应的压缩工具选项。

注意:多个选项可以合并,但-f由于要带参数,因此应该放在最右侧,如-tf,-xf,-cf;且选项的引导符 - 可以省略,如tar xf,tar zf。
(5)zip/unzip
zip ZIP_FILE.zip /PATH/TO/SOMEFILE...:zip可以将多个文件压缩归档成单个文件。
unzip ZIP_FILE.zip:解压缩命令。
[root@localhost exercise]# zip test.zip test
adding: test/ (stored 0%)

2、周期性任务计划

未来的某时间点执行一次某任务:at, batch,周期性运行某任务:crontab,执行结果会通过邮件发送给用户。
通过以下两条命令查看已开启的端口号:
~ ]# netstat -tnlp
~ ]# ss -tnl
本地电子邮件服务:smtp、pop3、imap4。
(1)mail命令
MUA:Mail User Agent,用户收发邮件的工具程序。
mailx [-s ‘SUBJECT’] username[@hostname]
该命令用于发送和接收电子邮件。
邮件正文的生成:
1)交互式输入,. 单独成行可以表示正文结束,Ctrl+d提交亦可;
2)通过输入重定向发送文件;
3)将命令的输出结果通过管道发送邮件;
将/etc/fstab文件作为邮件正文:
mail -s 'fstab file' root < /etc/fstab
cat /etc/fstab | mail -s 'to you' centos
(2)at命令
该命令用于在未来某时间点一次执行某任务。
at [OPTION]… TIME
TIME格式如下:
HH:MM [YYYY-mm-dd],noon,midnight,teatime,tomorrow,now+#
单位:minutes, hours, days, OR weeks
at的作业有队列,用单个字母表示,默认都使用a队列;
常用选项:
-l:查看作业队列,相当于atq;
-f /PATH/FROM/SOMEFILE:从指定文件中读取作业任务,而不用再交互式输入;
-d:删除指定的作业,相当于atrm;
-c:查看指定作业的具体内容;
-q QUEUE:指明队列;
注意:作业执行结果是以邮件发送给提交作业的用户;

vim at.tasks
at -f at.tasks now+5min
at -d 3                     删除第3号任务

(3)batch命令
batch会让系统自行选择在系统资源较空闲的时间去执行指定的任务。
(4)周期性任务计划:cron
服务程序:cronie:主程序包,提供了crond守护进程及相关辅助工具。
确保crond守护进程(daemon)处于运行状态:
CentOS 7:

systemctl  status  crond.service
Active: active (running) ... ...

CentOS 6:

service  crond  status
... is running.

此命令CentOS7也可以使用。
向crond提交作业的方式不同于at,它需要使用专用的配置文件,此文件有固定格式,不建议使用文本编辑器直接编辑此文件,要使用crontab命令;
cron任务分为两类:
1)系统cron任务:主要用于实现系统自身的维护,需要手动编辑:/etc/crontab文件;
2)用户cron任务:操作命令:crontab命令。

系统cron的配置格式:/etc/crontab

SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root

# 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)每一行定义一个周期性任务,共7个字段:
 * * * * * : 定义周期性时间
user-name : 运行任务的用户身份
command to be executed:任务
2)此处的环境变量不同于用户登录后获得的环境,因此,建议命令使用绝对路径,或者自定义PATH环境变量;
3)执行结果邮件发送给MAILTO指定的用户;

用户cron的配置格式:/var/spool/cron/USERNAME

SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root

# 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
# |  |  |  |  |
# *  *  *  *  *   command to be executed	

注意:
1)每行定义一个cron任务,共6个字段;
2)此处的环境变量不同于用户登录后获得的环境,因此,建议命令使用绝对路径,或者自定义PATH环境变量;
3)邮件发送给当前用户;

时间表示法:
1)特定值。给定时间点有效取值范围内的值。day of week和day of month一般不同时使用。
2)* 给定时间点上有效取值范围内的所有值,表示“每…”。
3)离散取值:在时间点上使用逗号分隔的多个值,#,#,#。
4)连续取值:在时间点上使用-连接开头和结束,#-#。
5)在指定时间点上定义步长,/#:#即步长;
注意:
1)指定的时间点不能被步长整除时,其意义将不复存在;
2)最小时间单位为“分钟”,想完成“秒”级任务,得需要额外借助于其它机制;定义成每分钟任务:而在利用脚本实现在每分钟之内,循环执行多次,如每3秒执行一次脚本;

示例:
(1) 3 * * * *:每小时执行一次;每小时的第3分钟;
(2) 3 4 * * 5:每周执行一次;每周5的4点3分;
(3) 5 6 7 * *:每月执行一次;每月的7号的6点5分;
(4) 7 8 9 10 *:每年执行一次;每年的10月9号8点7分;
(5) 9 8 * * 3,7:每周三和周日的8点9分;
(6) 0 8,20 * * 3,7:每周三和周日的8点和20点各执行一次;
(7) 0 9-18 * * 1-5:在工作时间内的每小时执行一次;
(8) */5 * * * *:每5分钟执行一次某任务;
(9) */7

crontab命令:crontab [-u user] [-l | -r | -e] [-i]
-e:编辑任务;
-l:列出所有任务;
-r:移除所有任务;即删除/var/spool/cron/USERNAME文件;
-i:在使用-r选项移除所有任务时提示用户确认;
-u user:root用户可为指定用户管理cron任务;
注意:运行结果以邮件通知给当前用户;如果拒绝接收邮件:
1)COMMAND > /dev/null:命令结果正确不发送邮件,命令结果错误发送邮件;
2)COMMAND &> /dev/null:命令结果正确错误都不发送邮件;
注意:定义COMMAND时,如果命令需要用到%,需要对其转义,但放置于单引号中的%不用转义亦可。

已标记关键词 清除标记
©️2020 CSDN 皮肤主题: 书香水墨 设计师:CSDN官方博客 返回首页