本文来自投稿,不代表Linux运维部落立场,如若转载,请注明出处:http://www.178linux.com/103128
rpm包管理、计划和周期任务、sed命令
1、简述rpm与yum命令的常见选项,并举例
rpm常见选项:
-i 安装指定的rpm程序包
-U 使用rpm包进行升级或者安装
-e 卸载指定的rpm包
-q 查询rpm包
-i安装、-U升级、-e卸载、-q查询,四个选项每个都有对应的其他可用选项
-i:
-v 输出操作过程的信息
-h 显示进度条
–test 测试安装,主要检查并报告依赖关系及冲突信息等,并不会实际安装
–nodeps 安装时忽略依赖关系
–replacepkgs 替换现有已安装的程序包,即重新安装
–nosignature 不检查rpm包的签名信息,即不检查来源的合法性
–nodigest 不检查rpm包的完整性
-U:
–force 强制升级
–oldpackage 降级安装rpm包
-e:
–allmatches 所有匹配指定名称的程序包的所有哦版本都会被卸载
–nodeps 忽略依赖关系
–test 测试卸载
-q:
-a 查询所有已经安装的rpm包
-f 查询指定的文件是由哪个安装的rpm包产生的
-p 指定未安装的rpm包进行查询
-l 查询rpm包安装生成的所有文件列表
-i 查询rpm包的详细信息,如版本号,大小等
-c 查询rpm包提供的配置文件
-d 查询rpm包提供的文档
–provides 查询rpm包提供的所有CAPABILITY能力
-R,–require 查询rpm包安装时所需要的依赖关系
常见用法:
安装rpm包:
rpm -ivh PACKAGE
测试安装rpm包:
rpm -ivh –test PACKAGE
升级rpm包:
rpm -Uvh PACKAGE
强制升级rpm包:
rpm -Uvh –force PACKAGE
卸载rpm包:
rpm -e PACKAGE
卸载时忽略依赖关系:
rpm -e –nodeps PACKAGE
查询rpm包是否安装:
rpm -qa PACKAGE
查询rpm包的详细信息:
rpm -qi PACKAGE
查询rpm包的配置文件:
rpm -qc PACKAGE
查询rpm包产生的所有文件:
rpm -ql PACKAGE
查询未安装的rpm包的信息:
rpm -qpi PACKAGE
yum命令:
用法:yum [options] [command] [package…]
options:
-y 直接安装指定的rpm包
-q 静默安装,不显示安装信息
–noplugins 禁用所有插件
–nogpgcheck 不进行gpg检查
–disablerepo=FILE.REPO 临时禁用指定的yum源
–enablerepo=FILE.REPO 临时启用yum源
command:
repolist 显示启用的每个yum源列表
list 显示rpm包
install 安装rpm包
update 升级rpm包
remove 卸载rpm包
info 显示rpm包的信息
clean 清除本地缓存的yum源的元数据
makecache 建立yum源的缓存
search 根据给定的字符串搜索rpm包
grouplist 列出可用的包组
groupinstall 安装包组
groupremove 卸载包组
groupinfo 显示包组信息
groupupdate 升级包组
示例:
创建本地yum源缓存
yum makecache
查看本地可用的repo列表
yum repolist [enabled]
查看httpd程序包的信息
yum info httpd
直接安装httpd程序包
yum -y install httpd
安装程序包组
yum -y groupinstall Development tools
卸载httpd程序包
yum remove httpd
2、自建yum仓库,分别为网络源和本地源
网络yum源:
在/etc/yum.repo.d/目录下创建repo文件,文件名必须以.repo结尾
通过文本编辑器在新创建的文件中输入以下内容:
[aliyun]
name=aliyun base package
baseurl=http://mirrors.aliyun.com/centos/$releasever/os/$basearch/
enabled=1
gpgcheck=0
本地yum源:
通过挂载系统镜像里文件,建立本地yum源
挂载镜像文件:
mount -r /dev/sr0 /mnt/
在/etc/yum.repo.d/目录下创建repo文件,文件名必须以.repo结尾
通过文本编辑器在新创建的文件中输入以下内容:
[local]
name=cdrom mirrors
baseurl=file:///mnt
enabled=1
gpgcheck=0
3、简述at和crontab命令,制定 每周三凌晨三、五点10分执行某个脚本,输出当前时间,时间格式为 2017-12-28 10:00:00
at命令:
通过at命令创建一个任务,在未来指定的时间点运行,然后将运行的结果通过邮件反馈给发起的用户
用法: at [options] TIME
TIME的指定方式:
HH:MM 即08:30,也可以在后面指定日期
HH:MM YYYY-MM-DD 即20:10 2018-07-20
也可以使用其他表示时间的单词:如
noon 中午
midnight 午夜
teatime 喝茶时间,下午4点
tomorrow 明天
…
还可以指定在当前时间后的某个时间点执行任务:如
now+5min 在5分钟后执行
now+1hours 在1小时后执行
now+2days 在2天后执行
now+1weeks 在1走后执行
options:
-l 查看已有的作业队列
-d 删除指定的作业
-c 查看指定作业的具体内容
-q 创建作业时指定队列
-f /PATH/FILE 从指定文件读取作业内容
示例:
在5分钟后创建一个作业:
at now+5min
查看当前所有的作业:
at -l
通过指定的文件创建作业:
at -f /root/test.sh now+5min
查看指定作业的具体内容,需要指定作业号,通过at -l 可以查看作业号:
at -c 3
crontab命令:
使用crontab命令可以创建任务,由系统内核运行的守护进程周期性的检查任务的执行条件,只有当条件满足时才会执行任务,执行结果通过邮件返回给用户
任务分为两种:系统任务和用户任务
系统任务:实现系统自身维护的任务,保存在/etc/crontab 文件中
用户任务:用户自己创建的,保存在/var/spool/cron/目录下对应的用户名文件中
命令的用法:crontab [ooptions]
常用选项:
-e 编辑任务文件
-l 列出所有任务
-r 移除所有任务,会删除/var/spool/cron/目录下对应的用户名文件
-u root用户可以为指定的用户创建任务
在不指定选项时,直接使用crontab命令添加任务,会将文件中其他任务覆盖掉
使用crontab命令添加任务是需要按照指定的格式进行的:格式如下
* * * * * COMMAND
前面5个字段代表执行时间,后面是符合设置的时间后执行的命令
前5个字段分别表示分钟,小时,每月的第几天,月份,周几
.—————- 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、指定值,即在有效范围内的任意值
2、* 表示范围内的时间点都有效
3、离散取值,中间用逗号,隔开
4、连续取值,中间使用短横线-隔开
5、指定步长,每个步长执行一次,需要被整除
示例:
3 * * * * ls /root
在每小时的第3分钟执行 ls /root 命令
3 5 * * 3 cat /etc/passwd
在每周三的05:03执行 cat /etc/passwd
8 9 4 5 * echo “hello”
在每年的5月4号的09:08执行 echo “hello”
练习:每周三凌晨三、五点10分执行某个脚本,输出当前时间,时间格式为 2017-12-28 10:00:00
创建脚本
vim date-cron.sh
输入以下内容
#!/bin/bash
/usr/bin/date +”%Y-%m-%d %T”
修改执行权限
chmod +x date-cron.sh
创建周期任务
crontab -e
添加以下内容
10 3,5 * * 3 /root/date-cron.sh
4、简述sed常用操作命令,并举例
sed命令:
将文件内容按行读取到模式空间,根据条件进行匹配处理,并将结果输出,不修改源文件
用法:sed [options] ‘script’ [input-file]…
options:
-n 不输出模式空间的内容
-e script;–expression=script 使用多个编辑命令
-f /PATH/TO/SCRIPT_FILE 导入sed脚本文件编辑每行数据
-r 使用扩展的正则表达式进行匹配
-i 直接编辑源文件
script:一般包含两部分,指定处理的行范围和编辑命令
行范围的定界表示方法:
空地址:对全文进行处理
指定地址:
# 单个数字指定行号
/PATTERN/ 使用正则表达式
指定范围:
#,# 如3,5表示从第三行到第五行
#,+# 从起始行开始加指定行结束,如3,+2表示从第三行开始加上后面的二行
#,/pattern/ 从指定行开始,到第一个被模式匹配到的行结束,如果没有匹配的即到最后一行
/pattern/,/pattern/ 表示第一个匹配的行到第二个匹配到的行
$ 表示最后一行
#~# 步进,如1~2表示第1行开始,每次加2的行
编辑命令:
d 删除
p 显示
a \text 行后追加文本
i \text 行前插入文本
c \text 行替换,会将指定的行都替换
w /PATH/TO 保存模式空间匹配到的行至指定文件中
r /PATH/FROM 读取指定的文件,将文件内容追加至指定的行后面
= 对匹配到的行输出行号
! 对地址取反,即 3!d 非第3行删除
s/// 查找替换
高级编辑命令:
sed处理行时有两个空间,模式空间和保持空间,两个空间的数据可以互相引用
上述的编辑命令都是在模式空间操作的,高级编辑命令会涉及保持空间
h 将模式空间的内容覆盖至保持空间
H 将模式空间的内容追加至保持空间
g 用保持空间的内容覆盖模式空间
G 将保持空间的内容追加至模式空间
x 将两个空间的内容互相交换
n 使用匹配到的行的下一行内容覆盖模式空间,即直接引用下一行的数据
N 将匹配到的行的下一行内容追加至模式空间
d 删除模式空间中的行
D 删除模式空间中的所有行
示例:
sed -n ‘3p’ /etc/fstab
将/etc/fstab文件中的第3行打印出来
sed ‘3d’ /etc/fstab
将/etc/fstab文件中第3行删除,即除了第3行的其他行全部输出
sed -n ‘/^UUID/p’ /etc/fstab
将/etc/fstab文件中UUID开头的行打印输出
sed ‘G’ /etc/fstab
在文件中的每一行追加一个空白行
sed ‘/^$/d;G’ /etc/fstab
将/etc/fstab文件中的所有空白行删除,然后在每一行后面追加一个空白行
赞 (1)
iptables实现局域网访问外网
上一篇
2018-07-17
马哥网络班第31期——第二周作业
下一篇
2018-07-18