第五周博客作业

1、简述rpm与yum命令的常见选项,并举例
2、自建yum仓库,分别为网络源和本地源
3、简述at和crontab命令,制定 每周三凌晨三、五点10分执行某个脚本,输出当前时间,时间格式为 2017-12-28 10:00:00
4、简述sed常用操作命令,并举例

1、简述rpm与yum命令的常见选项,并举例

1)什么是rpm?

RPM 是RPM Package Manager(RPM软件包管理器)的缩写,现在包括OpenLinux、S.u.S.E.以及Turbo Linux等Linux的分发版本都有采用,可以实现安装、升级、卸载、查询和校验、数据库维护。

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

 rpm命令:rpm  [OPTIONS]  [PACKAGE_FILE]
             安装:-i, --install
             升级:-U, --update, -F, --freshen
             卸载:-e, --erase
             查询:-q, --query
             校验:-V, --verify
             数据库维护:--builddb, --initdb

 (2)rmp的安装:

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

    常用格式 : rpm  -ivh  PACKAGE_FILE ...

            [一般选项]:
                -v:verbose,详细信息
                -vv:更详细的输出

            [install-options]:
                -h:hash marks输出进度条;每个#表示2%的进度;
                --test:测试安装,检查并报告依赖关系及冲突消息等;
                --nodeps:忽略依赖关系;不建议;
                --replacepkgs:重新安装
    安装rpm示例:
[root@localhost ~]# mount -t vfat /dev/sdb1 /media/usb                        #挂载U盘
[root@localhost ~]# cd /media/usb/123                                         #切换到RPM包所在目录 
[root@localhost 123]# rpm -ivh python-libs-2.6.6-66.el6_8.x86_64.rpm          #安装rpm包
warning: python-libs-2.6.6-66.el6_8.x86_64.rpm: Header V3 RSA/SHA1 Signature, key ID c105b9de: NOKEY
Preparing...                ########################################### [100%]

(3)rpm的升级:

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)后提供;

 

(4)rpm的 卸载:

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

            --allmatches:卸载所有匹配指定名称的程序包的各版本;
            --nodeps:忽略依赖关系
            --test:测试卸载,dry run模式

(5)rpm的 查询:

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:查询指定安装包相关信息

   [root@localhost ~]# rpm -qi python
    Name : python Relocations: (not relocatable)
    Version : 2.6.6 Vendor: CentOS

-qf FILE:查询安装文件有那个文件生成

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

-ql PACKAGE:查询指定的程序包生成的所有列表

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

-qpi  PACKAGE_FILE, :查询指定未安装安装包相关信息

-qpl PACKAGE_FILE:查询指定的未安装程序包生成的所有列表

-qpc PACKAGE_FILE:查询指定未安装程序包提供的配置文件

(6)rpm的 校验:

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

     S 文件大小差异
     M 类型差异
     5 MD5 这一种指纹码的内容已经不同
     D 设备的主/次代码已经改变
     L Link 路径已被改变
     U 属主差异
     G 属组差异
     T 修改时间差异
     P 容量差异

 

包来源合法性验正和完整性验正:

来源合法性验正:

完整性验正:

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

对于CentOS发行版来说:rpm –import /etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7

 

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

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

 

(7)数据库重建:

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

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

获取帮助信息:CentOS 6:man rpm

CentOS 7:man rpmdb

 rpm {--initdb|--rebuilddb} [--dbpath DIRECTORY] [--root DIRECTORY]

        --initdb:初始化数据库,当前无任何数据库可实始化创建一个新的;当前有时不执行任何操作;
        --rebuilddb:重新构建,通过读取当前系统上所有已经安装过的程序包进行重新创建;

(8)什么是yum?

Yum(全称为 Yellow dog Updater, Modified)是一个在Fedora和RedHat以及CentOS中的shell前端软件包管理器。基于rpm包管理,能够从指定的服务器自动下载RPM包并且安装,可以自动处理依赖性关系,并且一次安装所有依赖的软件包,无须繁琐地一次次下载、安装。

CentOS系统上的yum命令: 命令格式: yum [option] command

(9)yum常用的命令

yum repolist {all|enabled|disabled} 列出所有/已启用/已禁用的yum源

yum list {all|installed|avaliable} 列出所有/已安装/可安装的软件包

yum info package 显示某一个软件包的信息
yum install package 安装软件包
yum reinstall package 重新安装软件包
yum remove|earse package 卸载软件包
yum whatprovides|provides files 查询某个文件是哪个软件包生成的
yum grouplist {all|installed|avaliable} 列出所有/已安装/可安装的软件包组
yum groupinfo 显示某个软件包组的信息
yum groupinstall 安装某个软件包组
yum groupremove 删除某个软件包组
yum history 查看yum使用的历史
yum clean {all|packages|metadata} 清除所有/软件包/元数据
yum makecache 生成yum元数据
yum –nogpgcheck 不校验公钥文件
yum -y 自动进行操作

安装示例:

[root@localhost ~]# yum install tree
已加载插件:fastestmirror, refresh-packagekit, security
设置安装进程
Loading mirror speeds from cached hostfile
 * base: mirrors.aliyun.com
 * extras: mirrors.aliyun.com
 * updates: mirrors.aliyun.com
base                                                                                                              | 3.7 kB     00:00     
extras                                                                                                            | 3.4 kB     00:00     
updates                                                                                                           | 3.4 kB     00:00     
解决依赖关系
--> 执行事务检查
---> Package tree.x86_64 0:1.5.3-3.el6 will be 安装
--> 完成依赖关系计算

依赖关系解决

=========================================================================================================================================
 软件包                        架构                            版本                                  仓库                           大小
=========================================================================================================================================
正在安装:
 tree                          x86_64                          1.5.3-3.el6                           base                           36 k

事务概要
=========================================================================================================================================
Install       1 Package(s)

总下载量:36 k
Installed size: 65 k
确定吗?[y/N]:y

卸载示例:

[root@localhost ~]# yum remove tree.x86_64 0:1.5.3-3.el6 
已加载插件:fastestmirror, refresh-packagekit, security
设置移除进程
参数 0:1.5.3-3.el6 没有匹配
Loading mirror speeds from cached hostfile
 * base: mirrors.aliyun.com
 * extras: mirrors.aliyun.com
 * updates: mirrors.aliyun.com
解决依赖关系
--> 执行事务检查
---> Package tree.x86_64 0:1.5.3-3.el6 will be 删除
--> 完成依赖关系计算

依赖关系解决

=========================================================================================================================================
 软件包                        架构                            版本                                 仓库                            大小
=========================================================================================================================================
正在删除:
 tree                          x86_64                          1.5.3-3.el6                          @base                           65 k

事务概要
=========================================================================================================================================
Remove        1 Package(s)

Installed size: 65 k
确定吗?[y/N]:

查询包组示例:

[root@localhost ~]# yum grouplist
已加载插件:fastestmirror, refresh-packagekit, security
设置组进程
Loading mirror speeds from cached hostfile
 * base: mirrors.aliyun.com
 * extras: mirrors.aliyun.com
 * updates: mirrors.aliyun.com
已安装的组:
   Eclipse
   Emacs
   Java 平台

安装包组示例:

[root@localhost ~]# yum groupinstall PHP
已加载插件:fastestmirror, refresh-packagekit, security
设置组进程
Loading mirror speeds from cached hostfile
 * base: mirrors.njupt.edu.cn
 * extras: mirrors.njupt.edu.cn
 * updates: mirrors.aliyun.com
解决依赖关系
--> 执行事务检查
---> Package php.x86_64 0:5.3.3-49.el6 will be 安装
--> 处理依赖关系 php-common(x86-64) = 5.3.3-49.el6,它被软件包 php-5.3.3-49.el6.x86_64 需要
--> 处    理依赖关系 php-cli(x86-64) = 5.3.3-49.el6,它被软件包 php-5.3.3-49.el6.x86_64 需要
---> Package php-gd.x86_64 0:5.3.3-49.el6 will be 安装
---> Package php-pdo.x86_64 0:5.3.3-49.el6 will be 安装
---> Package php-pear.noarch 1:1.9.4-5.el6 will be 安装
---> Package php-xml.x86_64 0:5.3.3-49.el6 will be 安装
--> 执行事务检查
---> Package php-cli.x86_64 0:5.3.3-49.el6 will be 安装
---> Package php-common.x86_64 0:5.3.3-49.el6 will be 安装
--> 完成依赖关系计算

依赖关系解决

=========================================================================================================================================
 软件包                            架构                          版本                                  仓库                         大小
=========================================================================================================================================
正在安装:
 php                               x86_64                        5.3.3-49.el6                          base                        1.1 M
 php-gd                            x86_64                        5.3.3-49.el6                          base                        111 k
 php-pdo                           x86_64                        5.3.3-49.el6                          base                         80 k
 php-pear                          noarch                        1:1.9.4-5.el6                         base                        393 k
 php-xml                           x86_64                        5.3.3-49.el6                          base                        108 k
为依赖而安装:
 php-cli                           x86_64                        5.3.3-49.el6                          base                        2.2 M
 php-common                        x86_64                        5.3.3-49.el6                          base                        530 k

事务概要
=========================================================================================================================================
Install       7 Package(s)

总下载量:4.5 M
Installed size: 16 M
确定吗?[y/N]:

卸载包组示例:

[root@localhost ~]# yum groupremove PHP
已加载插件:fastestmirror, refresh-packagekit, security
设置组进程
Loading mirror speeds from cached hostfile
 * base: mirrors.shu.edu.cn
 * extras: mirrors.shu.edu.cn
 * updates: mirrors.shu.edu.cn
解决依赖关系
--> 执行事务检查
---> Package php.x86_64 0:5.3.3-49.el6 will be 删除
---> Package php-gd.x86_64 0:5.3.3-49.el6 will be 删除
---> Package php-pdo.x86_64 0:5.3.3-49.el6 will be 删除
---> Package php-pear.noarch 1:1.9.4-5.el6 will be 删除
---> Package php-xml.x86_64 0:5.3.3-49.el6 will be 删除
--> 完成依赖关系计算

依赖关系解决

=========================================================================================================================================
 软件包                          架构                          版本                                   仓库                          大小
=========================================================================================================================================
正在删除:
 php                             x86_64                        5.3.3-49.el6                           @base                        3.5 M
 php-gd                          x86_64                        5.3.3-49.el6                           @base                        324 k
 php-pdo                         x86_64                        5.3.3-49.el6                           @base                        168 k
 php-pear                        noarch                        1:1.9.4-5.el6                          @base                        2.2 M
 php-xml                         x86_64                        5.3.3-49.el6                           @base                        307 k

事务概要
=========================================================================================================================================
Remove        5 Package(s)

Installed size: 6.5 M
确定吗?[y/N]:

2、自建yum仓库,分别为网络源和本地源

配置本地源

1.建立本地源文件

 [root@localhost ~]# cd /etc/yum.repos.d/
[root@localhost yum.repos.d]# vim local.repo

2.挂载Centos光盘

[root@localhost yum.repos.d]# mount -r /der/cdrom /media/cdrom

3.编辑local.repo(这里直接引用光盘里面的yum,也可以拷贝到本地目录并引用)
[base]
name=Centos6.9
baseurl=file:///media/cdrom
enabled=1
gpgckeck=0 4.清除yum缓存
[root@localhost]# yum clean all

配置网络源

1.建立网络源文件
[root@localhost ~]# cd /etc/yum.repos.d/

[root@localhost yum.repos.d]# vim netlocal.repo

2.编辑netlocal.repo

[http]
name=mirrors 163
baseurl=http:///http://mirrors.163.com/centos/6.9/os/x86_64/
gpgcheck=0
enabled=1
3.清除yum缓存
[root@localhost]# yum clean all

3、简述at和crontab命令,制定 每周三凌晨三、五点10分执行某个脚本,输出当前时间,时间格式为 2017-12-28 10:00:00

 

at命令和crontab命令的区别在于
at:这个工作仅执行一次;
crontab:这个工作将周期的持续的进行下去

(1)at命令格式:    at  [OPTION]… TIME

TIME:  HH:MM [YYYY-mm-dd]

noon,midnight, teatime

tomorrow

now+#

UNIT:minutes, hours, days, OR weeks

at的作业有队列,用单个字母表示,默认都使用a队列;

常用选项:  -l:查看作业队列,相当于atq

-f /PATH/FROM/SOMEFILE:从指定文件中读取作业任务,而不用再交互式输入;

-d:删除指定的作业,相当于atrm;

-c:查看指定作业的具体内容;

-q QUEUE:指明队列;

注意:作业执行结果是以邮件发送给提交作业的用户;

(2) crontab  周期性任务计划命令:

语法:

crontab [-e [UserName]|-l [UserName]|-r [UserName]|-v [UserName]|File ]

说明:

crontab 是用来让使用者在固定时间或固定间隔执行程序之用,换句话说,也就是类似使用者的时程表。

-u user 是指设定指定 user 的时程表,这个前提是你必须要有其权限(比如说是 root)才能够指定他人的时程表。如果不使用 -u user 的话,就是表示设定自己的时程表。

参数:

-e [UserName]: 执行文字编辑器来设定时程表,内定的文字编辑器是 VI,如果你想用别的文字编辑器,则请先设定 VISUAL 环境变数来指定使用那个文字编辑器(比如说 setenv VISUAL joe)

-r [UserName]: 删除目前的时程表

-l [UserName]: 列出目前的时程表

-v [UserName]:列出用户cron作业的状态

时程表的格式如下:
1
f1 f2 f3 f4 f5 program

其中 f1 是表示分钟,f2 表示小时,f3 表示一个月份中的第几日,f4 表示月份,f5 表示一个星期中的第几天。program 表示要执行的程式。

当 f1 为 * 时表示每分钟都要执行 program,f2 为 * 时表示每小时都要执行程式,其余类推

当 f1 为 a-b 时表示从第 a 分钟到第 b 分钟这段时间内要执行,f2为 a-b 时表示从第 a 到第 b 小时都要执行,其余类推

当 f1 为 */n 时表示每 n 分钟个时间间隔执行一次,f2 为 */n 表示每 n 小时个时间间隔执行一次,其余类推

当 f1 为 a, b, c,… 时表示第 a, b, c,… 分钟要执行,f2 为 a, b, c,… 时表示第 a, b, c…个小时要执行,其余类推

使用者也可以将所有的设定先存放在档案 file 中,用 crontab file 的方式来设定时程表。

由于版本不一样,所以部分语法有差别,例如在hp unix aix 中设定间隔执行如果采用*/n 方式将出现语法错误,在这类unix中 ,间隔执行只能以列举方式。

使用方法

用VI编辑一个文件 cronfile,然后在这个文件中输入格式良好的时程表。编辑完成后,保存并退出。 [2]

在命令行输入

$: crontab cronfile

这样就将cronfile文件提交给c r o n进程,同时,新创建cronfile的一个副本已经被放在/ v a r / s p o o l / c r o n目录中,文件名就是用户名。

示例:

[root@localhost ~]# touch /tmp/date.txt                  #创建保存date的文件
[root@localhost ~]# crontab -e

==>
10 03,05 * * 3 /bin/date '+%F +%T' >> /tmp/data.txt      #编辑命令


[root@localhost ~]# crontab -l                           #查询任务
10 03,05 * * 3 /bin/date '+%F +%T' >> /tmp/data.txt     

 

 

4、简述sed常用操作命令,并举例

(1)什么是sed

sed:Stream Editor文本流编辑,sed是一个“非交互式的”面向字符流的编辑器。能同时处理多个文件多行的内容,可以不对原文件改动,把整个文件输入到屏幕,可以把只匹配到模式的内容输入到屏幕上。还可以对原文件改动,但是不会再屏幕上返回结果。

2

 (2)  sed命令格式  

sed [OPTION]…  ‘script’  [input-file] …

其中 script  是地址定界编辑命令

sed命令的选项(option):

-n :只打印模式匹配的行

-e :直接在命令行模式上进行sed动作编辑,此为默认选项

-f :将sed的动作写在一个文件内,用–f filename 执行filename内的sed动作

-r :支持扩展表达式

-i :直接修改文件内容

编辑命令: d:删除;

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

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

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

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

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

r  /PATH/FROM/SOMEFILE:读取指定文件的内容至当前文件被模式匹配到的行后面;

示例:(1)删除文档中的第一和第五行

[root@localhost ~]# sed '1,5 d' /etc/fstab
# Accessible filesystems, by reference, are maintained under '/dev/disk'
# See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info
#
/dev/mapper/VolGroup-lv_root /                       ext4    defaults        1 1
UUID=7eee4732-a8d7-43ba-9f7d-8125ab037003 /boot                   ext4    defaults        1 2
/dev/mapper/VolGroup-lv_swap swap                    swap    defaults        0 0
tmpfs                   /dev/shm                tmpfs   defaults        0 0
devpts                  /dev/pts                devpts  gid=5,mode=620  0 0
sysfs                   /sys                    sysfs   defaults        0 0
proc                    /proc                   proc    defaults        0 0
You have mail in /var/spool/mail/root

(2)删除以UUID开头的行

[root@localhost ~]# sed '/^UUID/ d' /etc/fstab

#
# /etc/fstab
# Created by anaconda on Thu Mar 22 22:29:16 2018
#
# Accessible filesystems, by reference, are maintained under '/dev/disk'
# See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info
#
/dev/mapper/VolGroup-lv_root /                       ext4    defaults        1 1
/dev/mapper/VolGroup-lv_swap swap                    swap    defaults        0 0
tmpfs                   /dev/shm                tmpfs   defaults        0 0
devpts                  /dev/pts                devpts  gid=5,mode=620  0 0
sysfs                   /sys                    sysfs   defaults        0 0
proc                    /proc                   proc    defaults        0 0

(3)删除以#号开头的行

[root@localhost ~]# sed '/^#/ d' /etc/fstab

/dev/mapper/VolGroup-lv_root /                       ext4    defaults        1 1
UUID=7eee4732-a8d7-43ba-9f7d-8125ab037003 /boot                   ext4    defaults        1 2
/dev/mapper/VolGroup-lv_swap swap                    swap    defaults        0 0
tmpfs                   /dev/shm                tmpfs   defaults        0 0
devpts                  /dev/pts                devpts  gid=5,mode=620  0 0
sysfs                   /sys                    sysfs   defaults        0 0
proc                    /proc                   proc    defaults        0 0

(4)显示偶数行

[root@localhost ~]# sed '1~2d' /etc/fstab
#
# Created by anaconda on Thu Mar 22 22:29:16 2018
# Accessible filesystems, by reference, are maintained under '/dev/disk'
#
UUID=7eee4732-a8d7-43ba-9f7d-8125ab037003 /boot                   ext4    defaults        1 2
tmpfs                   /dev/shm                tmpfs   defaults        0 0
sysfs                   /sys                    sysfs   defaults        0 0

(5)在文档的第三行加上新字段

[root@localhost ~]# sed '3i \@@@@@@@@@@@@@' /etc/fstab

#
@@@@@@@@@@@@@
# /etc/fstab
# Created by anaconda on Thu Mar 22 22:29:16 2018
#
# Accessible filesystems, by reference, are maintained under '/dev/disk'
# See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info
#
/dev/mapper/VolGroup-lv_root /                       ext4    defaults        1 1
UUID=7eee4732-a8d7-43ba-9f7d-8125ab037003 /boot                   ext4    defaults        1 2
/dev/mapper/VolGroup-lv_swap swap                    swap    defaults        0 0
tmpfs                   /dev/shm                tmpfs   defaults        0 0
devpts                  /dev/pts                devpts  gid=5,mode=620  0 0
sysfs                   /sys                    sysfs   defaults        0 0
proc                    /proc                   proc    defaults        0 0

(6)替换以UUID开头的行

[root@localhost ~]# sed '/^UUID/c  \@@@@@@' /etc/fstab

#
# /etc/fstab
# Created by anaconda on Thu Mar 22 22:29:16 2018
#
# Accessible filesystems, by reference, are maintained under '/dev/disk'
# See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info
#
/dev/mapper/VolGroup-lv_root /                       ext4    defaults        1 1
@@@@@@
/dev/mapper/VolGroup-lv_swap swap                    swap    defaults        0 0
tmpfs                   /dev/shm                tmpfs   defaults        0 0
devpts                  /dev/pts                devpts  gid=5,mode=620  0 0
sysfs                   /sys                    sysfs   defaults        0 0
proc                    /proc                   proc    defaults        0 0

(7)在fstab的第三行文档合并

[root@localhost ~]# sed '3r /etc/issue' /etc/fstab

#
# /etc/fstab
CentOS release 6.6 (Final)
Kernel \r on an \m

# Created by anaconda on Thu Mar 22 22:29:16 2018
#
# Accessible filesystems, by reference, are maintained under '/dev/disk'
# See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info
#
/dev/mapper/VolGroup-lv_root /                       ext4    defaults        1 1
UUID=7eee4732-a8d7-43ba-9f7d-8125ab037003 /boot                   ext4    defaults        1 2
/dev/mapper/VolGroup-lv_swap swap                    swap    defaults        0 0
tmpfs                   /dev/shm                tmpfs   defaults        0 0
devpts                  /dev/pts                devpts  gid=5,mode=620  0 0
sysfs                   /sys                    sysfs   defaults        0 0
proc                    /proc                   proc    defaults        0 0

 

本文来自投稿,不代表Linux运维部落立场,如若转载,请注明出处:http://www.178linux.com/95681