第五周作业

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


©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 213,254评论 6 492
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,875评论 3 387
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 158,682评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,896评论 1 285
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,015评论 6 385
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,152评论 1 291
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,208评论 3 412
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,962评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,388评论 1 304
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,700评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,867评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,551评论 4 335
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,186评论 3 317
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,901评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,142评论 1 267
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,689评论 2 362
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,757评论 2 351

推荐阅读更多精彩内容