2019-05-27

1、每12小时备份并压缩/etc/目录至/backup目录中,保存文件名称格式为"etc-年-月-日-时-分.tar.gz"

mkdir /backup
crontab -e
1 */12 * * * /bin/tar -zcf /backup/etc-$(date +\%F-\%H-\%M) /etc &>/dev/null
crontab中的用户命令中需要使用%时,需要进行转义

2、rpm包管理功能总结以及实例应用演示。

安装

rpm{-i|--install} [install-options] PAKCKAGE_FILE1...

-h:hash,以#来表示安装进度,每个#表示2%的进度
-v,--verbose:显示安装过程中的详细信息
-vv:更详细信息
--test:不执行真正的安装过程,检查并报告依赖关系及冲突消息等
--nodeps:忽略依赖关系,能成功安装,但未必能成功运行
--replacepkgs:覆盖安装,重新安装并覆盖原有的文件
--force:强制安装

安装时常用的组合:-ivh,-ivvh

升级

rpm{-U | --upgrade}[install-options] PACKAGE_FILE...
-U:升级或安装
rpm{-F|--freshen} [install-options]PCKAGE_FILE...
-F:升级

--test:不执行真正的安装过程,检查并报告依赖关系及冲突消息等
--nodeps:忽略依赖关系,能成功安装,但未必能成功运行
--oldpackage:降级到旧版本

常用组合:-Uvh,-Fvh
注意:1)不要对内核做升级操作;Linux支持多内核版本并存,因此,直接安装新版本内核
2)如果某原程序包的配置文件安装后曾被修改过,升级时,新版本的程序提供的同一个配置文件不会覆盖原有版本的配置文件,而是把新版本的配置文件重命名(FILENAME.rpmnew)后提供

卸载

rpm {-e|--erase}[--allmatches][--nodeps][--noscripts][--test]PACKAGE_NAME...

--nodeps:忽略依赖关系
--test:测试卸载;dry-run模式
--allmatches:卸载所有匹配指定名称的程序包的各版本

注意:如果程序包的配置文件安装后曾被修改,卸载时,此文件通常不会被删除,而是被重命名(FILENAME.rpmsave)后留存

查询

rpm {-q|--query}[select-options][query-options]

[select-options]
-a,--all:查询所有已经安装过的包
-f FILE:查询指定的文件由哪个程序包安装生成
-p,--package PACKAGE_FILE:用于实现对未安装的程序包执行查询操作
--whatprovides CAPABILITY:查询指定的CAPABILITY由哪个程序包提供
--whatrequires CAPABILITY:查询指定的CAPABILITY被哪个包所依赖
[query-options]
--changelog:查看某包制作时随版本变化的changlog信息;
-l,--list:某包安装生成的所有文件列表
-i,--info:程序包简要说明信息,版本号,大小,所属的包组等
-c,--configfiles:查询指定的程序包提供的配置文件
-d,--docfiles:查询指定的程序包提供的文档
--provides:列出指定的程序包提供的所有CAPABILITY
-R,--requires:查询指定的程序包的依赖关系
--scripts:查看程序包安装或卸载时执行脚本

脚本有四类:--noscripts
preinstall:安装过程开始之前运行的脚本,%pre,--nopre
postinstall:安装过程完成之后运行脚本,%post,--nopost
preunistall:卸载过程开始执行之前运行的脚本,%preun.--nopreun
postuninstall:卸载过程完成之后运行的脚本,%ppostun,--nopostun

校验

rpm {-V|--verify}[select-options][verify-options]

常见用法:rpm -V PACKAGE_NAME
当没有输出结果时表示软件包完整,当有相应的结果输出表明对应的内容有修改:
S :(file Size differs )文件的容量大小是否被改变
M: (Mode differs) 文件的类型或文件属性(rwx)是否被改变
5: (MD5 sum differs)MD5这一种指纹密码的内容已经不同
D: (Device major/minor number mismatch)设备的主/次代码已经改变
L: (readLink(2) path mismatch)Link路径已改变
U: (User ownership differs)属主已改变
G :(Group ownership differs)属组已改变
T :(mTime differs)文件修改时间已改变
P: caPabilities differ

验证光盘中程序包的来源及完整性:
导入合法KEY文件:rpm --import /path/to/RPM-GPG-KEY-FILE
[select-options]
-a,--all:查询所有已经安装过的包
-f FILE:查询指定的文件由哪个程序包安装生成
-p,--package PACKAGE_FILE:用于实现对未安装的程序包执行查询操作
--whatprovides CAPABILITY:查询指定的CAPABILITY由哪个程序包提供
--whatrequires CAPABILITY:查询指定的CAPABILITY被哪个包所依赖
[query-options]
--changelog:查看某包制作时随版本变化的changlog信息;
-l,--list:某包安装生成的所有文件列表
-i,--info:程序包简要说明信息,版本号,大小,所属的包组等
-c,--configfiles:查询指定的程序包提供的配置文件
-d,--docfiles:查询指定的程序包提供的文档
--provides:列出指定的程序包提供的所有CAPABILITY
-R,--requires:查询指定的程序包的依赖关系
--scripts:查看程序包安装或卸载时执行脚本
>>>> 脚本有四类:--noscripts
preinstall:安装过程开始之前运行的脚本,%pre,--nopre
postinstall:安装过程完成之后运行脚本,%post,--nopost
preunistall:卸载过程开始执行之前运行的脚本,%preun.--nopreun
postuninstall:卸载过程完成之后运行的脚本,%ppostun,--nopostun

>校验
>>rpm {-V|--verify}[select-options][verify-options]
>>> 常见用法:rpm -V PACKAGE_NAME
当没有输出结果时表示软件包完整,当有相应的结果输出表明对应的内容有修改:
S :(file Size differs )文件的容量大小是否被改变
M: (Mode differs) 文件的类型或文件属性(rwx)是否被改变
5: (MD5 sum differs)MD5这一种指纹密码的内容已经不同
D: (Device major/minor number mismatch)设备的主/次代码已经改变
L: (readLink(2) path mismatch)Link路径已改变
U: (User ownership differs)属主已改变
G :(Group ownership differs)属组已改变
T :(mTime differs)文件修改时间已改变
P: caPabilities differ
>>>>验证光盘中程序包的来源及完整性:
导入合法KEY文件:rpm --import /path/to/RPM-GPG-KEY-FILE
验证:rpm{ -k|--checksig} PACKAGE_FILE
构建数据库
rpm{--initdb|--rebuilddb} [-v][--depath DIRECTORY]
--initdb:初始化数据库,当前无任何数据库可开始化创建一个新的;当前有时不执行任何操作
--rebuilddb:重建构造,通过读取当前系统上所有已安装过的程序包进行创建

示例

     rpm -ivh /tmp/htop-1.0.3-1.el6.x86_64.rpm 
      rpm -e htop
      rpm -qpi /tmp/htop-1.0.3-1.el6.x86_64.rpm
          warning: /tmp/htop-1.0.3-1.el6.x86_64.rpm: Header V3        
          Name        : htop                         Relocations: (not relocatable)
          Version     : 1.0.3                             Vendor: Fedora Project
          Release     : 1.el6                         Build Date: Sat 31 Oct 2015       03:26:54 AM CST
        Install Date: (not installed)               Build Host: buildvm-22.phx2.fedoraproject.org
        Group       : Applications/System           Source RPM: htop-1.0.3-1.el6.src.rpm
        Size        : 182737                           License: GPL+
        Signature   : RSA/8, Sun 01 Nov 2015 12:06:31 PM CST, Key ID 3b49df2a0608b895
        Packager    : Fedora Project
        URL         : http://hisham.hm/htop/
        Summary     : Interactive process viewer
        Description :
        htop is an interactive text-mode process viewer for Linux, similar to
        top(1).
  rpm -ql htop

3、yum的配置和使用总结以及yum私有仓库的创建。

yum的配置

1)主配置文件:/etc/yum.conf 为各仓库指向提供公共配置文件

cachedir=/var/cache/yum/$basearch/$releasever  #yum下载的RPM包的缓存目录 
keepcache=0  #缓存是否保存,1保存,0不保存
debuglevel=2   #调试级别(0-10),默认为2
logfile=/var/log/yum.log    #yum的日志文件所在的位置
exactarch=1    #在更新的时候,是否允许更新不同版本的RPM包
obsoletes=1      #这是一个update的参数,具体请参阅yum(8),简单的说就是相当于upgrade,允许更新陈旧的RPM包。 
gpgcheck=1     #是否检查GPG(GNU Private Guard),一种密钥方式签名。
plugins=1      #是否允许使用插件,默认是0不允许
installonly_limit=5     #允许保留多少个内核包
bugtracker_url=http://bugs.centos.org/set_project.php? project_id=19&ref=http://bugs.centos.org/bug_report_page.php?    category=yum        
distroverpkg=centos-release   

2)各仓库的定义:/etc/yum.repos.d/*.repo

[fasttrack] #[repositoryid]用于唯一标识repository指向,其必须唯一
name=CentOS-6 - fasttrack #当前仓库描述信息
mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=fasttrack&infra=$infra      
baseurl=http://mirror.centos.org/centos/$releasever/fasttrack/$basearch/
#指明repository的访问路径;URL支持的类型:
      #ftp服务:ftp://SERVER/PATH/TO/REPOSITORY
      #http服务:http://SERVER/PATH/TO/REPOSITORY
    ` #本地目录:file:///PATH/TO/REPOSTIROY
gpgcheck=1 #是否对程序包做校验
enabled=0    #此仓库是否可被使用
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6 #指明当前gpgkey文件路径
cost= #指明当前repository的访问开销,默认为1000

使用

  • install package1 [package2] [...]
    * update [package1] [package2] [...]
    * update-to [package1] [package2] [...]
    * check-update
    * upgrade [package1] [package2] [...]
    * upgrade-to [package1] [package2] [...]
    * distribution-synchronization [package1] [package2] [...]
    * remove | erase package1 [package2] [...]
    * list [...]
    * info [...]
    * provides | whatprovides feature1 [feature2] [...]
    * clean [ packages | metadata | expire-cache | rpmdb | plugins | all ]
    * makecache
    * groupinstall group1 [group2] [...]
    * groupupdate group1 [group2] [...]
    * grouplist [hidden] [groupwildcard] [...]
    * groupremove group1 [group2] [...]
    * groupinfo group1 [...]
    * search string1 [string2] [...]
    * shell [filename]
    * resolvedep dep1 [dep2] [...]
    * localinstall rpmfile1 [rpmfile2] [...]
    (maintained for legacy reasons only - use install)
    * localupdate rpmfile1 [rpmfile2] [...]
    (maintained for legacy reasons only - use update)
    * reinstall package1 [package2] [...]
    * downgrade package1 [package2] [...]
    * deplist package1 [package2] [...]
    * repolist [all|enabled|disabled]
    * version [ all | installed | available | group-* | nogroups* | grouplist | groupinfo ]
    * history [info|list|packages-list|packages-info|summary|addon-info|redo|undo|roll-
    back|new|sync|stats]
    * load-transaction [txfile]
    * check
    * help [command]

仓库管理

yum repolist:列出已经配置的所有可用仓库
yum repolist [all|enabled|disabled]

yum缓存管理

yum clean:清理缓存
clean [ packages | metadata | expire-cache | rpmdb | plugins | all ]
yum makecache:创建缓存,自动连接至每一个可用仓库

程序包安装

yum install package1 [package2] [...]

重新安装(覆盖安装)

yum reinstall package1 [package2] [...]

程序包升级

yum update [package1] [package2] [...]

程序包降级

yum downgrade package1 [package2] [...]

检查可用升级

yum check-update

程序包卸载

yum remove package1 [package2] [...]

查询

查看指定的特性(可以是某文件)是由哪个程序包所提供
provides | whatprovides feature1 [feature2] [...]
查看程序包information
info [...]
在包名和sumary信息中搜索指定的关键字:
search string1 [string2] [...]

安装及升级本地程序包

yum localinstall rpmfile1 [rpmfile2] [...]
yum localupdate rpmfile1 [rpmfile2] [...]

包组管理

安装:yum groupinstall group1 [group2] [...]
升级:yum groupupdate group1 [group2] [...]
列表:yum grouplist [hidden] [groupwildcard] [...]
卸载:yum groupremove group1 [group2] [...]
显示指定包组详情:yum groupinfo group1 [...]

注意:也可直接用install 、remove或update来管理包组,需要在组名前加@符号,如yum install@"Server Platform Development"

yum的命令选项

--nogpgcheck:禁止进行gpg check;
-y:自动回答为“yes”
-q:静默模式
--disablerepo=repoidglob:临时禁用此处指定的repo
--enablerepo=repoidglob:临时启用此处指定的repo
--noplugins:禁用所有插件

yum私有仓库的创建

1.安装createrepo程序包
2.确定repository输出方式
1)本地输出:提供一个放置rpm包的本地路径
file形式
2)网络输出:提供一个文件服务器,配置好ftp服务或http服务
ftp服务:
安装程序包:vsftpd
文件存放路径:/var/ftp/pub
启动服务:service vsftpd start
http服务:
安装程序包:httpd
文件存放路径:/var/www/html
程序包降级
>>>yum downgrade package1 [package2] [...]

>>检查可用升级
>>>yum check-update

>>程序包卸载
>>>yum remove package1 [package2] [...]

>>查询
>>>查看指定的特性(可以是某文件)是由哪个程序包所提供
provides | whatprovides feature1 [feature2] [...]
查看程序包information
info [...]
在包名和sumary信息中搜索指定的关键字:
search string1 [string2] [...]

>>安装及升级本地程序包
>>>yum localinstall rpmfile1 [rpmfile2] [...]
yum localupdate rpmfile1 [rpmfile2] [...]

>>包组管理
>>>安装:yum groupinstall group1 [group2] [...]
升级:yum groupupdate group1 [group2] [...]
列表:yum grouplist [hidden] [groupwildcard] [...]
卸载:yum groupremove group1 [group2] [...]
显示指定包组详情:yum groupinfo group1 [...]
>>>>注意:也可直接用install 、remove或update来管理包组,需要在组名前加@符号,如yum install@"Server Platform Development"

>>yum的命令选项
>>>--nogpgcheck:禁止进行gpg check;
-y:自动回答为“yes”
-q:静默模式
--disablerepo=repoidglob:临时禁用此处指定的repo
--enablerepo=repoidglob:临时启用此处指定的repo
--noplugins:禁用所有插件


>yum私有仓库的创建
>>1.安装createrepo程序包
2.确定repository输出方式
1)本地输出:提供一个放置rpm包的本地路径
file形式
2)网络输出:提供一个文件服务器,配置好ftp服务或http服务
ftp服务:
安装程序包:vsftpd
文件存放路径:/var/ftp/pub
启动服务:service vsftpd start
http服务:
安装程序包:httpd
文件存放路径:/var/www/html
启动服务:service httpd start
注意:确保关闭防火墙服务
3)在准备好的目录中放置rpm程序包
yum remove package1 [package2] [...]

>>查询
>>>查看指定的特性(可以是某文件)是由哪个程序包所提供
provides | whatprovides feature1 [feature2] [...]
查看程序包information
info [...]
在包名和sumary信息中搜索指定的关键字:
search string1 [string2] [...]

>>安装及升级本地程序包
>>>yum localinstall rpmfile1 [rpmfile2] [...]
yum localupdate rpmfile1 [rpmfile2] [...]

>>包组管理
>>>安装:yum groupinstall group1 [group2] [...]
升级:yum groupupdate group1 [group2] [...]
列表:yum grouplist [hidden] [groupwildcard] [...]
卸载:yum groupremove group1 [group2] [...]
显示指定包组详情:yum groupinfo group1 [...]
>>>>注意:也可直接用install 、remove或update来管理包组,需要在组名前加@符号,如yum install@"Server Platform Development"

>>yum的命令选项
>>>--nogpgcheck:禁止进行gpg check;
-y:自动回答为“yes”
-q:静默模式
--disablerepo=repoidglob:临时禁用此处指定的repo
--enablerepo=repoidglob:临时启用此处指定的repo
--noplugins:禁用所有插件


>yum私有仓库的创建
>>1.安装createrepo程序包
2.确定repository输出方式
1)本地输出:提供一个放置rpm包的本地路径
file形式
2)网络输出:提供一个文件服务器,配置好ftp服务或http服务
ftp服务:
安装程序包:vsftpd
文件存放路径:/var/ftp/pub
启动服务:service vsftpd start
http服务:
安装程序包:httpd
文件存放路径:/var/www/html
启动服务:service httpd start
注意:确保关闭防火墙服务
3)在准备好的目录中放置rpm程序包
4)对此目录执crearerepo命令即可

4、写一个脚本实现列出以下菜单给用户:

(1)disk:show disk info信息

(2)mem: show memory info信息

(3)cpu: show cpu info信息

(*)quit

     #!/bin/bash
     #
    cat << EOF
    disk)show disks info
    mem)show memory info
    cpu)show cpu info
    *)QUIT
    EOF 

5、sed用法总结并结合实例演示

sed [OPTION]... ‘script’ [input-file]...[actions]

OPTION(常用选项)

-n:不输出模式空间中的内容至屏幕
-e script,--expression=script:多点编辑
-f /PATH/TO/SED_SCRIPT_FILE
每行一个编辑命令:
-r,--regexp-extended:支持使用扩展正则表达式
-i[SUFFIX],--in-place[-SUFFIX]:直接编辑原文件

‘script'(地址定界编辑命令)

地址定界
(1)空地址:对全文进行处理;
(2)单地址:
#:指定行
/pattern/:被此模式所匹配到的每一行
(3)地址范围
#,#:
#,+#:
#,/part1/
/paer1/,/part2/
$:最后一行
(4)步进:~
1~2:所有奇数行
2~2:所有偶数行

编辑命令
d:删除
p:显示模式空间中的内容;
a \test:在行后面追加文本“test”,支持使用\n实现多行追加
i \test:在行前面插入文本"test",支持使用\n实现多行插入
c \test:把匹配到的行替换为此处指定的文本“test”
w /PATH/TO/SOMEFILE:保存模式空间匹配到的行至指定的文件中
r /PATH/FROM/SOMEFILE:读取指定文件的内容至当前文件被模式匹配到的行后面;文件合并
=:为模式匹配到的行打印行号
!:条件取反

高级编辑命令
h:把模式空间中的内容覆盖至保持空间中;
H:把模式空间中的内容追加至保持空间中;
g: 把保持空间中的内容覆盖至模式空间中;
G :把保持空间中的内容追加至模式空间中;
x:把模式空间中的内容和保持空间中的内容互换
n:覆盖读取匹配到的行的下一行至模式空间中
N:追加读取匹配到的行的下一行至模式空间中
d:删除模式空间中的行
D:删除多行模式空间中的所有行

示例
输出一个绝对路径给sed命令,取出其目录,其行为类似于dirname
echo "/var/log/messeges/" | sed -r 's@[^/]+/?/d;G' FILE

6、 用bash实现统计访问日志文件中状态码大于等于400的IP数量并排序

sed -n -r '/<40[0-9]>/p' /var/log/httpd/access_log | cut -d" " -f1 | sort | uniq -c

7、 使用自制的yum源安装ftp、openssh、curl、wget、tcpdump等软件包

 mkdir /tmp/test
createrepo /tmp/test
 vim /etc/yum.repos.d/CentOS-Test.repo
 [TEST]
name=CentOS-7-TEST
baseurl=file:///tmp/test
gpcheck=0
enabled=1
cost=100

你可能感兴趣的:(2019-05-27)