压缩工具和计划任务

压缩和解压缩工具

压缩等于: 时间 换 空间

CPU的时间 >>> 磁盘空间

压缩工具
compress 后缀 .Z
gzip 后缀 .gz
bzip2 后缀 .bz2
xz 后缀 .xz

    归档工具
    tar 后缀 .tar

    归档加压缩
    zip 后缀 .zip

 


第一组工具 gzip / gunzip / zcat

压缩
gzip [OPTION]... FILE...
常用选项
-d :解压缩 相当于gunzip
-* :指定压缩比 默认是6 数字越大压缩比越大;除非特殊要求一般不变
-c :将压缩结果输出至标准输出
gzip -c FILE > NEWfile.gz

    解压和查看压缩包 命令后面直接跟文件没什么重要选项

    gunzip file.gz
    zcat file.gz


第二组工具 bzip2 / bunzip2 / bzcat

压缩
bzip2 [OPTION]... FILE...
常用选项
-d :解压缩 相当于bunzip2
-* :指定压缩比 默认是6 数字越大压缩比越大;除非特殊要求一般不变
-k : keep , 保留原文件
bzip2 -k file (不用输出重定向他会自动保留源文件)
查看
bzcat file.bz2


第三组工具 xz / unxz / xzcat

压缩
xz [OPTION]... FILE...
常用选项
-d :解压缩 相当于unxz
-* :指定压缩比 默认是6 数字越大压缩比越大;除非特殊要求一般不变
-k : keep , 保留原文件

 

    以上三种压缩工具无法对目录进行打包 需要使用归档工具打包后才能压缩


归档工具


tar [OPTION]... FILE | DIR ...
常用选项


-c 创建归档
tar cf NEWfile.tar FILE...

    -x 展开归档
    tar xf file.tar -C DIR

    -t 查看归档文件中的文件列表
    tar tf file.tar

    -z 归档并调用gzip工具将文件压缩
    tar zcf NEWfile.tar.gz FILE...

    -j 归档并调用bzip2工具将文件压缩
    tar jcf NEWfile.tar.bz2 FILE...

    -J 归档并调用xz工具将文件压缩
    tar Jcf NEWfile.tar.bz2 FILE...

    -v 显示详细信息

    解压缩并展开归档
    tar可以自动识别压缩文件的格式不必指定调用的工具
    不加-C 指定目录会解压到当前工作目录
    tar xf NEWfile.tar.gz -C DIR

 

zip工具可以归档并压缩


压缩
zip NEWfile.zip FILE
解压
unzip file.zip

 

linux计划任务、周期性执行任务


未来某时间执行一次任务 at
周期性允许任务 croutab

邮件

默认周期任务执行结果会通过邮件发送给用户 默认在/var/spool/mail/USERNAME 下

     mailx命令可以收发互联网邮件

mailx [-s 邮件的标题] username[@域名或主机名]
如果是给本主机用户发送邮件的话@域名或主机名可省
邮件正文的生成
1 交互式输入,编写完正文后单独一行 . 退出
2 通过输入重定向
3 通过管道
查看邮件
mail 即可
q 退出

    默认邮件端口为25

 

 

OK现在回头说计划任务

 


单次执行计划任务 at

at命令
首先确保atd服务 正常允许 不然定义了也不会生效
如果没有开启 他会返回你一段话
Can't open /var/run/atd.pid to signal atd. No atd running? 看到后开启服务即可

at [OPTION]... TIME
TIME
HH:MM [YYYY-mm-dd]
now+*min 几分钟后
常用选项
-l 查看计划任务
-f 从文件中读取作业任务,而不用交互式提交
-d * 删除第几条计划任务
-c * 查看作业的具体内容
-q 指明队列
at命令有队列 用单个字母表示 默认都使用a队列

注意 作业执行结果都是以邮件发送给提交作业的用户



周期性执行任务 cron


服务程序
  cronle:主程序包 主要提供了crond守护进程及相关辅助工具

  首先确保crond守护进程处于运行状态

  向crond提交作业不同at命令,他需要使用专用的配置文件,此文件有固定格式不建议使用编辑器直接编辑,应使用crontab命令编写

cron任务分为两类
  系统cron任务:主要用于实现系统自身维护

  系统cron任务 只能通过手动编辑 /etc/crontab 来实现

  用户cron任务:用户定义的cron任务

  一般使用crontab命令来编写

编写格式


系统cron任务格式 /etc/crontab 共7个字段: 分 时 日 月 周 用户 任务

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 每一行定义一个周期性任务

* * * * * :定义周期性时间
user-name :运行任务的用户角色
command to be executed : 任务
2 此处的环境变量不同于用户交互式登录环境变量,因此建议使用绝对路径或者自定义PATH环境变量

3 执行结果通过邮件发送给指定的用户


用户cron任务 /var/spool/cron/USERNAME 共六个字段 分 时 日 月 周 任务

注意条件和系统用户一样 只有第三点不同 执行结果会发送邮件到当前用户

 

时间表示法:


1 使用特定值 分钟(0 - 59)小时(0 - 23) 日期(1 - 31) 月份(1 - 12) 周(0 - 6 或 1 - 7 因为周日表示0或7)
一般来说 日期 和 周 不同时使用

2 * 表示给定时间点上有效取值范围内的所有值

3 离散取值 , 在时间点上使用逗号分隔多个值

4 连续取值 - 在时间点上使用-连接开头和结束

5 在指定时间点上,定义步长 */2 = 每两分钟

 

注意:

1 指定的时间点的特定值不能被步长整除时 其意义不复存在
2 当编写任务时用到 % 需要转义或单引号
3 最小时间单位为分钟 ,想完成秒级任务 需要使用其他机制
比如定义为每分钟执行任务,而利用脚本实现分钟之内,循环多次


crontab 命令


crontab -e 编写任务

crontab -l 列出任务列表

crontab -r 移除所有任务,想要单个删除时使用-e 编辑

crontab -u user [ e l r ] 使用别人的身份运行cron

 

 当可以确保任务可以执行成功时 使用输出重定向到/dev/null 不建议使用 &>/dev/null

 

练习
1 每12小时备份一次/etc目录至/backups目录中,保存文件名为 "etc-yyyy-mm-dd-hh.tar.xz"
0 */12 * * * /usr/bin/tar JcfP /backups/etc-`/usr/bin/date +\%Y-\%m-\%d-\%H-\%M`.tar.xz /etc/ >/dev/null

 

2 每周2、4、7 备份/var/log/secure文件至/log目录中,文件名为 "secure-yyyymmdd"
0 0 * * 2,4,7 /usr/bin/cp /var/log/secure /log/secure-`/usr/bin/date +\%Y\%m\%d\%H\%M` >/dev/null

 

3 每两小时取出当前系统/proc/meminfo 文件中以S或M开头的行信息追加至/tmp/meminfo.txt文件中
0 */2 * * * /usr/bin/grep -Ei "^(s|m)" /proc/meminfo > /tmp/meminfo.txt

posted @ 2020-06-16 11:33  蠢狐狸  阅读(223)  评论(0编辑  收藏  举报