Linux文件查找与tar包管理、企业级sed应用 软件包管理与编译安装httpd

总结

第7节 Linux文件查找与tar包管理、企业级sed应用

使用locate命令
使用find命令
压缩和解压缩工具

01-文件搜索

locate (00:02:30)
locate test.sh
updatedb # 更新locate数据库 对应/var/lib/mlocate/mlocate.db文件
locate "*.sh" # 不加"" 只搜索当前目录下
locate -n 3 -i "*.sh" #忽略大小写,显示前3个
locate -r "\.sh$" #支持标准正则表达式
find命令(00:11:00)
实时查找工具,通过遍历指定路径完成文件查找
工作特点:
• 查找速度略慢
• 精确查找
• 实时查找
• 可能只搜索用户具备读取和执行权限的目录
find /data # data下所有文件包括子目录下文件
find /data -maxdepth 1 #搜索目录最大深度
find /data -maxdepth 2 -mindepth 2
find -depth # 先显示文件.再处理目录
find /data -name "*test*" # 
find /data -iname "*.SH"
find /data -inum 68 # 按inode查找
-samefile name 相同inode号的文件
	find /data -samefile /data/bin/f1.sh
-links n 链接数为n的文件
	find /data -links 2
-regex “PATTERN”:以PATTERN匹配整个文件路径,而非文件名称
	find /data -regex '.*\.sh$'
-user USERNAME:查找属主为指定用户(UID)的文件
	find /data -user wang -ls
-nouser:查找没有属主的文件
-nogroup:查找没有属组的文件
find /data -type d #根据文件类型查找
find -empty #查找空文件或目录
find -type d -empty
find -name "*.sh" -o -user root # -o 或
find \( -name "*.sh" -o -user root\) -ls
find ! -name "*.sh"
德·摩根定律:(00:37:00)
(非 A) 或 (非 B) = 非(A 且 B)
(非 A) 且 (非 B) = 非(A 或 B)
find ! \( -user wang -name "*.txt"\) # 等价于
find ! -user wang -o ! -name "*.txt"
查找/etc/下,除/etc/sane.d目录的其它所有.conf后缀的文件
find /etc -path "/etc/sane.d" -a -prune -o -name "*.conf"
查找/etc/下,除/etc/sane.d和/etc/fonts两个目录的所有.conf后缀的文件
find /etc \( -path "/etc/sane.d" -o -path "/etc/fonts" \) -a -prune -o -name "*.conf"

02-文件搜索和压缩工具1

根据文件大小来查找
find / -size 10M #在根目录下搜索10M文件 
	10M 是一个范围9-10M不包括9M (#-1,#]
	-#UNIT:[0,#-1]
	+#UNIT:(#,∞)
find /usr -size +5M -size -10M -ls # 5M到10M不包括10M

根据时间查找
UNIX/Linux文件系统每个文件都有三种时间戳:

访问时间(-atime/天,-amin/分钟):用户最近一次访问时间。
修改时间(-mtime/天,-mmin/分钟):文件最后一次修改时间。
变化时间(-ctime/天,-cmin/分钟):文件数据元(例如权限等)最后一次修改时间。
find /var/log -type f -mtime +7
根据权限查找(00:11:00)
find -perm 644 # 查找精确权限匹配644
find -perm /644 # ugo满足一位即可
find -perm -644 #ugo都必须同时拥有指定权限
find -perm -004 # 0表示不关注,只要o位满足4权限即可
处理动作(00:30:00)
-print
-ls
-delete
-ok -exec区别在于 -ok需要用户确认
	find -perm -444 ! -name "*.sh" -ok mv {} /root \;
xargs参数替换(00:41:00)
echo f{1..64288} |xargs touch
find /sbin -perm +7000 | xargs ls –l 
压缩、解压缩及归档工具(1:00:00)
压缩工具解压工具文件后缀选项
compressuncompress.Z-c:结果输出不删除原文件 -d:解压缩,相当于uncompress -v:显示过程
gzipgunzip.gz-d : -c: -#:1-9可选压缩比 支持标准输入
bzip2bunzip2.bz2-k: keep 保留原文件 -d: bzcat查看压缩文件
xzunxz.xz-k: -d: xzcat查看
zipunzip.zip打包压缩 -r
tar-j: bzip2, -z: gzip, -J: xz
cpio
compress bigfile #生成.z文件,源文件删除
uncompress bigfile.z #解压后压缩文件删除
zcat file.z > file #不显示解压缩的前提下查看文本文件内容
gzip -d file.gz #解压file.gz
压缩工具解压对应的后缀名
tree /etc |gzip > tree.gz #支持标准输入,输出到tree.gz 在以后数据库学习中会用到 
压缩 解压缩后会丢失文件属性
cp m -- -f2 #复制m为-f2
gzip -- -f1 -f2 -f3 #压缩带-的文件
除了zip和tar压缩文件,不能压缩文件夹
cat /var/log/messages | zip messages - # - 代表前面的标准输入

03-文件压缩和打包工具2

tar (00:25:00)
tar -cpvf /PATH/FILE.tar FILE... # 创建归档
	-c 创建 -p保留权限属性 -v观察打包过程 -f 文件名
tar cvf etc.tar /etc
tar -r -f /PATH/FILE.tar FILE... # 追加文件至归档: 注:不支持对压缩文件追加
tar -t -f /PATH/FILE.tar # 查看归档文件中的文件列表
tar -x -f /PATH/FILE.tar #展开归档
tar zcvf etc.tar.gz /data/etc/ #打包压缩gz格式
tar jcvf etc2.tar.bz2 /data/etc/ #压缩bz2格式
tar Jcvf etc2.tar.xz /data/etc/ #压缩xz格式
tar xvf file.tar.bz2 # 解包
tar zcvf /root/a3.tgz --exclude=/app/host1 --exclude=/app/host2 /app
	-exclude 排除文件 tgz 等同tar.gz
tar Jcvf /root/data.tar.xz -T list.txt -X nolist.txt
	-T选项指定输入文件,-X选项指定包含要排除的文件列表
splist 分割一个文件为多个文件(00:54:23)
split –b Size –d tar-file-name prefix-name
split -b 2M -d /root/data.tar.xz databak
cat databaka* > databak.tar.xz #合并
cpio (00:59:50)
功能:复制文件从或到归档
cpio命令是通过重定向的方式将文件进行打包备份,还原恢复的工具,它可以解压以“.cpio”或者“.tar”结尾的文件
将etc目录备份:
	find ./etc -print |cpio -ov >bak.cpio
将/data内容追加bak.cpio
	find /data | cpio -oA -F bak.cpio
解包文件
	cpio –idv < etc.cpio

文本处理三剑客之sed

Stream EDitor, 行编辑器

sed是一种流编辑器,它一次处理一行内容。处理时,把当前处理的行存储在临时
缓冲区中,称为“模式空间”(pattern space),接着用sed命令处理缓冲区中的
内容,处理完成后,把缓冲区的内容送往屏幕。然后读入下行,执行下一个循环。
如果没有使诸如‘D’的特殊命令,那会在两个循环之间清空模式空间,但不会清
空保留空间。这样不断重复,直到文件末尾。文件内容并没有改变,除非你使用重
定向存储输出。

功能:主要用来自动编辑一个或多个文件,简化对文件的反复操作,编写转换程序等

用法:

用法: sed [选项]… {脚本(如果没有其他脚本)} [输入文件]…

常用选项:
-n不输出模式空间内容到屏幕,即不自动打印
-e如果需要用sed对文本内容进行多种操作,则需要执行多条子命令来进行操作。
-f
-r
-i.bak备份文件并原处编辑
地址定界:
不给地址对全文进行处理
#对指定的行打印, seq 10 |sed -n ‘3p’显示:3
$最后一行, seq 10 | sed -n ‘$p’显示: 10
/pattern/被此处模式所能够匹配到的每一行; sed -n '/^r/p' /etc/passwd显示passwd文件中以r开头的行
#,#和其他#,+# /pat1/,/pat2/ #,/pat1/ 都表示地址范围 seq 10 | sed -n ‘3,+6p’
~步进;12,22 seq 10 | sed -n ‘2~2p’显示偶数行
编辑命令:
d删除模式空间匹配的行,并立即启用下一轮循环
p打印当前模式空间内容,追加到默认输出之后
a在指定行后面追加文本,支持使用\n实现多行追加
i在行前面插入文本
c替换行为单行或多行文本
w /path/file保存模式匹配的行至指定文件
r /path/file读取指定文件的文本至模式空间中匹配到的行后
=为模式空间中的行打印行号
!模式空间中匹配行取反处理

例子:

sed -n '2p' /etc/passwd   # 打印/etc/passwd 第两行
sed -n '/^sa/,/^pul/p' /etc/passwd # 显示passwd文件以sa开头到以pul开头之间的行
seq 10 | sed '2,6d' #显示1,7,8,9,10行把2-6删除,
sed '/^#/d' /etc/fstab #把fstab中以#开头的行删除,其他显示(文件中并不删除#行,只是不显示以#开头的行)
sed '/^root/iadmin line' /etc/passwd #在文件passwd中以root开头的行前加入admin line行
sed -i '/^SELINUX=enforcing/cSELINUX=disabled' /etc/selinux/config #更改文件/etc/selinux/config 中以SELINUX=enforcing开头的行为SELINUX=disabled
ifconfig eth0 | sed -nr '2s/.*t (.*) net.*/\1/p' #取网卡ip地址
ifconfig eth0 | sed -r '2!d;s/.*inet (addr:)?//;s/ .*//' #取网卡ip地址 CentOS 6 7通用
echo /etc/sysconfig/network-scripts | sed -nr 's@(^.*/)([^/].*)/?$@\1@p' # 取基名或目录名
sed -r 's/^[^#]/#&/' /etc/fstab # 不是#开头的行加上#
ls *.rpm | rev | cut -d. -f2 | rev | sort | uniq -c
ls *.rpm | sed -r 's/.*\.(.*)\.rpm$/\1/' | sort | uniq -c

第8节 软件包管理与编译安装httpd

01. 软件包管理

ls *.rpm| sed -r 's/.*\.(.*)\.rpm$/\1/' |sort | uniq -c
ls *.rpm|rev|cut -d. -f2|rev |sort |uniq -c

02. RPM包管理

ldd 查看二进制程序所依赖的库文件(17:20)
ldd -p #系统中正在使用的库的信息
ldd /bin/ls # ls所依赖的库信息
ldd /bin/cat # cat所依赖的库信息
实验: 删除/lib64libc.so.6, 恢复(20:00-31:40)
ldconfig 加载配置文件中指定的库文件(32:00)
/sbin/ldconfig –p 显示本机已经缓存的所有可用库文件名及文件路径映射关系
配置文件:/etc/ld.so.conf, /etc/ld.so.conf.d/*.conf
缓存文件:/etc/ld.so.cache
RPM 包管理器(34:30)
包文件组成
数据库(公共):/var/lib/rpm 包含系统安装好的包的数据信息 非常重要
程序包的来源(43:00)
	获取程序包的途径
		光盘或镜像服务器
		项目官方站点
		EPEL源
		自己制作
rpm命令 (57:00)
	使用rpm命令管理程序包(安装、卸载、升级、查询、校验、数据库维护)
	rpm -ivh PACKAGE_FILE... # -i(--install) -v:verbose -h:以#显示程序包执行进度
	rpm -q 包名 # -q(query查询) 
	rpm -e 包名 # 卸载
	配合安装的选项 -ivh 
		--test 测试不安装--nodeps 忽略依赖 
		--replacepkgs | replacefiles 覆盖 (删除后不完全,强行覆盖安装) 1:10:00
		--nosignature:不检查来源合法性
		--nodigest:不检查包完整性
		--noscripts:不执行程序包脚本
		rpm -q --scripts bash # 查询bash包安装脚本(1:18:00)
	rpm包升级 慎用(1:20:00)
		-U rpm -Uvh upgrad
		-F rpm -Fvh 
		--oldpackage:降级
		--force:强制安装

03. RPM包管理

cat /etc/centos-release # 版本
rpm -q kernel #内核版本 等同uname -r
内核升级(00:02:00)
lsb_release -a #
rpm -ivh 可多版本并存 升级会覆盖旧包
不要对内核做升级操作;Linux支持多内核版本并存,因此,对直接安装新版本内核
如果原程序包的配置文件安装后曾被修改,升级时,新版本的提供的同一个配置文件并不会直接覆盖老版本的配置文件,而把新版本的文件重命名(FILENAME.rpmnew)后保留
rpm -q 包查询
	rpm -qa |grep tree # -a all (00:22:00)
	rpm -qa "*tre*"
	rpm -ql tree # -l list 查询列表
	rpm -q --scripts httpd #查询包脚本
	rpm -qf /usr/bin/tree # 查询某个文件来自哪个包
	rpm2cpio tree-1.6.0-10.e17.x86_64.rpm | cpio -tv #预览解包rpm文件(00:33:30)
	rpm2cpio tree-1.6.0-10.e17.x86_64.rpm | cpio -id ./usr/bin/tree #释放包内文件,有可能带来属性丢失
	rpm -qp /data/tree-1.6.0-10.e17.x86_64.rpm # 安装前查询rpm包里包含的文件
	rpm -q --whatprovides 
	rpm -qc bash #包查询程序的配置文件 -d: 查询程序的文档
	rpm -qi bash #查询包描述信息 -i: information 
	rpm -qpi httpd #安装前查询包描述信息
	
	常用选项 -qi -qpi -qa
卸载内核并恢复(00:56:00)
	rpm -ivh /mnt/cdrom/Packages/kernel-2.6.32-754.e16.x86_64.rpm --root=/mnt/sysimage/ #注意安装指定安装根目录
rpm -V #包校验(1:10:00)
rpm -Va #查询所有包变化

04. yum仓库实现

导入所需要公钥(00:04:00)
rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
rpm -K|checksig rpmfile 检查包的完整性和签名
rpm -qa “gpg-pubkey*”
删除rpm包的恢复(00:16:00)
yum (00:28:00)
rpm的前端程序,可解决软件包的依赖性
client端配置文件
	/etc/yum.repos.d/*.repo:为仓库的指向提供配置
	/etc/yum.conf:为所有仓库提供公共配置
yum 服务器配置(00:46:00)
系统安装光盘作为本地yum仓库
	挂载光盘至某目录,例如/mnt/cdrom
	创建配置文件 /etc/yum.repos.d/[file].repo
		[base]
		name=cdrom  repo
		baseurl=file:///misc/cd/
		#gpgcheck=0
		gpgkey=file:///misc/cd/RPM-GPG-KEY-Centos-6
	yum repolist

05.yum网络仓库实现

判断包是否安装的脚本(00:06:00)
挂载光盘
systemctl enable autofs
systemctl start autofs
(00:20:00)
用rpm -q httpd 判断是否安装 然后用yum install httpd安装
yum repolist
yum list #查看yum源安装包的情况,带@符号表示安装,不带@表示没安装

/etc/yum.conf 文件 (00:24:00)
yum clean all #清空缓存 对应文件目录/var/cache/yum/
yum配置文件讲解(00:28:50)
yum EPEL源配置(00:33:00)
yum的repo配置文件中可用的变量:
	$releasever: 当前OS的发行版的主版本号
	$arch: 平台,i386,i486,i586,x86_64等
	$basearch:基础平台;i386, x86_64
	$YUM0-$YUM9:自定义变量
[epel]
name=EPEL
baseurl=https://mirrors.tuna.tsinghua.edu.cn/epel/$releasever/$basearch
gpgcheck=0
enabled=0
yum命令
yum history 查看yum事务历史
yum history info ID
yum history undo ID 撤销事务历史的安装
yum history redo ID 重做历史的安装
yum remove
搭建基于HTTP协议的网络yum仓库(00:46:00)
搭建http服务
yum install httpd
systemctl start httpd
rpm包和源数据放到http的共享目录(可复制光盘目录)
配置yum客户端

06.yum使用

yum search 
CentOS7 关闭防火墙(00:11:00)
	systemctl disable firewalld #关闭防火墙(开机不启动)
	systemctl stop firewalld #关闭防火墙(立即关闭)
	CentOS6 关闭防火墙
	chkconfig iptables off
	service iptables stop
	SElinux关闭
	/etc/selinux/config文件SELINUX=disabled
卸载虚拟网卡(00:20:00)

yum remove libvirt-daemon

包组列表(00:31:00)
yum grouplist
yum groupinstall "development tools"
创建yum仓库(00:37:00)
createrepo [options] <directory>

总结yum常用选项(00:43:00)
yum install remove list info search groupinstall grouplist groupremove history
yum clean all
编译源码(00:44:00)
gcc hello.c -o hi
./hi
find linux-4.18.13/ -name "*.c" -exec cat {} \; |grep -v "^$"|wc -l # 统计文件多少行
cat `find linux-4.18.13/ -name "*.c" `|wc -l

07-源码编译安装httpd

C、C++ make 项目管理器(00:06:00)
configure脚本 --> Makefile.in --> Makefile
C语言源代码编译安装三步骤
	1、./configure
	2、make
	3、make install
编译安装httpd (00:16:00)
ss -ntl #查看当前是否有同类服务以免冲突
./configure --prefix=/app/httpd --sysconfdir=/etc/httpd24 --enable -ssl --disable-status
yum install arp-devel

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值