tar命令

功能:文件的打包、解包,并且可以实现压缩功能。

打包压缩语法:tar  -czvf   文件名.tar.gz   要打包的文件列表

解包解压缩语法:tar  -xvf   文件名.tar.gz

选项:

-c  创建打包文件(create)

-z  调用gzip压缩文件(gzip)

-j  调用bzip2压缩文件(bzip2)

-x  解包解压缩(extract)

-v  显示过程(verbose)

-f  指定打包文件名(filename)

-t  显示tar包中的文件列表(list)

-r  增加文件到包中(append)

--delete  从包中删除文件

-C  将文件解压到指定的目录中(change)

 

准备工作:进入当前用户家目录,显示文件列表。以下实例全部在当前用户家目录的tar目录中操作。

cd

ls

mkdir  tar

cd  tar

pwd

 

实例:将/etc目录打包备份到当前目录的etc.tar.gz中。查看tar包中的文件列表。

tar  -czvf  etc.tar.gz   /etc

tar  -tf  etc.tar.gz

du  -hs  etc.tar.gz

 

实例:将当前目录中的etc.tar.gz解压在当前目录中,将etc.tar.gz压缩包文件解压到/tmp目录中。

tar  -xvf  etc.tar.gz

tar  -xvf  etc.tar.gz  -C   /tmp

 

练习:执行以下打包操作。

tar  -cvf  host.tar  /etc/host*

tar  -tf   host.tar

tar  -f  host.tar  -r  /etc/passwd  /etc/group

tar  -f  host.tar  --delete  etc/host.conf

 

------------------------

zip压缩、unzip解压缩

语法:命令  文件名.zip

实例:将/etc目录用zip命令进行压缩成当前目录的etc.zip文件。

zip  conf.zip  /etc/*.conf

du  -hs  conf.zip

 

实例:将当前目录的etc.zip文件解压到/tmp目录中。

unzip   conf.zip  -d  /tmp/

------------------------

gzip压缩、gunzip解压缩

选项:

-h 显示帮助       

-9  指定压缩比例为9

 

实例:将/etc目录用tar命令打包,然后用gzip压缩,再用gunzip解压缩。最后用tar解包etc.tar包文件。

tar  -cvf  etc.tar   /etc

ls

gzip  etc.tar

gunzip  etc.tar.gz

tar -xvf  etc.tar

 

------------------------

bzip2压缩、bunzip2解压缩

选项:

-h 显示帮助   

-k 保留压缩文件    

-9  指定压缩比例为9

 

实例:将/etc目录用tar命令打包,然后用bzip2压缩,再用bunzip2解压缩。最后用tar解包etc.tar包文件。

tar  -cvf  etc.tar   /etc

ls

bzip2  etc.tar

bunzip2  -k  etc.tar.gz

tar -xvf  etc.tar

 

------------------------

计划任务

功能控制什么时间执行什么任务。

类型:at一次性计划任务,crontab周期性计划任务。

 

at一次性计划任务:

技术要点:

at软件简介

at服务管理命令

at计划的创建、查询、删除

 

查看at软件的文件列表:rpm  -ql  at

查询at软件的配置文件:rpm  -qc  at

 

at服务的运维管理命令:

重启服务:service  atd  restart

停止服务:service  atd  stop

开机自动启动atd服务:chkconfig   atd  on

查看atd服务开机设置状态:chkconfig  --list  atd

 

注意:在互联网服务器上重要的系统服务和网络服务必须设置成开机启动。

 

at用法:at  [选项]  时间

选项:-f  指定计划的脚本文件

-l  显示未执行的计划任务列表,可用atq命令

-c  编号   查询指定编号任务的内容

atrm  删除指定编号的计划任务

 

实例:以非交互方式指定at计划任务,1分钟后执行“wall  hello”给所有登录的用户发消息。

echo "wall  hello" | at  now+1min

 

实例:以非交互方式指定at计划任务,1分钟后执行“tar  -czf  etc.tar.gz  /etc”。

echo "tar  -czf  etc.tar.gz  /etc" | at now+1min

 

实例:以交互式方式创建at计划任务,2分钟后执行"wall  nihao".

at  now+2min

wall  nihao

wall  haha

ctrl+d完成任务的定义

 

at支持的各种时间:

时:分 年-月-日 :15:20  2017-07-25

HH:MM  YYYY-MM-DD

时:分[am|pm]

now+数字[min|hours|days|week]

 

实例:时间表示案例如下。

at  now +2 hours    两小时以后执行任务

at  now +2 days     两天以后执行任务

at  15:20   今天下午15点20分执行任务

at  5:20am   2017-07-25   指定的2017年7月25日上午5:20执行任务

说明:特殊情况,如当前时间大于3:20表示,表示明天3:20执行任务。

 

以脚本方式执行计划任务:

首先,准备计划任务命令文件。

vi  /root/Aplan.sh  内容如下

date  > /tmp/a.log

head  -3  /etc/passwd  >> /tmp/a.log

ifconfig  >> /tmp/a.log

 

然后,创建at计划任务.查询计划任务。

at  -f   /root/Aplan.sh  now+1min

atq

at -c 3

 

最后,验证计划任务的执行。

cat  /tmp/a.log

 

黑名单:禁止使用at命令的用户名单

白名单:允许使用at命令的用户名单

crontab的黑名单:/etc/at.deny   (默认存在)

crontab的白名单:/etc/at.allow  (默认不存在)

注意:当存在白名单时,只允许白名单中的用户执行at命令创建计划任务,其他用户都是黑户。

 

小结:必须掌握用at创建、查询、删除一次性计划任务,了解at.deny黑名单的应用。

------------------------

crontab周期性计划任务:

技术要点:

crontabs软件简介

crond服务管理命令

crontab计划的创建、查询、删除

 

功能:按指定的时间规律重复执行某些命令。

 

查软件是否已安装:rpm  -q  crontabs  或 rpm  -qa |grep  crontabs

查看crontabs软件的文件列表:rpm  -ql  crontabs

查询crontabs软件的配置文件:rpm  -qc  crontabs

crontabs的主配置文件:cat  /etc/crontab

计划任务的日志文件:cat  /var/log/cron

 

crond服务的运维管理命令:

重启服务:service  crond  restart

停止服务:service  crond  stop

开机自动启动atd服务:chkconfig   crond  on

查看atd服务开机设置状态:chkconfig  --list  crond

 

注意:在互联网服务器上重要的系统服务和网络服务必须设置成开机启动。

 

创建计划任务的方法一:

在/etc/crontab配置文件中指定计划任务。

实例:创建周期性计划任务,每周3、6的23:50执行reboot重启。

vi   /etc/crontab

50  23  *  *  3,6   root   reboot

格式说明:分  时   日  月  周   用户名  命令

3,6 表示不连续的时间范围

3-6 表示连续的时间范围

*  表示每时每刻。用具体数值是为了缩小时间范围

*/5  时间间隔。如果*/5是表示小时,那么是每隔5小时间执行一次任务

 

实例:创建周期性计划任务,每周1到5的22:50执行tar打包备份/etc目录到/opt目录中。

vi   /etc/crontab

50  22  *  *  1-5   root   tar  -czf  /opt/etc.tar.gz  /etc

说明:分 时 日 月 周 用户 命令

-----------------------------------------------------------------------------------

小插曲1:用当天的年月日创建.txt后缀的文件。

touch  $(date +%F).txt

 

小插曲2:用当天的年月日创建/etc目录的tar打包文件。

tar  -cf  etc_$(date  +%F).tar   /etc

------------------------------------------------------------------------------------

创建计划任务的方法二:

crontab  [选项]

选项:

-h  显示帮助

-l  显示计划任务列表

-e  编辑计划任务(会以vi方式编辑)

-r  删除当前用户的所有计划任务

-u  给指定用户创建计划任务,不指定则为当前用户

-i  删除计划任务前提示用户yes或no

 

实例:

给当前用户创建计划任务,每周1、3-5的每隔2小时间执行'wall  hello'命令。

crontab  -e  添加如下内容

*  */2  *  *  1,3-5   wall  hello

格式说明:分  时  日  月  周  命令

 

黑名单:禁止使用crontab命令的用户名单

白名单:允许使用crontab命令的用户名单

crontab的黑名单:/etc/cron.deny   (默认存在)

crontab的白名单:/etc/cron.allow  (默认不存在)

注意:当存在白名单时,只允许白名单中的用户执行crontab命令创建计划任务,其他用户都是黑户。

 

了解crontab的日志文件内容:cat   /var/log/cron

说明:cron文件记录了用户创建、编辑、删除计划任务的操作,并且会记录计划执行的状态信息。

------------------------------------------------------------------------------------------

练习:用crontab  -e创建如下周期性计划任务。

1、每天的16:10、16:30、17:10、17:30执行wall  hello命令。

10,30 16,17 * * * wall hello

2、每周1、3、5的23:10、23:50执行service   network  restart命令。

10,50 23 * * 1,3,5 service network restart

3、每月的1、10、20号的22:10执行tar命令打包备份/etc目录为/opt/年-月-日.tar.gz文件。

10 22 1,10,20 * * /bin/tar -czf /opt/etc_$(date +%F).tar.gz /etc                                                        

-------------------------------------------------------------------------------------------------------------------------------

log日志文件(历史记录):记录什么时间、什么主机、什么用户、执行了什么任务。

 

日志文件的程序:rsyslog

查看syslog的帮助:man  syslog

 

日志服务的管理命令:

查看rsyslog软件的文件列表:rpm  -ql  rsyslog

查询rsyslog软件的配置文件:rpm  -qc  rsyslog

rsyslog的主配置文件:cat  /etc/rsyslog.conf

查看rsyslog.conf配置文件帮助:man  rsyslog.conf

 

rsyslog服务的运维管理命令:

重启服务:service  rsyslog   restart

停止服务:service  rsyslog   stop

查看状态:service rsyslog status

开机自动启动atd服务:chkconfig   rsyslog  on

查看atd服务开机设置状态:chkconfig  --list  rsyslog

 

注意:在互联网服务器上重要的系统服务和网络服务必须设置成开机启动。

 

rpm软件日志文件的目录:/var/log

 

常用日志文件:

boot.log   系统启动日志

cron  计划任务

secure  安全日志。记录用户的登录、创建、删除等信息

messages   消息日志,记录大多数系统服务的启动、停止信息

btmp记录登录失败的日志(bad)。是二进制文件,要用lastb命令查看。

wtmp记录所有用户的登录、注销信息。是二进制文件。用last查看。

lastlog记录系统中所有用户最后一次的登录时间。是二进制文件。用lastlog命令查看。

cups打印日志

http目录   Apache网站服务日志。

maillog  邮件系统日志

yum.log  yum的工作日志

yum history

yum history undo ID

yum history redo ID

dmesg    硬件设备信息

 

查看当前已登录的用户信息:who、w、whoami

查看当前终端号:tty

 

 

日志类型

下面是常见的日志类型,但并不是所有的Linux发行版都包含这些类型:

类型说明

auth用户认证时产生的日志,如login命令、su命令。

authpriv与 auth 类似,但是只能被特定用户查看。

console针对系统控制台的消息。

cron系统定期执行计划任务时产生的日志。

daemon某些守护进程产生的日志。

ftpFTP服务。

kern系统内核消息。

local0.local7由自定义程序使用。

lpr与打印机活动有关。

mail邮件日志。

mark产生时间戳。系统每隔一段时间向日志文件中输出当前时间,每行的格式类似于 May 26 11:17:09 rs2 -- MARK --,可以由此推断系统发生故障的大概时间。

news网络新闻传输协议(nntp)产生的消息。

ntp网络时间协议(ntp)产生的消息。

user用户进程。

uucpUUCP子系统。

 

日志优先级

说明:优先级越高记录的日志信息越少。

常见的日志优先级如下:

优先级说明

emerg紧急情况,系统不可用(例如系统崩溃),一般会通知所有用户。

alert报警,需要立即修复,例如系统数据库损坏。

crit危险情况,例如硬盘错误,可能会阻碍程序的部分功能。

err一般错误消息。

warning警告。

notice不是错误,但是可能需要处理。

info通用性消息,一般用来提供有用信息。

debug调试程序产生的信息。

none没有优先级,不记录任何日志消息。

 

 

rsyslog.conf文件内容的格式

日志文件的类型.等级        日志文件的路径

authpriv.*            /var/log/secure

cron.*                /var/log/cron

*.info;mail.none;authpriv.none;cron.none      /var/log/messages

 

第一列为日志类型和日志优先级的组合,每个类型和优先级的组合称为一个选择器;后面一列为保存日志的文件、服务器,或输出日志的终端。rsyslog 进程根据选择器决定如何操作日志。

 

对配置文件的几点说明:

日志类型和优先级由点号(.)分开,例如 kern.debug 表示由内核产生的调试信息。kern.debug 的优先级大于 debug。

星号(*)表示所有,例如 *.debug 表示所有类型的调试信息,kern.* 表示由内核产生的所有消息。

可以使用逗号(,)分隔多个日志类型,使用分号(;)分隔多个选择器。

 

     B 信息等级的指定方式

        1). xxx: 表示大于xxx级别的信息

        2).=xxx:表示等于xxx级别的信息

        3).!xxx:表示在xxx之外的等级的信息

 

----------------------

logrotated: -- 日志轮滚(也称为日志切割、日志轮替)机制的后台进程

ps  aux|grep  log

日志轮滚机制:当日志文件满足某个条件时,会重新生成一个新的日志文件。条件可以是文件大小、或天数。

查看/var/log目录的文件列表:ls  /var/log

 

------------------------------------------------------------------------------------

日志的轮替、日志的轮滚

   为什么要轮滚?

      1)防止日志文件过大

      2)定期自动清除旧日志

 

rsyslog 软件的配置文件:

[root@localhost ~]# rpm -qc rsyslog

/etc/logrotate.d/syslog  系统日志轮替方案的配置文件

/etc/rsyslog.conf      系统日志的主配置文件

/etc/sysconfig/rsyslog  

 

查询logrotate日志切割软件的相关文件:

  查软件是否已安装:rpm  -q  logrotate

  查所有文件列表:rpm  -ql  logrotate

  查配置文件列表:rpm  -qc  logrotate

 

logrotate配置文件的功能(都是文本文件):

计划任务:/etc/cron.daily/logrotate

主配置文件:/etc/logrotate.conf       设置全局的日志轮滚策略

状态文件:/var/lib/logrotate.status

     

日志轮滚的配置文件(全局控制),也称为日志切割的策略文件:

   # man  logrotate.conf    查看日志切割策略文件的帮助文档

   # cat  /etc/logrotate.conf

   # grep -nv ^# /etc/logrotate.conf | grep -v ^$

上一行grep命令的意思是显示不包含以#开头和^$空白行的内容。(下面下划线的红字是改过的)

Weekly     //轮滚的周期,一周一轮滚,还可以用daily、monthly、yearly等

rotate 4   //保留4个旧的日志文件,类似于备份

create     //旧日志轮滚后是否创建新的空白日志

#dateext//不使用日期作为旧日志的后缀,使用“数字”作为文件名的后缀

#compress//是否压缩旧日志文件

include  /etc/logrotate.d//包含该路径下的所有“日志切割策略”文件

 

/var/log/wtmp {    //针对特定的日志进行特定的切割策略设置

monthly       //轮滚周期,一个月

create 0664 root utmp   //创建新的日志文件  权限664 所有者root 所属组utmp

minsize 1M    //轮滚的最小大小是1M

rotate 2      //保留2个旧的日志文件,文件的总数是2个备份+1个新文件

}

 

/var/log/btmp {

missingok     //丢了也没关系(日志文件不存在时忽略,即不报错)

monthly     //每月轮替

create 0600 root utmp   //创建日志文件,并设置权限为0600,属主为root,属组为utmp

rotate 3   //轮滚3次,文件的总数是3个备份+1个新文件

}

 

 

临时测试轮滚策略(即方案)是否正确:

logrotate  -vf  /etc/logrotate.conf

ls  /var/log/    验证是否有以日期或数字为后缀的文件

说明:-v ---显示命令的执行过程    -f----指定日志切割策略文件

 

查看某个服务的日志是否轮滚

[root@server150 logrotate.d]# cat   /etc/logrotate.d/syslog

      /var/log/cron

      /var/log/maillog

      /var/log/messages

      /var/log/secure

      /var/log/spooler

      {

        sharedscripts    //与endscript中间夹的是需要执行的操作      

        postrotate          //轮滚后执行的命令

      /bin/kill -HUP `cat /var/run/syslogd.pid 2> /dev/null` 2> /dev/null || true  //重新加载配置

        endscript

      }

------------------------------------------

小结:

系统日志的文件夹:/var/log

系统日志服务的主配置文件:/etc/rsyslog.conf

日志切割的主配置文件(也称为默认切割策略):/etc/logrotate.conf

其它的个性化切割策略的文件夹:/etc/logrotate.d

系统日志的切割策略文件:/etc/logrotate.d/syslog

查看切割命令的帮助文档:man  logrotate

查看切割主配置文件的帮助文档:man  logrotate.conf

 

测试切割策略:logrotate  -vf  /etc/logrotate.conf

 

日志轮替(即切割、轮滚)项目任务:在/var/log目录中创建一个名称为lol的文件,然后给lol文件创建切割策略,最后测试。

在/var/log目录中创建lol文件

创建lolk日志切割策略文件touch  /var/log/lol

vi  /etc/logrotate.d/lolk   切割策略如下

/var/log/lol {      日志文件的路径,以下为轮滚策略

  missingok          lol文件不存在也不报错

  daily              每天切割1次

  create             创建新日志文件

  rotate  3          最多生成3个备份文件

  #compress         不启用压缩功能

}

警告:如果有3个日志文件a.log.1、a.log.2、a.log.3,其中a.log.3是最旧的一个文件。

 

轮滚日志文件名规则:

第1次:a.log---->a.log.1   之后touch  a.log

第2次:a.log--->a.log.1---->a.log.2    之后touch  a.log

第3次:a.log--->a.log.1---->a.log.2--->a.log.3    之后touch  a.log