简述rpm,yum,at,batch,crontab,sed命令-N28

第五周

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

前端工具:解决后端管理工具的众多不便之处;自动解决依赖关系;自动找到被依赖关系的程序包安装
yum: rehl系列系统上:rpm包管理器的前端工具;
apt-get/apt-cache: deb包管理器的前端工具;
apt-get: 安装卸载;
apt-cache: 查询/管理元数据;
zypper: suse的rpm管理器的前端工具;
dnf: Fedora 22+系统上rpm包管理器的前端工具;
包管理器:将编译好的应用程序各组成文件打包成一个或几个程序包文件,从而更方便快捷的实现安装、升级、卸载、查询等操作;
源码命名格式:
name-VERSION.tar.gz
VERSION:
major: 重大的版本分支
minor: 单个分支改变;
release: BUG或小段代码的改变;

rpm包命名格式:
app-VERSION-relase.os.arch.rpm
VERSION:major.minor.release
relase: 表示第几次打包
os: OS
arch: archetecture, 例如:i386, x64(amd64), ppc(power pcc), noarch(适用于所有平台:python或java研发,只需要虚拟机,与平台无关:)

例如:redis-3.0.2-1.centos7.x64.rpm

安装:
# rpm -ivh package1 [package2] […]
# yum instlal package1 [package2] […]
注意:默认安装最新的版本,使用老版本,需要自带版本号,例如: gcc: gnu c complier 编译器 gcc-4.5.4

# dpkg -i package.deb
# apt-get install packagename

# yum groupinstall GROUP_PACK
# dnf groupinstall GROUP_PACK

重装:
# rpm -ivh –replacepkgs package1 [package2] […]
# yum reinstall package1 [package2] […]

升级程序:
# rpm -[UF]vh package1 [package2] […]
/* 1. -Uvh 升级或安装
2. -Fvh 仅升级
注意:
1. 不建议对内核升级,安装即可
2. 如果配置文件曾被修改,升级后将新版本配置重命名:.rpmnew,卸载时将已经修改的配置重命名保存为:.rpmsave
*/

# yum update|grade package1 [package2] […]
/*
1. update,升级所有程序包及其配置及内核版本
2. grade,仅升级程序包及配置;
*/
# apt-get update
/*
在修改/etc/apt/sources.list或者/etc/apt/preferences之后运行该命令,以确保您的软件包列表是最新的
*/
# apt-get upgrade

检查升级:
# yum check-update
# dnf check-update

降级:
# yum downgrade package1 [package2] […]
# rpm -ivh –downpackage package1 [package2] […]
# dnf downgrade package1 [package2] […]

卸载程序:
# rpm -e package1 [package2] […]
# yum remove package1 [package2] […]
# dnf remove package1 [package2] […]
# dpkg -r package
# apt-get remove packagename

查询
仓库:
# yum repolist
# dnf repolist

查询结果为程序包:
是哪个包所提供特性
# rpm -q –whatprovides CAPABILITY
# rpm -q -f FILEPATH
# yum whatprovides CAPABILITY
# dnf whatprovides CAPABILITY
# dpkg-query -S file1
是哪个包所依赖特性
# rpm -q –whatrequires CAPABILITY
列表:
# rpm -qa
# yum list [all|available|updates|installed|extra|obsoletes] [glob_exp1] […]
# yum search glob_expr|string …
# dns search glob_expr|string …

# dpkg-query -W –showformat=’${Package} ${Version}\n’ > filename
# dpkg-query -l

# yum grouplist
# dnf grouplist

查询结果为包内相关:
特性:
程序包依赖的特性;
# rpm -q –requires package1 [package2] […]
# yum deplist package1 [package2] […] 并提示此依赖由谁提供(setup-2.8.71-5.el7.noarch)
程序包提供的特性;
# rpm -q –provides package1 [package2] […]
详细信息:
# rpm -q -i package1 [package2] […]
# yum info package1 [package2] […]
# dnf info package1 [package2] […]
# yum groupinfo
# dpkg-query -s capistrano
# dpkg-query -W -f=’${Status} ${Version}\n’ apache-perl
列表:
# rpm -ql
# dpkg -L package
# dpkg -l
# dpkg –unpack package.deb
# dpkg-query -L capistrano
配置环境:
# rpm -qc
# dpkg –configure package
文档:
# rpm -qd
修改日志:
# rpm –changelog
脚本查看:
# rpm -q –scripts
版本:
# yum version
# dnf –version

数据库:
# rpm –initdb|–rebuilddb [–dbpath DIR]
/*
1. -initdb:初始化数据库,数据库存在时不执行任何操作,不存在时创建新的数据库;
2. –rebuilddb:重构数据库;通过读取当前系统上所有已经安装过程序包进行重新创建;
*/
# yum clean [ packages | metadata | expire-cache | rpmdb | plugins | all ]
# yum makecache (yum仓库安装程序时会先比较缓存;再下载元数据缓存)
# apt-get clean
# apt-get autoclean

检验:
程序包名:rpm -V package_NAME
S file Size differs
M 权限
5 MD5值改变;
D 主次设备号
L readLink(2) 路径不匹配
U 属主
G 属组
T mTime 最近一次修改时间戳改变;
P CAPABILITY 改变;
导入密钥:rpm –import /etc/pki/rpm-gpg/
单个程序包: # rpm -K PACKAGE_FILE

事务历史:
# dnf history
# yum history

常用选项:
yum:
-y
–enablerepo
–disablerepo
–downloadonly
–downloaddir
rpm:
-p
–nodeps
–noscripts
–scripts
–test
–nosignature

 

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

本地源:
1)挂载OS-Vendor光盘至某目录:例如/media/cdrom
# mkdir -v /media/cdrom
# mount -t iso9660 -r /dev/cdrom /media/cdrom
# mount
# ls /media/cdrom
2)创建配置文件(其中定义多个仓库:每个仓库[repoid]指向一个或多个yum源:)
# vim /etc/yum.repos.d/CentOS-local.repo
[base]
name=CentOS Linux release 7.1.1503 (Core)
baseurl=file:///media/cdrom
gpgcheck=0
enabled=1
网络源:
# mv /etc/yum.repos.d/CentOS-Base.repo{,.bak}
# vim /etc/yum.repos.d/CentOS-Base.repo
[base]
name=CentOS-$releasever – Base
failovermethod=priority
baseurl=http://mirrors.aliyun.com/centos/$releasever/os/$basearch/
http://mirrors.163.com/centos/$releasever/os/$basearch/
gpgkey=
gpgcheck=0
enabled=1

 

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

at, batch: 未来的某时间点执行一次任务
crontab: 周期性运行某任务,crond
执行的结果将以邮件的形式发给某个用户的邮筒:/var/spool/mail/USERNAME
确保邮件服务正常
# netstat -tunlp
//postfix的主控进程:用于传递邮件。

周期性任务计划:用crontab命令;
程序环境:
/etc/crontab
/var/spool/cron/USERNAME

系统cron: # * * * * * user-name command to be executed
用户cron: # * * * * * command to be executed

注意:
1. at运行命令执行环境可能不能通过PATH环境变量读取,一般使用“绝对路径”
2. > /dev/null 正确不管; &> /dev/null 有风险,错误结果也会被忽略。

# crontab -e
10 3,5 * * 3 /bin/bash /root/f1.sh
# vim /root/f1.sh
#!/bin/bash
#
PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin
date +’%F %T’

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

sed: GNU Stream EDitor,属于FSF组织,流编辑器;一次处理一行文本;

sed [OPTIONS] ‘[star_pos[,end_pos]]script’ file ..
[OPTIONS]
-r: 扩展正则表达式
-n: 不显示模式空间
-i: 原处编辑
-f /PATH/TO/SED_SCRIPT_FILE;每行一个script,不能对script加 ”
[star_pos[,end_pos]]
空地址;对全文进行处理;vim: %
# 单地址;
#,# 地址范围:
#,+# 相对地址表示法
#,/pat/
/pat/ 模式匹配行,例如:匹配空行:/^[[:space:]]*$/
/pat1/,/pat2/
1~2 所有奇数行
2~2 所有偶数行

script
命令
! 对地址范围取反
= 对匹配到的每一行编号
p 再一次显示匹配至的行
a \text: append
i \text: insert
c \text: change,范围时,替换所有行为一行。空白时,替换每一行。
d: 删除匹配到的行
w /PATH/TO/SOMEFILE:保存模式空间的内容至指定文件中; 覆盖写入;
r /PATH/FROM/SOMEFILE: 读取指定文件至当前文件被模式匹配到的行后;文件合并;
查找替换
s/PATTERN/替换为的内容/修饰符;
/:分隔符:如果在查找或替换的内容中出现”/”,需要转义: “\/”,可以使用非常用字符: # @ ,
PATTERN:使用BRE [也支持引用;],
替换为的内容:不能使用正则表达式,但可使用后向引用及&引用;
&:引用PATTERN匹配到的所有字符

修饰符: 修饰查找替换的某些功能;
g: 全局替换
w /PATH/TO/SOMEFILE:将替换成功的结果所在行保存至指定文件中;
p: 显示替换成功的行;

练习1:删除/boot/grub/grub2.cfg文件中所有以空白字符开头的行的行首的所有空白字符;
~]# sed ‘s,^[[:space:]]\+,,’ /boot/grub/grub.conf
练习2:删除/etc/fstab文件中所有以#开头的行的行首的#号及#后面的所有空白字符;
~]# sed ‘s,^#[[:space:]]\+,,’ /etc/fstab
练习3:输出一个绝对路径给sed命令,取出其目录名,其行为类似于dirname
~]# echo “/etc/sysconfig/network-scripts/ifcfg-ens33” | sed ‘s,/$,,’ | sed -r ‘s#(.*/)([^/]+$)#\1#’
~]# echo “/usr/share/man/zh_TW/man8/useradd.8.gz/” | sed ‘s,/$,,’ | sed -r ‘s#(.*/)([^/]+$)#\2#’
练习4:删除以#开头,后面没有跟空白字符的行的行首的#
~]# sed -i -r ‘s,^#([^[:space:]].*),\1,’ /etc/fstab
练习5:删除所有空白行;
~]# sed ‘/^$/d’
练习6:删除/etc/fstab文件中所有以UUID开头的行;
# sed ‘/^UUID/d’ /etc/fstabg
练习7:替换/etc/passwd,root用户所在行的第一个root字符为大写字符
# sed ‘/^root:/s,root,ROOT,’ /etc/passwd
练习8:/etc/fstab文件中所有以UUID开头的行后追加abc:
# sed ‘/^UUID/a \abc’ /etc/fstabg

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

(0)
逆神阳逆神阳
上一篇 2017-12-31
下一篇 2018-01-01

相关推荐

  • lamp+nfs搭建wordpress

    一、前言 lamp是大多上公司常用的架构,本文将针对分离式的lamp+nfs来搭建一个简单的wordpress网站。 二、架构图 三、基本实现过程 3.1:dns搭建 由于这这是一个实验,故使用yum搭建dns服务器 yum install -y bind 配置如下 dns主配置文件 dns辅助配置文件 zone文件 对所有服务…

    Linux干货 2015-10-16
  • SHELL脚本编程之变量的种类

    变量 在进行脚本编程的时候,经常会使用到不同类型的变量,根据变量的生效范围,可大致分为以下的几类: 本地变量:生效范围为当前shell进程,对当前shell之外的其他shell进程,包括当前shell进程的子shell进程都是无效的,它的作用域就是当前shell进程 环境变量:生效范围是当前shell进程及其子进程 局部变量:生效范围是当前shell进程中某…

    Linux干货 2016-08-12
  • 计算机组成及Linux基础

    计算机组成及Linux基础

    Linux干货 2018-03-04
  • http协议基础(一)

    web服务:      Apache      Nginx      LVS      http协议 网站运维:      web站点      游戏网站web服务 高性能,高可用…

    Linux干货 2017-04-18
  • linux中数组的定义与使用

            我们常说,程序=指令+数据,往细一点的方向说,指令具体指的有哪些?数据又有哪些? 总结一下: 指令大概包括,编程语言中的语法关键字(如bash编程中的关键字有for,while,case,if,until,continue,break),还包括系统中的命令,和一些自己编写的函数,这些…

    2017-05-23
  • linux进程管理

    linux系统进程查看及管理工具 对于服务器来说重要的IO 设备磁盘网络 pstree,ps,pidof,pgrep,top,htop,glances,pmap,vmstat,dstat,kill,pkill,job,bg,fg,nohup,nice,renice,killall….. pstree命令: pstree-display …

    Linux干货 2016-09-09

评论列表(2条)

  • 马哥教育
    马哥教育 2018-01-07 17:45

    赞,常见的问题也描述出来了,比较认真,继续加油~

  • 马哥教育
    马哥教育 2018-01-07 18:03

    赞~内容上基本没什么问题~排版上能注意一下,效果会更好点~