Advertisement

Linux学习笔记整理--第五期

阅读量:

一、rpm命令管理程序包
安装、升级、卸载、查询、校验、数据库维护操作等

rpm命令:
rpm [OPTION] [PACKAGE_FILE]

选项:
安装 -i ,--install
升级 -U ,--update, -F , --freshen
卸载 -e , --erase
查询 -q , --query
校验 -V ,--erify
数据库维护: --builddb , initdb

安装:
rpm -ivh [PACKAGE_FILE]
-v 显示安装过程, -vv 显示详细的安装过程
-h 显示输入出进度,每个#代表2%的进度

rpm -ivh --test 测试安装,检查并报告依赖关系及冲突消息等
rpm -ivh --replacepkgs 重新安装程序文件
rpm -ivh --nodeps 忽略依赖关系安装, 非常不建议。

注意: rpm可以自带脚本
四类:
preinstall: 安装过程中之前运行脚本 %pre --noper
postinstall: 安装过程完成后运行的脚本 %post --nopost
preuninstall: 卸载过程中开始之前执行的脚本 %preun --nopreun
postuninstall: 卸载过程中完成后运行的脚本 %postun --nopostun

rpm -ivh --nosignature : 不检查包签名,不检查来源合法性
rpm -ivh --nodigest: 不检查包完整性信息

升级:
rpm -Uvh [PACKAGE_FILE] : 升级或安装 ,已经安装过程序,则进行升级,若未安装,则安装程序
rpm -Fvh [PACKAGE_FILE] :升级,仅针对安装过的程序进行升级,若程序未安装,则不执行操作

rpm -Uvh --oldpackage [PACKAGE_FILE] 降级操作,回滚
--force 强制升级

注意:
(1)不建议对内核做升级操作; Linux支持多内核版本并存,因此直接安装新版本内核即可;
(2)如果某原程序包的配置文件,安装后曾被修改过,升级时,新版本的程序提供的同一个配置文件不会覆盖原有版本的配置文件
而把新版本的配置文件重命名后进行提供(FILENAME。rpmnew)

卸载:
rpm -e [PACKAGE_Name] : 卸载某一个包(程序包的名字)

rpm -e --allmatches :卸载所有匹配指定名称的程序包的各个版本。
rpm -e --nodeps: 忽略依赖关系进行卸载
rpm -e --test 测试卸载,但并非真的卸载,只是测试过程。

查询:
rpm -q [PACKAGE_Name] 查询一个程序包的版本基本信息

选择选项select-option:
rpm -qa 查询所有已经安装程序的包 可以结合 grep进行详细查询
rpm -qf FILENAME : 查询指定的文件是由那个程序包生成的
rpm -qp [PACKAGE_FILE] : 用于实现对未安装的程序包执行查询操作的。
rpm -qg GROUP : 查询包组里面包含的程序包

--whatprovides CAPABLITY: 查询指定的能力是由那个程序包的提供
--whatrequires CAPABLITY : 查询指定的能力是被那个包所依赖

查询选项query-options:

rpm -q
--changelog : 查询rpm包的changelog
-l ,--list : 查询rpm程序包生成了那些文件列表
-i , --info : 查询程序包的相关信息,版本号,大小,所属的包组 等等
-c, --configfiles: 查询指定的程序包提供的配置文件
-d, --docfiles: 查询指定的程序包提供的文档
--provides: 列出指定程序包的提供程序包信息
-R ,--requires: 查询指定程序包的依赖关系
--scripts : 查询程序包自带的脚本片段内容

rpm -qp [PACKAGE_NAME] 跟上上面的参数,可以查询未安装程序包的信息

校验:
rpm -V [PACKAGE_NAME]
5 MD5校验和
S 文件大小
L 符号连接
T 修改时间
D 设备
U 用户
G 组
M 模式(包括许可和文件类型)

二、yum命令的用法:
yum [OPTION] [COMMAND] [PACKAGE...]

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

显示程序包:
yum list all 显示所有可用的程序包
yum list php* 根据匹配条件查询对应的包
yum list available 列出可用的程序包
yum list installed 列出已经安装的程序包
yum list updates 列出仓库中所有可用的更新包

安装程序包:
yum install PACKAGE_Name1 PACKAGE_Name2 安装程序包

升级程序包:
yum update PACKAGE_Name1 PACKAGE_Name2 升级程序包

重新安装程序包:
yum reinstall PACKAGE_Name 覆盖方式重新安装程序

降级安装版本:
yum downgrade PACKAGE_Name

检查可用升级:
yum update-to PACKAGE_Name1 PACKAGE_Name2 检查可用的程序包

卸载程序包:
yum remove PACKAGE_Name1 卸载程序包,同时也会卸载其依赖关系包

查看程序包的基本信息
yum info PACKAGE_Name

查看指定程序或文件是有那个程序包提供的:
yum provides

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

生成yum源的缓存:
yum makecache

查找搜索程序包:
yum search haproxy 依照关键字搜索程序报名和Summary信息

查看指定程序包的依赖关系:
yum deplist PACKAGE_Name...

查看yum的事务历史记录:
yum history

安装及升级本地程序包 :
yum install local-rpm-package-name.rpm
yum update local-rpm-package-name.rpm

包组管理的相关命令:
yum grouplist 查看可用的程序包组
yum groupinstall group2 group2 安装包组
yum groupupdate group 升级包组
yum groupremove group 移除包组的安装
yum groupinfo group 查看包组的信息

yum命令行的选项:
--nogpgcheck : 禁止进行gpg包的检查
-y : 自动回答为yes
-q : 静默模式安装
--disablerepo=repoidglob 临时禁用此处指定的repo
--enablerepo=repoidglob 临时启用此处指定的repo
--noplugins: 禁用所有插件

三、创建yum源

yum源仓库指向的定义:
[repositoryID]
name=仓库的名称描述
baseurl=http://mirrors.aliyun.com/path/to/repository/ # 等号左右不能有空格
mirrorlist= URL # 可以使用bashurl或是 mirrorlist两个不同时使用。
enabled={1|0} #是否启用仓库,默认是启用
gpgcheck={1|0} #是否检查包的合法性
gpgkey=URL #指定密钥文件路径
enablegroup={1|0} #是否允许在仓库上使用组管理程序包,默认是启用的
failovermethod={roundrobin|proivority} 默认为 roundrobin轮询,
cost={1000} # 默认开销为1000

1. 创建本地源

如何使用光盘当本地的yum仓库:
(1) 挂载光盘至某目录

mount -r -t iso9660 /dev/cdrom /media/cdrom

(2) 创建配置文件
[CentOS7]
name=CentOS7
baseurl=file:///media/cdrom
gpgcheck=0
enabled=1

2. 创建网络源

name=CentOS-releasever baseurl=http://mirrors.163.com/centos/releasever/os/$basearch/
enabled=1
gpgcheck=1
gpgkey=http://mirrors.163.com/centos/RPM-GPG-KEY-CentOS-7

四、创建定时计划任务

1. at命令

at命令:在未来某个时间执行一次某个任务
at [OPTION]…… TIME

TIME:
HH:MM[YYYY-mm-dd]
noon,midnight,teatime : 正午,午夜,下午4点(下午茶时间)
tomorrow 明天
now+# UNIT
UNIT : minutes, hours, days , weeks

例 at now+5h 回车,输入要执行的命令或脚本,

选项:
-l : 查看计划作业队列,相当于 atq 命令
-f /PATH/FILE : 从指定文件中读取作业任务,而不需要用户交互式输入
-d :删除指定的作业,相当于 atrm
-c : 查看指定作业的具体内容
-q QUEUE: 指明队列

注意: 作业执行的结果是以邮件发送给提交作业的用户。用户若要查看执行结果,则可以使用“mail”命令查看

2. 周期性计划任务crontab

crontab命令:
参数:
-l : 列出当前用户的所有计划任务
-e : 创建编辑计划任务,也可以编辑注释掉或是删除对应的计划任务
-r : 移除所有任务;既是删除/var/spool/cron/USERNAME文件
-i : 在使用-r选项移除所有任务时提示用户确认

-u USERNAME: root用户为指定用户查看或编辑对用用户的计划任务

例: crontab -u centos -e 为指定用户centos设置计划任务

cron任务分为两类:
系统cron任务: 主要用于实现系统自身的维护;
手动编辑: vim /etc/crontab文件 通常不建议修改系统计划任务
[root@centos04 ~]# cat /etc/crontab
SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root

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) 每一行定义一个周期性任务

          • : 定义周期时间: 分钟,小时,天,月,周(1-7,或0-6 )
            user-name : 运行任务的用户身份
            command to be executed : 任务内容

(2)此处的环境变量不同于用户登陆后获得的环境变量,因此建议命令使用绝对路径,或是自定义PATH环境变量
(3)执行结果发送邮件给MAILTO的用户

用户cron任务: 用户自己定义的计划任务
配置文件存储路径: /var/spool/cron/USERNAME
命令: crontab

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

| | | | |

* * * * * command to be executed

注意:
(1) 每行顶一个cron任务,共6个字段
(2) 此处的环境变量不同于用户登陆后获得的环境变量,因此建议命令使用绝对路径,或是自定义PATH环境变量
(3) 邮件发送给创建计划任务的用户

时间表示法:
(1) 特定值
给定时间点有效取值范围内的值;
注意:day of week和day of month一般不同时使用
(2) *
给定时间点上有效取值范围内的所有值

示例:
(1) 3 * * * * 表示每小时执行一次,每小时的第三分钟
(2) 3 4 * * 5 表示每周五的4点3分
(3) 5 6 7 * * 表示每月的7日的6点5分
(4) 7 8 9 10 * 表示每年的10月9日的8点7分
(5) * * * * * : 表示每分钟执行一次
(3) 离散取值:“,”逗号
在时间点上使用逗号分隔的多个字,#,#,#

示例:
(1) 8 9 * * 3,7: 表示没周三和周日的9点8分
(1) 0 8,20 * * 3,7 : 表示没周三和周日的8点和20点都执行一次

(4) 连续取值: “-” 减号
在时间点上使用-连续开头和结束 #-#

示例:
(1) 0 9-18 * * 1-5 : 表示周一到周五的9点到18点的每小时

(5)在指定时间上,定义步长,使用“/”
/# : #号既是步长

注意:
(1)指定的时间点不能被步长整除时,其意义将不复存在;
(2)显示最小时间单位为“分钟”,想要完成“秒”级任务,需要额外借助其他机制实现
定义成没分钟任务,而在利用脚本实现在每分钟之内,询问执行多次
示例:
(1)*/5 * * * * :表示每五分钟执行一次某人

使用crontab制定每周三凌晨三、五点10分执行某个脚本,输出当前时间

[root@centos4 tmp]# date +%F-%T
2018-07-22-15:03:44
[root@centos4 tmp]# ls
date.sh
[root@centos4 tmp]# cat date.sh
#!/bin/bash

date +%F-%T
[root@centos4 tmp]# crontab -e
10 3,5 * * 3 /tmp/bashshell.sh
[root@centos4 tmp]# crontab -l
10 3,5 * * 3 ./tmp/date.sh

五、sed命令
文本处理三剑客:
grep 文本过滤器
sed(stream editor):数据流编辑器,过滤转换文本,行编辑器
awk : 文本格式化工具,报告生成器

sed [OPTION]...'script' [imput-file]...
script:
地址定界编辑命令(地址定界加上编辑命令)

常用选项:
-n 不输出模式空间中的内容至屏幕
-e script : 实现多点编辑,可以跟上多个-e
-f /PATH/TO/SED_SCRIPT_FILE 跟上脚本文件,每行一个编辑命令
-r ,--regex-extended : 支持使用扩展的正则表达式
-i,--in-place: 直接编辑源文件

地址定界:
(1)空地址: 对全文进行处理
(2)单地址
#:指定行
/pattern/:被此模式匹配到的每一行
(3)地址范围:
#,# : 起始行到结束行
#,+#: 从#行开始,到第+#的行
#,/pat1/
/pat1/,/pat2/
$ : 表示最后一行
(4)步进: ~
1~2: 所有奇数行
2~2: 所有偶数行

编辑命令:
d: 删除
p:显示模式空间中的内容
a \text: 在匹配到的行后面追加文本“text” ,支持使用\n实现多行追加
i \text: 在匹配到的行前面插入文本“text” ,支持使用\n实现多行插入
c \text: 把匹配到的行替换为此处指定的文本“text”
w /path/to/somefile : 保存模式空间中匹配到的行至指定的文件中
r /path/from/somefile: 读取指定的文件的内容至当前文件被模式匹配到的行,实现文件合并
= :为模式匹配到的行,打印行号
!: 条件取反 ,位置放到模式的后面, 例: 地址定界!编辑命令
s///: 查找替换,其分隔符可执行指定常用的为 s@@@ 或 s###
替换标记:
g:全局替换
w /path/to/somefile : 将替换成功的结果保存到指定文件中
p: 显示替换成功的行。

练习:
1. 删除/boot/grub/grub2.cfg文件中所有以空白字符开头的行的行首的所有空白字符
~]# sed 's@^[[:space:]]+@@' /boot/grub/grub2.cfg
2. 删除/etc/fstab文件中所有以#开头的行的行首的#号,及#号后面的所有空白字符
~]# sed ' s@^#[[:space:]]*@@‘ /etc/fstab
3. 输出一个绝对路径给sed命令,去除其目录,其行为类似于dirname;
~]# echo "/var/log/messages/" | sed 's@[^/]+/?@@' ~]# echo "/var/log/messages/" | sed -r 's@[^/]+/?@@'

全部评论 (0)

还没有任何评论哟~