Linux基本内容介绍(5) --rpm与yum的使用,at和crontab命令简介,以及sed的常用操作

rpm命令

概述

rpm软件是用于在redhat系列的Linux发行版中管理软件包的工具。rpm包中包含的是二进制的可执行程序,与源码安装的方式相比,更加便捷。

命令使用

命令格式:rpm OPTIONS PACKAGE_FILE
根据操作的用途,主要可分为6类:安装,升级,卸载,查询,校验和数据库维护

1.安装
rpm {-i|–install} [OPTIONS] PACKAGE_FILE
OPTIONS:
-v 详细信息
-vv 输出更详细的信息
-h 输出进度条,每个#表示2%的进度
–test dry run,属于测试安装,不会真正的安装包,用于测试依赖关系和冲突消息
–nodeps 强制安装,忽略依赖关系,如果软件的使用需要这些缺失的依赖关系的话,会导致软件无法使用,如果只是文档功能之类的非必要功能的依赖关系,则不影响软件的使用
–replacepkgs 重新安装,例如误改了某配置文件需要恢复,进行重装即可,需要注意的是重装前要删除误改的配置文件
i.e.安装软件包lrzsz

[root@test ~]# rpm -ivh lrzsz-0.12.20-27.1.el6.x86_64.rpm 
warning: lrzsz-0.12.20-27.1.el6.x86_64.rpm: Header V3 RSA/SHA256 Signature, key ID fd431d51: NOKEY
Preparing...                ########################################### [100%]
   1:lrzsz                  ########################################### [100%]

2.升级
rpm {-U|–upgrade} [OPTIONS] PACKAGE_FILE 升级或安装
rpm {-F|–freshen} [OPTIONS] PACKAGE_FILE 升级
OPTIONS
–oldpackage 降级
–force 强制升级

3.卸载
rpm {-e|–erase} [OPTIONS] PACKAGE_FILE
OPTIONS
–allmatches 卸载所有匹配指定名称的软件包
–nodeps强制卸载,忽略依赖关系
–noscripts 不运行脚本卸载
–test 测试卸载,不是真的卸载,dry run

4.查询
rpm {-q|–query} [select options] [query options]
select options
-a, –all 查询所有已安装的包
-f FILE 查询指定文件由哪个软件包产生
i.e.

[bhps@test ~]$ rpm -qf /etc/crontab
crontabs-1.10-33.el6.noarch

-p 对未安装程序包执行查询操作
–whatprovides CAPABILITY 查看指定CAPABILITY由哪个包提供
–whatrequires CAPABILITY 查看指定CAPABILITY被哪个包依赖

query options
–changelog 查看包的changelog
-l, –l 查看包安装生成文件列表
-i,–info 查看包的信息,包括大小,时间戳和所属包组等
-c,–configfiles 查看指定包的配置文件
-d,–docfiles查看指定包提供的man文档
–provides 查看指定包提供的CAPABILITY
-R,–requires 查看指定包的依赖关系
–scripts 查看指定包自带的脚本片段

5.校验
rpm {-V|–verify} [select options] [verify options]
verify options
–nodeps不校验依赖关系
–nodigest 不校验摘要
–noscripts 不执行包自带脚本
–nosignature不校验签名

6.数据库维护
rpm {–initdb|–rebuilddb} 初始化数据库,重建数据库

yum命令

概述

yum是一种基于rpm的,交互式的包管理工具。可以实现安装、更新、卸载包的操作,并能自动分析解决依赖关系问题。

命令使用

命令格式:yum [options] [command] [package …]
1.COMMAND
repolist [all|enabled|disabled]显示仓库列表
list [all|glob_exp1][glo_exp2][…] 显示程序包
list {availabe|installed|updates} [glob_exp1] […]显示程序包(可用的,已安装的或者更新的)
install package1 [package2] […] 安装程序包
reinstall package1 [package2] […] 重新安装程序包
update [package1] [package2] […] 升级程序包
downgrade package1 [package2] […] 降级程序包
check-update 检查可用升级
remove|erase package1 [package2] […] 卸载程序包
info […]查看程序包信息
provides|whatprovides feature1 [feature2] […] 查看提供某特性的包或者包提供了哪些特性
clean [packages|metadata|expire-cache|rpmdb|plugins|all] 清理本地缓存
makecache 构建缓存
search string1 [string2] […] 以指定关键字搜索程序包或者summary信息
deplist package1 [package2] […]查看指定包的依赖信息
i.e.查看lrzsz的依赖信息

[root@test bhps]# yum deplist lrzsz
Loaded plugins: product-id, security, subscription-manager
This system is not registered to Red Hat Subscription Management. You can use subscription-manager to register.
Finding dependencies: 
package: lrzsz.x86_64 0.12.20-27.1.el6
  dependency: libnsl.so.1()(64bit)
   provider: glibc.x86_64 2.12-1.149.el6
  dependency: libc.so.6(GLIBC_2.7)(64bit)
   provider: glibc.x86_64 2.12-1.149.el6
  dependency: rtld(GNU_HASH)
   provider: glibc.i686 2.12-1.149.el6
   provider: glibc.x86_64 2.12-1.149.el6

history [info|list|packages-list|packages-info|summary|addon-info|redo|undo|rollback|new|sync|stats] 查看事务历史
localinstall rpmfile1 [rpmfile2] […] 本地安装
localupdate rpmfile1 [rpmfile2] […] 本地升级
groupinstall group1 [group2] […] 包组安装
groupupdate group1 [group2] […] 包组升级
grouplist [hidden] [groupwildcard] […] 展示组
groupremove group1 [group2] […] 移除组
groupinfo group1 [group2] […] 查看组信息

2.OPTION
–nogpgcheck 禁止进行gpg check
-y 自动应答yes
-q 静默模式
–disablerepo=repoidglog 临时禁止指定repo
–enablerepo=repoidlob
–noplugins 禁用所有插件
i.e.
1.建立源为网络的yum
编辑文件/etc/yum.repos.d/base.repo
使用内网自建源http://10.161.34.169:8080/rhel6.6/http://10.161.34.169:8080/epel/

[root@test yum.repos.d]# cat base.repo
[base]
name=rhel6.6
enabled=1
gpgcheck=0
baseurl=http://XXX.XXX.XXX.XXX:8080/rhel6.6/

[epel]
name=epel
baseurl=http://XXX.XXX.XXX.XXX:8080/epel/
gpgcheck=0
enabled=1
[root@test yum.repos.d]# yum make cache

2.建立源为本地的yum
在上面的基础上添加包含glusterfs rpm包的源

[root@test glusterfs]# ls
glusterfs-3.6.6-1.el6.x86_64.rpm            glusterfs-debuginfo-3.6.6-1.el6.x86_64.rpm      glusterfs-geo-replication-3.6.6-1.el6.x86_64.rpm  repodata
glusterfs-api-3.6.6-1.el6.x86_64.rpm        glusterfs-devel-3.6.6-1.el6.x86_64.rpm          glusterfs-libs-3.6.6-1.el6.x86_64.rpm
glusterfs-api-devel-3.6.6-1.el6.x86_64.rpm  glusterfs-extra-xlators-3.6.6-1.el6.x86_64.rpm  glusterfs-rdma-3.6.6-1.el6.x86_64.rpm
glusterfs-cli-3.6.6-1.el6.x86_64.rpm        glusterfs-fuse-3.6.6-1.el6.x86_64.rpm           glusterfs-server-3.6.6-1.el6.x86_64.rpm
[root@test glusterfs]# pwd
/usr/local/src/glusterfs
[root@test yum.repos.d]# cat >> /etc/yum.repos.d/base.repo <<EOF
> [glusterfs]
> name=glusterfs
> baseurl=file:///usr/local/src/glusterfs/
> gpgcheck=0
> enabled=1
> EOF
[root@test yum.repos.d]# yum makecache
Loaded plugins: product-id, security, subscription-manager
This system is not registered to Red Hat Subscription Management. You can use subscription-manager to register.
base                                                                                                                                 | 2.9 kB     00:00     
base/filelists_db                                                                                                                    | 4.2 MB     00:00     
base/primary_db                                                                                                                      | 3.3 MB     00:00     
base/other_db                                                                                                                        | 1.7 MB     00:00     
epel                                                                                                                                 | 3.0 kB     00:00     
epel/filelists_db                                                                                                                    | 9.0 MB     00:00     
epel/primary_db                                                                                                                      | 6.1 MB     00:00     
epel/other_db                                                                                                                        | 3.6 MB     00:00     
glusterfs                                                                                                                            | 2.9 kB     00:00 ... 
glusterfs/filelists_db                                                                                                               |  18 kB     00:00 ... 
glusterfs/primary_db                                                                                                                 |  11 kB     00:00 ... 
glusterfs/other_db                                                                                                                   | 3.3 kB     00:00 ... 
Metadata Cache Created

at命令

命令格式:at [OPTION] … TIME
TIME
    HH:MM [YYYY-mm-dd]
    noon,midnight,teatime
    tomorrow
    now+# UNIT:minutes,hours,days or weeks
OPTION
    -l 查看作业队列,相当于atq
    -f /PATH/FROM/SOMEFILE,从指定文件中读取作业任务,不需要交互式输入
    -d删除指定作业,相当于atrm
    -c查看指定作业的具体内容
    -q QUEUE指明队列

crontab命令

系统cron配置文件格式,编辑该文件需要root权限

SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root
HOME=/

# For details see man 4 crontabs

# Example of job definition:
# .---------------- minute (0 - 59)
# |  .------------- hour (0 - 23)
# |  |  .---------- day of month (1 - 31)
# |  |  |  .------- month (1 - 12) OR jan,feb,mar,apr ...
# |  |  |  |  .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat
# |  |  |  |  |
# *  *  *  *  * user-name command to be executed

注意:
(1)每行定义一个cron任务
(2)crontab中环境变量与用户登陆环境变量不同,使用命令时使用绝对路径
(3)crontab执行结果邮件发送给用户
六个时间字段:
(1)特定值:给定值,某个时间点,day of week和day of month一般不同时使用
(2)*:表示该字段所有的可选值
(3)离散值:离散值用逗号分割,表示多个时间点
(4)连续值:连续值使用-连接两个数字,表示连续的时间段
(5)定义步长:在指定时间上定义步长,/#。指定时间不能被步长整除,是没有意义的,步长最小单位为分钟,秒级的实现需要在脚本中实现

普通用户crontab命令
需要使用root用户将需要使用crontab命令的用户名称加入到/etc/cron.allow文件中,每个用户一行;/etc/cron.deny是不允许使用crontab的用户,优先级低于/etc/cron.allow
i.e.
1.每周三凌晨三、五点10分执行某个脚本,输出当前时间,时间格式为 2017-12-28 10:00:00

[bhps@test test]$ cat /etc/crontab
SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root
HOME=/

# For details see man 4 crontabs

# Example of job definition:
# .---------------- minute (0 - 59)
# |  .------------- hour (0 - 23)
# |  |  .---------- day of month (1 - 31)
# |  |  |  .------- month (1 - 12) OR jan,feb,mar,apr ...
# |  |  |  |  .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat
# |  |  |  |  |
# *  *  *  *  * user-name command to be executed
10 3,5 * * 3 bhps /bin/bash /home/bhps/test/show_time.sh &> /dev/null
[bhps@test test]$ pwd 
/home/bhps/test
[bhps@test test]$ cat show_time.sh 
#!/bin/bash
PATH=/usr/lib64/qt-3.3/bin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/sbin:/home/bhps/bin
export PATH
cur_time=$(date +"%Y-%d-%m %H:%M:%S")
echo $cur_time

sed命令

概述

流式编辑器,可用于过滤或编辑文档

命令使用

命令格式:sed [OPTION]… {script-only-if-no-other-script} [input-file]…
OPTION:
   -n:不输出模式空间的内容到屏幕,默认是输出所有读入到模式空间内容的。
   -e script|–expression=script:多点编辑,-e script -e script
   -f /PATH/TO/SED_SCRIPT_FILE 从文件中读取script,每行一个script
   -r|–regexp-extend:支持使用扩展正则表达式,+和?不需要转义
   -i|–in-place:直接编辑原文件

script:地址界定编辑命令
编辑命令:
   d:删除
   p:显示模式空间内容
   a \text:在行后追加text内容
   i \text:在行前插入文本text
   c \text:用text替换匹配到的行
   w /PATH/TO/SOMEFILE:将模式空间匹配到的内容保存到文件
   r /PATH/FROM/SOMEFILE:读取指定文件内容至当前文件模式匹配的行后
   =:为匹配到的模式打印行号
   !:条件取反,地址定界!编辑命令
   s///:查找替换,分隔符可自己指定,例如s@@@,s###
      替换标记:g:全局替换,w /path/to/file 将替换结果保存至文件,p:显示替换成功的行
高级命令:
h:模式空间的内容覆盖至保持空间
H:模式空间的内容追加至保持空间
g:保持空间内容覆盖至模式空间
G:保持空间内容追加至模式空间
x:模式空间和保持空间内容互换
n:将读取匹配到的行的下一行覆盖至模式空间
N:将读取匹配到的行的下一行追加至模式空间
d:删除模式空间的行
D:删除多行模式空间所有行
i.e.
1.显示偶数行

[bhps@test ~]$ cat t.txt 
first line
two line
third line
fourth line
fifth line
[bhps@test ~]$ sed -n 'n;p' t.txt 
two line
fourth line

2.删除以#开头的行的#字符和#字符后面的所有空格符

[bhps@test ~]$ sed 's@^#[[:space:]]*@@g' grub.conf 
grub.conf generated by anaconda

Note that you do not have to rerun grub after making changes to this file
NOTICE:  You have a /boot partition.  This means that
all kernel and initrd paths are relative to /boot/, eg.
root (hd0,0)
kernel /vmlinuz-version ro root=/dev/mapper/VolGroup-lv_root
initrd /initrd-[generic-]version.img
boot=/dev/sda
default=0
timeout=5
splashimage=(hd0,0)/grub/splash.xpm.gz
hiddenmenu
title Red Hat Enterprise Linux 6 (2.6.32-504.el6.x86_64)
        root (hd0,0)
        kernel /vmlinuz-2.6.32-504.el6.x86_64 ro root=/dev/mapper/VolGroup-lv_root rd_NO_LUKS LANG=en_US.UTF-8 rd_NO_MD rd_LVM_LV=VolGroup/lv_swap SYSFONT=latarcyrheb-sun16 crashkernel=auto rd_LVM_LV=VolGroup/lv_root  KEYBOARDTYPE=pc KEYTABLE=us rd_NO_DM rhgb quiet
        initrd /initramfs-2.6.32-504.el6.x86_64.img

猜你喜欢

转载自blog.csdn.net/espressomike/article/details/82701207