第五周作业

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

crontab -e

  0 */12 * * * tar -zcf /backup/etc-`date +\%F-\%H-\%M`.tar.gz

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

概述:

    系统级开发:(直接调用硬件资源)

        C/C++:httpd,vsftpd,nginx

        go

    应用级开发:

            java/python/perl/ruby/php:

                    java:hadoop,hbase,(运行java程序依赖于jvm虚拟机)

                    python:OpenStack,(pvm)

                    perl:(perl解释器)

                    ruby:(ruby解释器)

                    php:(php解释器)

        C/C++程序格式:

            源代码:文本格式的程序代码

                    编译开发环境:编译器、头文件、开发库

            二进制格式:文本格式的程序代码 --> 编译器 --> 二进制格式(二进制程序、库文件、配置文件、帮助文件)


    java/python程序格式:

        源代码:编译成能够在其虚拟机(jvm.pvm)运行的格式

                开发环境:编译器、开发库

        二进制:

    项目建构工具:

        c/c++:make

    java:maven

程序包管理器:

        源代码 --> 目标二进制格式 --> 组织成为一个或有限的几个“包”文件(二进制程序、库文件)

            安装、升级、卸载、查询、校验

程序包管理器:

    Debian:dpt,dpkg,“.deb”

    Redhat:Redhat package manager(红包管理工具),rpm,“.rpm”;rpm is package manager

    S.U.S.E:rpm,“.rpm”

    Gentoo:ports

    ArchLinux:

源代码:name-VERSION.tar.gz

VERSION:major,minor.release

rpm包命名格式:

        name-VERSION-release.arch.rpm

        VERSION:major.miinor.release

        release.arch:rpm包的发行号

                release.os:2.el7.i386.rpm

                archetecture:i386,x64(amd64),ppc,noarch

            redis-3.0.2.targz --> redis-3.0.2-1.centos7.x64.rpm

拆包:主包和支包

        主包:name-VERSION-release.arch.rpm

        支包:name-function-VERSION-release.arch.rpm

                function:devel,utils,libs


依赖关系:

        x,y,z

                x --> y,z

                y --> A,B,C

                C --> y


前端工具:自动解决依赖关系

        yum:Redhat系列系统上rpm包管理器的前端工具

        apt-get:debian包管理器的前端工具

        zypper:suse的rpm管理器前端工具

        dnf:Fedora 22+系统上rpm包管理器的前端工具


程序包管理器:

        功能:将编译好的应用程序的各组成文件打包成一个或几个程序包文件,从而更方便的实现程序包的安装、升级、卸载和查询等管理操作

1、程序包的组成清单(每个程序包都单独实现)

        文件清单

        安装或卸载时运行的脚本

2、数据库(公共)

        程序包的名称和版本

        依赖关系

        功能说明

        安装生成的各文件的文件路径及校验码信息

        等等等

        rpm的数据库的存放路径:/var/lib/rpm/目录下


获取程序包(rpm)的途径:

    (1)系统发行版的光盘或官方的文件服务器(或镜像站点)

            http://mirrors.aliyun.com

            http://mirrors.sohu.com

            http://mirrors.163.com

    (2)项目的官方站点

    (3)第三方组织:

                (a)EPEL

                (b)搜索引擎

                            http://pkgs.org

                            http://rpmfind.net

                            http://rpm.pbone.net

    (4)自己动手,丰衣足食

    

        建议:检查包合法性

                    来源合法性

                    程序包完整性


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

    使用rpm命令管理程序包,主要包括安装、升级、卸载、查询和校验、数据库维护这几个功能


    rpm命令:rpm [OPTIONS] [PACKAGE_FILE]

            安装:-i,--install

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

            卸载:-e,--erase

            查询:-q,--query

            校验:-V,--verify

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

安装:

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

                常用的安装命令:rpm -ivh PACKAGE_FILE ...

                GENERAL OPTIONS(通用选项)

                    -v:verbose,详细信息

                    -vv:更详细的输出

        【install options】(安装选项)

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

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

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

                --replacepkgs:重新安装

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

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

                --noscripts:不运行所有安装脚本

                注意:rpm可以自带脚本,这些脚本可以分为四类

                        四类:--noscripts

                                preinstall:安装过程开始之前运行的脚本,--nopre:不运行

                                postinstall:安装过程完成之后运行的脚本,--nopost:不运行

                                preuninstall:卸载过程开始执行之前运行的脚本,--noperun:不运行

                                postuninstall:卸载过程完成之后运行的脚本,--nopostun:不运行


升级:

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

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

            -U:升级或安装

            -F:升级

         常用的升级命令:

                rpm -Uvh PACKAGE_FILE...

                 rpm -Fvh PACKAGE_FILE ...

        升级选项:

                --oldpackage:降级

                --force:强制升级

        注意:

                (1)不要对内核做升级操作;Linux支持多内核版本并存,因此,应该直接安装新版本内核。

                (2)如果某原版本程序包的配置文件安装后被修改过,那么升级时,rpm程序包管理器会认为这个修改是有用的,新版本提供的同一个配置文件不会覆盖原有版本的配置文件,而是把新版本的配置文件重命名(FILENAME.rpm

new)后提供


卸载:

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

    选项:

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

        --nodeps:忽略依赖关系

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



查询:

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

    [SELECT-OPTIONS]:

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

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

            -f FILE:查询指定的文件由哪个程序包生成的

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

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

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


    QUERY-OPTIONS:

            --changelog:查询rpm包的changelog

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

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

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

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

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

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

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


第五周作业_第1张图片

校验:

    rpm程序包的来源合法性验证和完整性验证的实现过程


第五周作业_第2张图片

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

    对于CentSO发行版来说,可使用:rpm -import /etc/pki/rpm-gpg/RPM-GPG-KEY-Centos-x


验证方式:

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

        (2)手动验证:rpm -K PACKAGE_FILE


数据库维护(数据库重建)

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

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

获取帮助:

        CentOS 7:man rpmdb

        CentOS 6:man rpm

        rpm { --initdb | --rebuilddb }

                --initdb:初始化数据库,当前无任何数据库时可初始化创建一个新的,当前有时不执行任何操作

                --rebuilddb:重新构建,通过读取当前系统上的所有已经安装过的程序包进行重新创建


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

yum是一个shell前段软件包管理器,基于rpm包管理,能够从指定的服务器自动下载rpm包并且安装,可以自动处理依赖性关系,并且一次安装所有依赖的软件包,无需繁琐的一次次下载、安装。


yum基本用法

1、安装

        yum install PACKAGE1安装指定的PACKAGE1

        yum groupinstall GROUP1安装指定的程序包组GROUP1

2、更新和升级

        yum update   #全部更新

        yum update PACKAGE1  #更新指定程序包PACKAGE1

        yum check-update #检查可更新的程序

        yum upgreade PACKAGE1 #升级指定程序包PACKAGE1

        yum groupupdate GROUP1 #升级程序包组GROUP1

3、查找和显示

        yum info PACKAGE1 #显示安装包信息PACKAGE1

        yum list #列出所有已经安装和可以安装的程序包

        yum list PACKAGE1 #显示指定程序包安装情况PACKAGE1

        yum groupinfo GROUP1  #显示程序包组GROUP1信息yum search string 根据关键字 string查找安装包

4、删除程序

        yum remove PACKAGE1  #删除程序包PACKAGE1

        yum groupremove  GROUP1  #删除程序包组GROUP1

        yum deplist PACKAGE1  #查询程序PACKAGE1依赖情况

5、清除缓存

        yum clean PACKAGES #清除缓存目录下的软件包

        yum clean headers #清除缓存目录下的headers

        yum clean oldheaders #清除缓存目录下旧的headers

        yum clean all #清除缓存目录下的所有软件包及旧的headers

构建缓存:yum makecache

搜索:yum search string1  #以关键字搜索程序及summary信息

yum的命令选项:

        --nogpgcheck:禁止进行 gpg check

        -y:自动回答为“yes”

        -q:静默模式

yum的repo配置文件中可用的变量:

        $releasever:当前OS的发行版的主版本号;centos 7.5 , 7为主版本号

        $arch:平台(架构)i386 i486 i 586 x64

        $basearch:基础平台;全部识别为i386

        $YUM0-$YUM9

如何使用光盘当作本地yum仓库:

    (1)挂载光盘至某目录,例如/media/cdrom

                # mount -r -t iso9660 /dev/cdrom /media/cdrom

    (2)创建配置文件

            [Centos7]

            name=

            baseurl

            gpgcheck=

            enabled=

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

(1)disk:show disk info信息

(2)mem: show memory info信息

(3)cpu: show cpu info信息

(*)quit


第五周作业_第3张图片

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

    sed命令:

        模式空间、保持空间

         sed [OPTION]... `scrip` [input-file]...

                scrip(脚本):

                        地址定界、编辑命令

            常用选项:

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

                    -e script:实现多点编辑(能同时指定多个编辑命令)

                    -f /PATH/TO/SED_SCRIPT_FILE

                        每一行一个编辑命令

                    -r:支持使用扩展正则表达式

                    -i [SUFFIX]:直接编辑原文件


                地址定界:

                        (1)空地址(不给地址):对全文进行处理

                        (2)单地址:

                                        #:指定行

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

                        (3)地址范围

                                    #,#:多少行到多少

                        (4)编辑命令

                                        d:删除

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

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

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

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

                                        w /PATH/TO/SOMEFILE:保存模式空间匹配到的行至指定的文件中

                                        r /PATH/FORM/SOMEIFLE::读取指定文件的内容至当前文件被模式匹配到的行的下一行,文件合并

                                        =:为模式匹配到的行打印行号

                                        !:条件取反

                                                地址定界!编辑命令

                                        s///:查找替换,其分隔符可自行指定,常用的有s@@@,s###等

                                            替换标记:

                                                    g:全局替换

                                                    w /PATH/TO/SOMEFILE:将替换成功的结果保存至指定文件中

                                                    p:显示替换成功的行

                    高级编辑命令:

                            h:把模式空间中的内容覆盖至保持空间中

                            H:把模式空间中的内容追加至保持空间中

                            g:把保持空间中的内容覆盖至模式空间中

                            G:把保持空间中的内容追加至模式空间中

                            x:把模式空间的内容与保持空间的内容互换

                            n:读取匹配到的行的下一行至模式空间中(将会覆盖模式空间的内容)

                            N:读取匹配到的行的下一行至模式空间中(追加至模式空间中)

                            d:删除模式空间中的行

                            D:删除多行模式空间中的所有行

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

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

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


第五周作业_第4张图片

你可能感兴趣的:(第五周作业)