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
转载于:https://blog.51cto.com/95062023/1948797