linux作业

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

 

在crontab -e中:* */12 * * * tar czf /back/etc-`date +"%F-%H-%M"`.tar.gz /etc

 

sed-1.png


 

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

RPM,原名Red-hat Package Manager,成为行业标准后改名为RPM Package Manager

RPM包的命名格式为:{package}-{version}-{release}.{arch}.rpm

比较大的包可以分成主包和多个子包,主包包含主要功能,子包包含扩展功能。主包命名格式:{masterpackage}-{version}-{release}.{arch}.rpm,子包命名格式:{masterpackage}-{subpackage}-{version}-{release}.{arch}.rpm

 

CentOS系统上rpm命令管理程序包:

安装、升级、卸载、查询和校验、数据库维护

 

rpm命令:rpmOPTIONS】【Package FIle

安装:-i--install

升级:-U--update-F--freshen

卸载:-e--erase

查询:-q--query

校验:-V--verify

数据库维护:--builddb--initdb

 

 

1rmp安装:

rpm{-i|--install}[install-options]PACKAGE_FILE….

 

安装rpm命令:rpm -ivh Package_FILE

 

General Options

-vverbose 详细信息

-vv:更详细的信息

 

[install-options]

-hhash marks输出进度条,每个#表示2%的进度

--test:测试安装,检查并报告依赖关系和冲突消息等

--nodeps:忽略依赖关系,不建议

--replacepkgs:重新安装

 

备注:rpm可以自带脚本,

四类:

preinstall:安装过程开始之前运行的脚本,%pre

Postinstall:安装过程完成之后运行的脚本,%post

preuninstall:卸载过程真正开始执行之前运行的脚本,%prun

postuninstall:卸载过程完成之后运行的脚本

 

--nosignature:不检查包签名信息,不检查来源合法性

--nodigest:不检查包完整性信息

 

2rpm 升级:

 rpm {-U|--upgrade} [install-options] PACKAGE_FILE ...

 rpm {-F|--freshen} [install-options] PACKAGE_FILE ...

 

-U:升级或安装

-F:升级

 

rpm -Uvh Package_FILE……

rpm -Fvh Package_FILE……

 

--oldpackage:降级

--force:强制升级;

 

注意:

1)不要对内核做升级操作,linux支持多内核版本并存,因此,直接安装新版本内核

2)如果某原程序包的配置文件安装后曾被修改过,升级时,新版本的程序提供的同一个配置文件不会覆盖原有版本的配置文件,而是把新版本的配置文件重命名(filename.rpmnew)后提供;

 

3rpm 卸载:

rpm {-e|--erase} [--allmatches] [--justdb] [--nodeps] [--noscripts]

           [--notriggers] [--test] PACKAGE_NAME ...

 

--allmatches:卸载所有匹配指定名称的程序包的各版本

--nodeps:忽略依赖关系

--test:测试卸载,dry run 模式

 

4rpm 查询:

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

 

select-options

PACKAGE_NAME:查询指定的程序包是否已经安装,及其版本

-a-all;查询所有已经安装过的包;

-f  FILE:查询指定的文件由那个程序包安装生成;

 

-p--package PACKAGE_FILE:用于实现对未安装的程序包执行查询操作

 

--whatprovides CAPABILITY:查询指定的CAPABILITY由哪个程序包提供

--whatrequires CAPABILITY:查询指定的CAPABILTY被哪个包所依赖

 

query-options

--changelog:查询rpm包的changlog

-l--list:程序安装生成的所有文件列表;

-i--info:程序包相关的信息,版本号,大小,所属的包组

-c--configuretion:查询指定的程序提供的配置文件

-d--docfiles:查询指定的程序包提供的文档

-provides:列出指定的程序包提供的所有的CAPABILITY

-R--requires:查询指定的程序包的依赖关系

--scipts:查看程序包自带的脚本片段

 

用法:

-qi  PACKAGE-qf FILE-qc PACKAGE

-ql PACKAGE-qd PACKAGE

 

5rpm校验:

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

 

6、验证包来源合法性和完整性:

来源合法性:

数字签名

完整性验证

 

获取并导入信任的包制作者的密钥;

对于centos发行版来说,rpm-import /etc/pki/rpm-gpg/PM-GPG-KEY-CentOS-7

 

验证:

1)安装此组织签名的程序时,会自动执行验证

2)手动验证:rpm -K PACKAGE_FILE

 

7、数据库重建:

Rpm 管理器数据库路径:/var/lib/rpm

查询操作:通过此处的数据库进行;

 

Rpm {--initdb|--rebuilddb}

Initdb:初始化

如果事先不存在数据库,则新建之,否则,不执行任何操作

 

rebuilddb:重建

无论当前存在与否,直接重新创建数据库



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

 

yum用法:yum [options] [command] [package ...]

yum子命令:

install:安装指定的(多个)包或包组。

update:更新。如果不指定任何包,会升级所有已经安装的包。

update-to:类似update命令,但是升级到指定的版本。

update-minimal:类似update命令,但只升级到比当前版本高的最低版本。

check-update:检查是否有更新。命令状态码返回100表明有更新,0没有更新,1表示出错。

upgrade:同update --obsoletes,会删除被淘汰的包。

upgrade-to:类似upgrade,但只升级到指定版本。

remove/erase:卸载指定包及依赖此包的其他包。有一些配置可以想必卸载的行为。

remove_leaf_only:只卸载不被依赖的包。

clean_requirements_on_remove:卸载的同时,卸载只依赖此包的其他包。

autoremove:清除非显式安装的,不再被其他包依赖的包。

list OPTIONS:列出指定类型的包。

all:所有,默认。

available:仓库中有,可以安装。

updates:可以升级。

installed:已经安装。

extras:已安装,但仓库中没有。

obsoletes:已经安装且被淘汰的。

recent:最近添加到仓库中的。

provides/whatprovides:查询指定的文件或特性是由哪个包生成的。

search:根据包名和描述查找相关的包。

info:查看指定包的描述信息,可用的opionlist命令。

clean:清除yum缓存目录下的文件。

expire-cache:过期的元数据和镜像列表。

packagesrpm包。

headers:头文件。

metadata:元数据文件。

dbcache:本地元数据库。

rpmdbrpm缓存。

plugins:扩展插件缓存。

all:以上所有。

makecache:构建元数据的缓存。

localinstall:安装指定的本地rpm文件包,自动解决依赖问题。

localupdate:用指定的rpm文件包升级,自动解决依赖问题。

reinstall:重新安装。

downgrade:降级。

swap foo bar:卸载foo,安装bar

deplist:显示包的依赖,和提供这些依赖的包。

repolist:列出仓库信息。

enabled:列出启用的仓库,默认。

disabled:列出禁用的仓库。

all:列出所有仓库。

history:列出历史事务。

groupinstall:安装指定组。

groupupdate:更新指定组。

grouplist:查看所有组。

groupremove:卸载组。

groupninfo:查看组信息。

yum选项:

-y:对所有互动回答为yes

-c:指定yum配置文件位置。

-q:静默模式。

-v:显示调试信息。

--disablerepo:临时禁用repo

--enablerepo:临时启用repo

--nogpgcheck:不检查来源合法性。

创建yum仓库:createrepo [options] DIRECTORY

-u URL:指定baseurl,访问仓库的url

--basedir:指向rpm文件目录的路径,默认是当前目录

-x:排除的文件,可用glob指定。

仓库元数据:在仓库的repodate目录中

primary.xml.gz:指明了仓库中所有rpm包,依赖关系,每个包安装后会生成的文件。

filelists.xml.gz:当前仓库中所有rpm包的所有文件列表。

other.xml.gz:额外信息,比如修改日志。

repomd.xml:上述三个文件的时间戳和检验和。

comps*.xml:分组信息。

yum相关配置

配置文件:/etc/yum.conf,为所有仓库提供公共配置。

特性配置文件:/etc/yum.repos.d/*.repo,为指定的仓库提供配置。

配置文件中的变量:

$releaseserver:当前发行版的主版本号

$archCPU平台体系

$basearch:基础CPU平台体系。

$YUM0-$YUM9:自定义变量。

配置文件格式:

[repoid] # 仓库的唯一标识

name=NAME # 仓库的名称

baseurl=URL # 访问仓库的路径,可用ftp://http://file:/// 协议指定,可指定多个,一行一个

mirrorlist=URL # 指向一个包含多个baseurl的文件的url

enabled=[1|0] # 启用/禁用仓库

gpgcheck=[1|0] # /否验证文件来源的合法性。

gpgkey=URL # 指向gpg key文件的url

enabledgroups=[1|0] # 是否支持组

failovermethod=[roundrobin|priority] # 访问baseurl失败时,查找下一个baseurl的策略,roundrobin:随机选择,priority:顺序选择下一个。

keepalive=[1|0] # 使用HTTP/1.1时,是否支持keepalive

cost=num # 仓库开销,用来衡量仓库的性能,默认1000,越小说明性能越好。

 

 

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

1diskshow disk info信息

2mem: show memory info信息

3cpu: show cpu info信息

*quit

 

#!/bin/bash

#

cat << EOF

disk) show disks info

mem)  show memory info

cpu)  show cpu info

*) QUIT

EOF

read -p "your choice:" option

if [ "$option" == 'disk' ];then

    fdisk -l /dev/[sh]d[a-z]

elif [ "$option" == 'mem' ];then

     free -m

elif [ "$option" == 'cpu' ];then

    lscpu

else

    echo "Unkown option"

    exit 3

fi

 

 

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

 

sed [OPTION]... {script-only-if-no-other-script} [input-file]…

script

地址定界编辑命令;

 

                    常用选项:

-n:不输出模式空间中的内容至屏幕

-e script, --expression=script:多点编辑

 

-f /path/to/sed_script_file

每行一个编辑命令:

 

-r, --regexp-extended:支持使用扩展正则表达式;

 -iSUFFIX], --in-place[=SUFFIX]: 直接编辑源文件

地址定界:

1)空地址:表示对全文进行处理;

2)单地址:

#:指定行;

/pattern/:被此模式所匹配到的每一行;

 

3)地址范围:

##

#+#

#/pat1/

/pat1/,/pat2/

$:表示最后一行;

 

4)步进:~

1~2::所有奇数行

2~2:所有偶数行

 

编辑命令:

d:删除

 

]# sed -n '1,5d' fstab

-n 不输出

 

显示偶数行:

]# sed '1~2d' fstab

 

-p:显示模式空间中的内容

 

]# sed -n '1~2p' fstab

显示奇数行

 

a \test:在行后面追加文本“text”,支持使用\n实现多行追加

i \text:在行前面插入文本“text”,支持使用\n实现多行插入

 

c \text:把匹配到的行替换为此处指定的文本“text”

 

w /path/to/somefile:保存模式空间匹配到的行至指定的文件中

 

-r /path/from/somefile:读取指定文件的内容至当前文件被模式匹配到的行后面

 

 

!:表示条件取反

地址定界! 编辑命令:

s/// :查找替换,其分割符可自行指定,常用的有:[email protected]@@, s###

替换标记:

g:全局替换

w /path/to/somefile:将替换成功的结果保存至指定文件中;

                    p:显示替换成功的行;

 

 

 

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

 

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

 

 

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

 

1root目录下,新建目录myrepo/Packages

2、 从光盘中复制相应的rpm包到Pacakges目录。

3、 执行命令createrepo -u /root/myrepo/Packages /root/myrepo

4、 编辑文件/etc/yum.repos.d/myrepo.repo,添加如下内容:

 

[myrepo]

name=my custom repo

baseurl=file:///root/myrepo

enabled=1

gpgcheck=0

 

5yum install XXX

 


猜你喜欢

转载自blog.51cto.com/wbyyy/2349211
0条评论
添加一条新回复