美文网首页
第五周作业

第五周作业

作者: 小邢_ | 来源:发表于2019-03-07 17:37 被阅读0次

    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:查看程序包自带的脚本片段

    校验:

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

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

        对于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

    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等软件包

    相关文章

      网友评论

          本文标题:第五周作业

          本文链接:https://www.haomeiwen.com/subject/drteuqtx.html