第五周作业

1、简述rpm与yum命令的常见选项,并举例
CentOS系统上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:重新安装
                    
                    注意:rpm可以自带脚本;
                        四类:–noscripts
                            preinstall:安装过程开始之前运行的脚本,%pre , –nopre
                            postinstall:安装过程完成之后运行的脚本,%post , –nopost
                            preuninstall:卸载过程真正开始执行之前运行的脚本,%preun, –nopreun 
                            postuninstall:卸载过程完成之后运行的脚本,%postun , –nopostun
                            
                    –nosignature:不检查包签名信息,不检查来源合法性;
                    –nodigest:不检查包完整性信息;
                    
        升级:
            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)后提供;
                        
        卸载:
            rpm {-e|–erase} [–allmatches] [–nodeps] [–noscripts] [–test] PACKAGE_NAME …
                
                –allmatches:卸载所有匹配指定名称的程序包的各版本;
                –nodeps:忽略依赖关系
                –test:测试卸载,dry run模式
                
        查询:
            rpm {-q|–query} [select-options] [query-options]
            
             [select-options]
                PACKAGE_NAME:查询指定的程序包是否已经安装,及其版本;
                -a, –all:查询所有已经安装过的包;
                -f  FILE:查询指定的文件由哪个程序包安装生成;
                
                -p, –package PACKAGE_FILE:用于实现对未安装的程序包执行查询操作;
                
                –whatprovides CAPABILITY:查询指定的CAPABILITY由哪个程序包提供;
                –whatrequires CAPABILITY:查询指定的CAPABILITY被哪个包所依赖;
                
            [query-options]
                –changelog:查询rpm包的changlog;
                -l, –list:程序安装生成的所有文件列表;
                -i, –info:程序包相关的信息,版本号、大小、所属的包组,等;
                -c, –configfiles:查询指定的程序包提供的配置文件;
                -d, –docfiles:查询指定的程序包提供的文档;
                –provides:列出指定的程序包提供的所有的CAPABILITY;
                -R, –requires:查询指定的程序包的依赖关系;
                –scripts:查看程序包自带的脚本片断;
                
            用法:
                -qi  PACKAGE, -qf FILE, -qc PACKAGE, -ql PACKAGE, -qd PACKAGE
                -qpi  PACKAGE_FILE, -qpl PACKAGE_FILE, -qpc PACKAGE_FILE, …
                
        校验:
            rpm {-V|–verify} [select-options] [verify-options]    
                
                
            S file Size differs
            M Mode differs (includes permissions and file type)
            5 digest (formerly MD5 sum) differs
            D Device major/minor number mismatch
            L readLink(2) path mismatch
            U User ownership differs
            G Group ownership differs
            T mTime differs
            P caPabilities differ
yum命令的用法:

    显示仓库列表:
        repolist [all|enabled|disabled]

    显示程序包:
        list
            # yum list [all | glob_exp1] [glob_exp2] […]
            # yum list {available|installed|updates} [glob_exp1] […]

    安装程序包:
        install package1 [package2] […]

        reinstall package1 [package2] […]  (重新安装)

    升级程序包:
        update [package1] [package2] […]

        downgrade package1 [package2] […] (降级)

    检查可用升级:
        check-update

    卸载程序包:
        remove | erase package1 [package2] […]

    查看程序包information:
        info […]

    查看指定的特性(可以是某文件)是由哪个程序包所提供:
        provides | whatprovides feature1 [feature2] […]

    清理本地缓存:
        clean [ packages | metadata | expire-cache | rpmdb | plugins | all ]

    构建缓存:
        makecache
2、自建yum仓库,分别为网络源和本地源

配置本地源

    建立本地源目录
    [root@localhost ~]#mkdir /mnt/cdrom
    [root@localhost ~]#mkdir /yum

    挂载Centos光盘
    [root@localhost ~]#mount /dev/cdrom /mnt/cdrom
    [root@localhost ~]#cp -r /mnt/cdrom/* /yum

    备份repo
    [root@localhost ~]#cd /etc/yum.repo.d/
    [root@localhost ~]#mkdir backup
    [root@localhost ~]#mv CentOS-Base.repo CentOS-CR.repo CentOS-Vault.repo CentOS-Vault.repo ./backup
    编辑Centos-Media.repo
    [root@localhost ~]#vim Centos-Media.repo

    [base]
    name=Centos
    baseurl=file:///yum
    enable=1
    gpgckeck=0
    gpgkey=file:///mnt/cdrom/RPM-GPG-KEY-CentOS-7

    清除yum缓存
    [root@localhost ~]#yum clean all

配置网络源

    备份源镜像文件
    [root@localhost yum.repos.d]# mv centos* ./backup

    下载阿里云的镜像到/etc/yum.repos.d/
    [root@localhost yum.repos.d]# wget -O /etc/yum.repos.d/CentOS-Base.repo
    http://mirrors.aliyun.com/repo/Centos-7.repo

    清除yum缓存
    [root@localhost yum.repos.d]# yum clean all
    [root@localhost yum.repos.d]# yum makecache


3、简述at和crontab命令,制定 每周三凌晨三、五点10分执行某个脚本,输出当前时间,时间格式为 2017-12-28 10:00:00
    at命令:
            常用选项:
                -l:查看作业队列,相当于atq
                -f /PATH/FROM/SOMEFILE:从指定文件中读取作业任务,而不用再交互式输入;
                -d:删除指定的作业,相当于atrm;
                -c:查看指定作业的具体内容;
                -q QUEUE:指明队列;


    crontab命令:
                crontab [-u user] [-l | -r | -e] [-i] 
                    -e:编辑任务;
                    -l:列出所有任务;
                    -r:移除所有任务;即删除/var/spool/cron/USERNAME文件;
                    -i:在使用-r选项移除所有任务时提示用户确认;
                    -u user:root用户可为指定用户管理cron任务;

举例:
[root@localhost ~]# crontab -e
no crontab for root – using an empty one
10 3,5 * * 3 root date "+%Y-%m_%d %H:%M:%S"
[root@localhost ~]# crontab -l
10 3,5 * * 3 root date "+%Y-%m_%d %H:%M:%S"    

4、简述sed常用操作命令,并举例
 
sed是一个很好的文件处理工具,本身是一个管道命令,主要是以行为单位进行处理,可以将数据行进行替换、删除、新增、选取等特定工作,下面先了解一下sed的用法
sed命令行格式为:
         sed [-nefri] ‘command’ 输入文本        
常用选项:
        -n∶使用安静(silent)模式。在一般 sed 的用法中,所有来自 STDIN的资料一般都会被列出到萤幕上。但如果加上 -n 参数后,则只有经过sed 特殊处理的那一行(或者动作)才会被列出来。
        -e∶直接在指令列模式上进行 sed 的动作编辑;
        -f∶直接将 sed 的动作写在一个档案内, -f filename 则可以执行 filename 内的sed 动作;
        -r∶sed 的动作支援的是延伸型正规表示法的语法。(预设是基础正规表示法语法)
        -i∶直接修改读取的档案内容,而不是由萤幕输出。       
常用命令:
        a   ∶新增, a 的后面可以接字串,而这些字串会在新的一行出现(目前的下一行)~
        c   ∶取代, c 的后面可以接字串,这些字串可以取代 n1,n2 之间的行!
        d   ∶删除,因为是删除啊,所以 d 后面通常不接任何咚咚;
         i   ∶插入, i 的后面可以接字串,而这些字串会在新的一行出现(目前的上一行);
         p  ∶列印,亦即将某个选择的资料印出。通常 p 会与参数 sed -n 一起运作~
         s  ∶取代,可以直接进行取代的工作哩!通常这个 s 的动作可以搭配正规表示法!例如 1,20s/old/new/g 就是啦!
举例:(假设我们有一文件名为ab)
删除某行
     [root@localhost ~] # sed '1d' test.txt             #删除第一行 
     [root@localhost ~] # sed '$d' test.txt             #删除最后一行
     [root@localhost ~] # sed '1,2d' test.txt          #删除第一行到第二行
     [root@localhost ~] # sed '2,$d' test.txt          #删除第二行到最后一行
显示某行
.    [root@localhost ~] # sed -n '1p' test.txt          #显示第一行 
     [root@localhost ~] # sed -n '$p' test.txt          #显示最后一行
     [root@localhost ~] # sed -n '1,2p' test.txt       #显示第一行到第二行
     [root@localhost ~] # sed -n '2,$p' test.txt       #显示第二行到最后一行
使用模式进行查询
     [root@localhost ~] # sed -n '/~/p' test.txt   #查询包括关键字~所在所有行
     [root@localhost ~] # sed -n '/\$/p' test.txt       #查询包括关键字$所在所有行,使用反斜线\屏蔽特殊含义
增加一行或多行字符串
     [root@localhost ~]# cat ab
     Hello!
     ~ is me,welcome to my blog.
     end
     [root@localhost ~] # sed '1a drink tea' test.txt #第一行后增加字符串"drink tea"
     Hello!
     drink tea
     ~ is me,welcome to my blog. 
     end
     [root@localhost ~] # sed '1,3a drink tea' test.txt#第一行到第三行后增加字符串"drink tea"
     Hello!
     drink tea
     ~ is me,welcome to my blog.
     drink tea
     end
     drink tea
     [root@localhost ~] # sed '1a drink tea\nor coffee' test.txt  #第一行后增加多行,使用换行符\n
     Hello!
     drink tea
     or coffee
     ~ is me,welcome to my blog.
     end
代替一行或多行
     [root@localhost ~] # sed '1c Hi' test.txt               #第一行代替为Hi
     Hi
     ~ is me,welcome to my blog.
     end
     [root@localhost ~] # sed '1,2c Hi' test.txt            #第一行到第二行代替为Hi
     Hi
     end
替换一行中的某部分
格式:sed 's/要替换的字符串/新的字符串/g'   (要替换的字符串可以用正则表达式)
     [root@localhost ~] # sed -n '/~/p' test.txt | sed 's/~/bird/g'    #替换~为bird
  [root@localhost ~] # sed -n '/~/p' test.txttest.txt | sed 's/~//g'        #删除~
     插入
     [root@localhost ~] # sed -i '$a bye' test.txt        #在文件ab中最后一行直接输入"bye"
     [root@localhost ~]# cat test.txt
     Hello!
     ~ is me,welcome to my blog.
     end
     bye

原创文章,作者:dony,如若转载,请注明出处:http://www.178linux.com/124439

发表评论

登录后才能评论

This site uses Akismet to reduce spam. Learn how your comment data is processed.

联系我们

400-080-6560

在线咨询

工作时间:周一至周五,9:30-18:30,节假日同时也值班

QR code