rpm管理,yum本地仓库搭建,sed命令常用操作

(1)每十二小时备份并压缩/etc/目录至/backup/目录中,保存文件名称格式为,"etc-年-月-日-时-分.tar.gz**

创建backup目录:mkdir /backup
crontab -e ,然后再里面添加: * */12 * * * /usr/bin/tar -zcf /backup/etc-$(date +%F- %H-%M).tar.gz /etc
注意:这里的 % 需要加 \ 转义

 查看任务:[root@like_student ~]#crontab  -l
	*/1 * * * * /usr/local/qcloud/stargate/admin/start.sh > /dev/null 2>&1 &
	0 0 * * * /usr/local/qcloud/YunJing/YDCrontab.sh > /dev/null 2>&1 &
    * */12 * * * /usr/bin/tar -zcf /backup/etc-$(date +\%F-\%H-\%M).tar.gz /etc

补充:下面是一些对crontab的简介

		[root@like_student ~]#cat /etc/corntab
		
		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) (周)
		# |  |  |  |  |
		# *  *  *  *  *   command to be executed(要执行的命令)

注意:  
		1: 每行定义一个cron任务,共6个字段:
		2:此处的环境变量不同于用户登录后获取的环境,因此建议命令使用绝对路径,或者自定义PATH环境变量
		3:邮件发送给当前用户	

时间表示法:
	特定值:
		1:给定时间点有效取值范围内的值
				注意:(天)和(周) 一般不同时使用
			
		2:*
			给定时间点上有效取值范围内的所有值:表示 “ 每...”				
				列如:
				(1)3 * * * * :每小时执行一次,每小时的第3分钟
				(2)3 4 * * 5 :每周执行一次,每周5的4点3分
				(3)5 6 7 * * :每月执行一次,每月的7号6点5分
				(4)7 8 9 10 * :每年执行一次,每年的10月9号8点7分

		3:离散取值
			在时间点上使用逗号分隔的多个值:
		 	  #,#,#
				列如:
				(1)9 8 * * 3,7 :每周三和周日,8点9分执行一次

		4:连续取值: -
		 	 在时间点上使用-连接开头和结束:
			   #-#
			列如:0 8-17 * * 1-5 :每周一至周五的,8点至17点的每小时执行一次。

		5:在指定时间点上,定义步长:
			  */# : #即步长
			    列如:*/2 * * * * :每两分钟执行一次
		注意:
			(1):指定的时间点不能被步长整除时,其意义将不复存在,必须要能被给定的单位除尽
			(2):最小时间单位为“分钟”想完成“秒”执行任务,的需要额外借助于其他的机制
				  定义每分钟任务,可利用脚本实现在每分钟之内,循环执行多次
		
		crontab命令:
			-e :编辑任务
			-l :列出所有任务
			-r :移除所有任务,即删除/var/spool/cron/username文件
			-i :在使用-r删除所有任务是提示用户确认
			-user :root用户可为指定用户编辑crontab任务
			
	注意:运行结果以邮件通知给用户,如果想拒接收邮件
		1:COMMAND > /dev/null  :只把正确的命令重定向到/dev/null中,错误信息发送给用户
		2: COMMAND &> /dev/null :正确和错误的信息都重定向到/dev/null,一般不建议使用,除非已经确定过任务正确性。

(2)rpm包管理功能总结

	centos系统上rpm命令管理程序包:
		安装,升级,卸载,查询,校验,数据库维护
		
	rpm命令:rpm [option] [package_file]
			-i :安装
			-u :升级
			-e :卸载 
			-v :显示执行过程
			-h :输出进度条;每个#表示2%的进度
			-q :查询
			-V :校验
			--initdb或--builddb :数据库维护
			
		安装:rpm -ivh package_file 
		测试安装:rpm -ivh --test package_file 		
		重新安装:rpm -ivh --replacepkgs package_file
		忽略依赖关系:rpm -ivh --nodeps package_file 
	 	不检查签名信息:rpm -ivh	--nosignature  package_file	 	
		不检查包完整性:rpm -ivh	--nodigest   package_file


	升级:rpm -Uvh package_file 
		-U :升级或安装		
		-F :没有老版本时不做安装,只用于升级
		--oldpackage:降级  
		--force:强制升级 

	注意:(1):不要对内核做升级操作,可能会导致一些程序不兼容,linux支持多内核并存,因此可以直接安装新版本的内核。
		 (2):如果某原程序包的配置文件安装后曾被修改过,升级时,新版本的程序提供的同一个配置文化不会覆盖原有版本的配置文件。
			   而是把新版本的的配置文件重命名后保留为(FILE_NAME.rpmnew)

						
		卸载: rpm -e package_name
			--allmatches :卸载所有匹配指定名称的程序包的各版本
			--nodeps :忽略依赖关系
			--test:测试卸载


		查询:rpm  -q  package_name
			-a:查询所有已经安装过的包
			-f FILE:查询指定的文件由那个程序包安装生成
				用法:rpm -qf /etc/passwd
					
			--whatprovides package_name :查询指定的package_name是有那个程序包提供
			--whatrequlres package_name :查询指定package_name被那个包所依赖
				用法:rpm -q --whatprovides httpd

			-p package_FILE:用于实现对未安装的包执行查询操作
				用法:rpm -qpi package_FILE

			-l:程序安装生成的所有文件列表
			-i:程序包相关的信息,版本号,大小,所属的包组等
			-c:查看指定程序包提供的配置文件
			-d:查看指定的程序包提供的帮助文档
			-R: 查询指定的程序包依赖关系
			--changelog:查询rpm包的修改日志
			--scripts:查看程序包自带的脚本片段


		校验:
		 rpm {-V|--verify} [select-options] [verify-options]
			用法:[root@like_student ~]$rpm -V httpd
	  				S.5....T.  c /etc/httpd/conf/httpd.conf

				S :文件大小发生改变
				M :权限发生改变
				5 :MD5码,文件内容改变
				D :主、次设备号
				L :路径不匹配
				U :属主改变
				G :属组改变
				T :最近一次修改时间戳
				P :开发内容


	获取并导入信任的包制作者的GPG秘钥:
	 导入:对于centos7发行版:rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7 

	 验证:
	 	(1)安装次组织签名的程序时,会自动执行验证
		(2)手动验证:rpm -K package_FILE 

	数据库重建:
		rpm管理器数据库路径:/var/lib/rpm/
			查询操作:通过此处的数据库进行

	获取帮助: 
		centos6:man rpm
		centos7:man rpmdb

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

(3)yum的配置和使用总结以及yum私有仓库的创建

http://mirrors.aliyun.com/repo/Centos-7.repo  :阿里云yum源

		yum客户端:
			配置文件: 
				/etc/yum.conf :为所有仓库提供公共配置
				/etc/yum.repos.d/*.repo :为仓库的指向提供配置

		仓库的定义:
			[repolocal]
			name=some name for this repostiory 	(仓库的完整描述)
			baseurl=url://path/to/repostiooy 	(可以指定多个url)
			enabled={1|0} 	(是否启用此仓库)
			gpgcheck={1|0} 	(对此仓库的包安装前是否坚持其完整性)
			gpgkey=URL 	(指定秘钥文件地址)
			enablegroups={1|0} 	(是否支持此仓库使用组管理)
			failovermethod= { roundrobin(随机)默认 | priority(优先级) }
			cost=1000(开销数字):默认1000
			
	显示仓库列表:
		yum repolist :默认,显示启用
		yum repolist all :显示所有
		yum repolist disabled :显示禁用
 
	显示程序包:
		yum list :	显示所有程序包
		yum list http* :显示指定程序包

	安装程序包:
		yum install [package1]  [package2] ... :安装
		yum reinstall  [package1]  [package2] ... :重新安装

	升级程序包:
		yum update [package1]  [package2] ... :升级
		yum downgrade  [package1]  [package2] ... :降级

	检查可用升级:
		yum check-update 

	卸载程序包:
		yum remove  [package1]  [package2] ... :会把依赖同时卸载

	查看程序包information:
		yum info package 

	查看指定的特性(可以是文件)是有那个程序包所提供:
		yum provides package

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

	生成缓存:
		yum makecache

	搜索: 
		yum	search string(指定的关键字) :以指定的关键字搜索程序包名及概要信息

	查看指定包依赖:
		yum deplist  [package1]  [package2] ...

	查看yum事务历史:
		yum history 

	包组管理的相关命令:
		yum	groupinstall group1 group2 ... :安装指定包组
		yum	groupupdate group1 group2 ...:升级指定包组
		yum	grouplist  :显示包组
		yum	groupremove group1 group2 ... :移除指定包组
		yum	groupinfo group1 group2 ... :查找包组相关信息

	创建本地光盘yum源:
		先把光盘挂载到/media/cdrom 
		
		在/etc/yum.repo.d/目录下创建一个,local.repod的文件添加以下内容:
			[bash]
			 name=centos7 release test1.0.2(仓库名字)
			 baseurl=file:///media/cdrom (地址)
			 enable=1 (开启此仓库)
			 gpgcheck=0 (不检查来源性完整性)
			
		查看可用仓库:yum repolist  

	yum的命令行选项:
		--nogpgcheck :禁止gpgcheck ,检查包来源完整性
		-y:自动安装
		-q:静默模式
		--disablerepo=repoidglob :临时禁用此处指定的repo
		--enablerepo=repoidglob :临时启用此处指定repo
		--noplugins :禁用所有插件

	yum的repo配置文件可用的变量
		$releasever :当前OS的发行版的主板本号
		$arch :平台
		$basearch : 基础平台
		$YUM0-YUM9 :可以自定的变量

	格式:hhtp://mirrors.test.com/centos/$releasever/$basearch
	创建yum仓库:
		(1)安装:createrepo 
			yum install createrepo 

		(2)创建一个目录放rpm包
			mkdir /etc/repo

		(3)把rpm下载在到本地/etc/repo目录

		(4)创建yum仓库:createrepo /etc/repo 

		(5)创建/etc/yum.repo/local.repo 配置文件 ,添加以下内容
			[local]
			name=centos7 release repo.1.1 
			baseurl=file:///etc/repo 
			enabled=1
			gpgcheck=0

		(6)生成缓存:yum makecache 

		(7)查看:yum repolist

(4)sed命令用法总结实列演示

文本处理三剑客:
	grep,egrep,fgrep:文本过滤器
	sed:行编辑器,
	awk:文本格式化工具,报告生成器
	
	常用选项:
		-n :不输出模式空间的内容至屏幕
		-e :多重编辑,且命令顺序会影响结果
		-f /path/to/sed_script_file :指定一个 sed 脚本文件到命令行执行
		-r :支持使用扩展正则表达式
		-i :直接编辑原文件

	地址定界: 
		(1)空地址:对全文进行处理
		(2)单地址:
				# :指定行
				/pattern/ :被模式所匹配到的每一行
		(3)地址范围:
				#,# :比如 1,100 :从第1行到第100行
				#,+# :比如 10,+10 :从第10行开始加10行。
				#,/pat1/ :比如 10,/pattern/ :从第10行开始到,第一次被模式匹配到的所有行。。
		(4)步进:~
			1~2:所有奇数行
			2~2:所有偶数行

	编辑命令:
		d:删除指定行
		 		sed '1,5d' /etc/passwd :删除第1行至第5行
				sed '/^#/d' /etc/fstab :删除#开头的所有行
		p:显示模式空间的内容,通常和-n 一起使用
				sed '1,5p' /etc/fstab :1至5行显示两次
				sed -n '1,5p' /etc/fstab  :只显示被模式匹配的行
		a\:在被模式匹配到的行后面追加文本,支持使用\n实现多行追加
				sed '3 a\new line' /etc/fstab :在/etc/fstab文件的第三行后面追加“new line”

				sed '3 a\new line\two nwe line' /etc/fstab :在/etc/fstab文件的第三行后面追加“new line”,然后在追加一行

				sed '/^UUID/ a\add new line ' /etc/fstab :所有UUID开头的行,下面一行加上“add new line”

		i\:在被模式匹配到的行前面插入文本,支持使用\n实现多行插入
				sed '3 i\new line' /etc/fstab
				sed '/^UUID/ i\add new device base on UUID' /etc/fstab
		
		c\:把匹配的行替换为此处指定的文本
				sed '/^#/ c\test' /etc/fstab

		w /path/to/somefile:保存模式空间匹配到行到指定的文件中 
				sed '/^[^#]/w /tmp/fstab' /etc/fstab :把不是#开头的行保存到/tmp/fstab 
		
		r /path/from/somefile:读取指定文件内容至当前文件被模式匹配到的行后面:文件合并
				sed '/^[^#]/r /etc/issue' /etc/fstab  
				sed '3r /etc/issue' /etc/fstab
				
		= :为模式匹配到行加行号
				sed '/^[^#]/= ' /etc/fstab :所有被模式匹配到行上面加上行号
				
		!:条件取反
				sed '/^#/!d' /etc/fstab :删除除#开头的所有行

		s///:查找替换,其分隔符可自行指定,常用的s@@@,s###等
				替换标记:
					g:全局替换:默认只替换每一行中第一次出现
					w /PATH/TO/SOMEFILE:将替换成功的结果保存至指定文件中
					p:显示替换成功的行
					
				sed 's@^#@@' /etc/fstab:把所有开头的#号都替换为空白
	
	练习:
	(1)删除/etc/grub2.cfg文件中所有已空白字符开头的行的行首的所有空白字符
		sed  's@^[[:space:]]\+@@' /etc/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@[^/]+/?$@@'

		高级编辑命令:
		h:把模式空间中的内容覆盖至保持空间中
		H:把模式空间中的内容追加至保持空间中
		g: 把保持空间中的内容覆盖至模式空间中
		G:把保持空间中的内容追加至模式空间中
		x:把模式空间中的内容与保持空间中的内容互换
		n:覆盖读取匹配到的行的下一行至模式空间中
		N:追加读取匹配到的行的下一行至模式空间中
		d:删除模式空间中的行
		D: 删除多行模式空间中的所有行
	
	(烧脑系列)
			sed -n 'n;p' FILE :只显示偶数行
			sed 'n;d' FILE :只显示奇数行
			sed '1!G;h;$!d' FILE :逆序显示
			sed '$!d' FILE :取出最后一行
			sed '$!N;$!D' FILE :取出最后两行
			sed '/^$/d;G' FILE :删除原有的空白行,而后为所有的非空白行后添加一个空白行
			sed 'G' FILE :在原有的每行后面添加一个空白行

(5)写一个脚本实现列出一下菜单给用户,提示用户给出自己的选择,而后显示对应其选项的相应系统信息
(1)disk:show disk info
(2)men:show memory info
(3)cpu:show cpu info
(4)quit

**实列**  :

			#!/bin/bash
			#test,cpu,disk,memory
			#
			cat << EOF
			disk:show disk info
			mem:show memory info
			cpu:show cpu info
			quit...
			EOF

			read -p "Please enter a parameter:" var1

			if [[ "$var1" == "disk" ]];then
				fdisk -l /dev/[a-z]d[a-z]
			elif [[ "$var1" == "cpu" ]];then
				lscpu
			elif [[ "$var1" == "mem" ]];then
				free -m
			else
				echo "unknown option"
				exit 1
			fi

测试脚本功能是否正常:
在这里插入图片描述
在这里插入图片描述

(6)用bash实现统计访问日志文件中状态码大于等于400的ip数量并排序

sed  -nr '/\<40[0-9]\>/p' /usr/local/apache/logs/access_log|cut -d" " -f1 |uniq -c |sort -n

在这里插入图片描述
(7)使用自制的yum源安装httpd,ftp,poenssh,wget,tcpdump等软件包
(1)第一步检测有没有createrepo命令:
在这里插入图片描述
(2)先挂载光盘,然后在创建一个目录放置rpm包:
挂载:mount -r /dev/cdrom /media/cdrom :如果要开机自动挂载需要写在/etc/fstab
创建目录:mkdir /etc/yum/repo
在这里插入图片描述
(3)创建仓库:
在这里插入图片描述
(4)/etc/yum.repos.d/目录下面,创建一个local.repo的文件
vim /etc/yum.repos.d/local.repo
在这里插入图片描述

(5)查看仓库:在这里插入图片描述
(6)先把网络源的仓库禁用在这里插入图片描述
(7)测试安装软件:
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值