学习笔记3
2023-01-31 03:01:37
学习笔记
一文件查找和压缩
1文件查找
locate 搜索依赖于数据库,非实时搜索,搜索新建文件需手动更新,适于搜索稳定不频繁修改文件
find 实时搜索,精确搜索,默认当前目录递归搜索
find用法
-maxdepth level 最大搜索目录深度
-mindepth level 最小搜索目录深度
-name 文件名称
-inum n inode号查找
-user 查找属主为指定用户(UID)的文件
-group 查找属组为指定组(GID)的文件
-uid 查找属主为指定的UID号的文件
-gid 查找属组为指定的GID号的文件
-nouse查找没有属主的文件
-nogroup查找没有属组的文件
-type
• f: 普通文件
• d: 目录文件
• l: 符号链接文件
• s:套接字文件
• b: 块设备文件
• c: 字符设备文件
• p: 管道文件
空文件或目录 -empty
根据文件大小来查 -size 常用单位:k, M, G,
以“天”为单位
-atime -mtime -ctime
以“分钟”为单位 -amin -mmin -cmin
根据权限查找 -perm
MODE: 精确权限匹配
/MODE:任何一类(u,g,o)对象的权限中只要能一位匹配即可,或关系,+ 从Centos7开始淘汰
-MODE:每一类对象都必须同时拥有指定权限,与关系
0 表示不关注
2压缩解压工具
2.1compress
-d 解压缩,相当于uncompress
-c 结果输出至标准输出,不删除原文件
-v 显示详情
uncompress file.Z 解压缩
2.2gzip
-d 解压缩,相当于gunzip
-c 结果输出至标准输出,保留原文件不改变
-# 指定压缩比,#取值为1-9,值越大压缩比越大
gunzip file.gz 解压缩
zcat file.gz 不显式解压缩的前提下查看文本文件内容
2.3bzip2
-k keep, 保留原文件
-d 解压缩
-# 1-9,压缩比,默认为9
bunzip2 file.bz2 解压缩
bzcat file.bz2 不显式解压缩的前提下查看文本文件内容
2.4xz-k keep, 保留原文件
-d 解压缩
-# 压缩比,取值1-9,默认为6
unxz file.xz 解压缩
xzcat file.xz 不显式解压缩的前提下查看文本文件内容
打包压缩 zip –r
解包解压缩 unzip
2.5tar
创建归档,保留权限 tar -cpvf
追加文件至归档,不支持对压缩文件追加 tar -r -f
查看归档文件中的文件列表 tar -t -f
展开归档 tar -x -f
结合压缩工具实现归档并压缩 -j: bzip2, -z: gzip, -J: xz
2.6 cpio命令是通过重定向的方式将文件进行打包备份,还原恢复的工具,它可以解压以 “.cpio”或者“.tar”结尾的文件
cpio [选项] > 文件名或者设备名
cpio [选项] < 文件名或者设备名
-o 将文件拷贝打包成文件或者将文件输出到设备上
-O 输出到指定的归档文件名
-A 向已存在的归档文件中追加文件
-i 解包,将打包文件解压或将设备上的备份还原到系统
-I 对指定的归档文件名解压
-t 预览,查看文件内容或者输出到设备上的文件内容
-F 使用指定的文件名替代标准输入或输出
-d 解包生成目录,在cpio还原时,自动的建立目录
-v 显示打包过程中的文件名称
二文本处理SED
-n 不输出模式空间内容到屏幕,即不自动打印
-e 多点编辑
-f 从指定文件中读取编辑脚本
-r 支持使用扩展正则表达式
-i.bak 备份文件并原处编辑
编辑命令:
d 删除模式空间匹配的行,并立即启用下一轮循环
p 打印当前模式空间内容,追加到默认输出之后
a [\]text 在指定行后面追加文本,支持使用\n实现多行追加
i [\]text 在行前面插入文本
c [\]text 替换行为单行或多行文本
w /path/file 保存模式匹配的行至指定文件
r /path/file 读取指定文件的文本至模式空间中匹配到的行后
= 为模式空间中的行打印行号
! 模式空间中匹配行取反处理
s/// 查找替换,支持使用其它分隔符,s@@@,s###
g 行内全局替换
p 显示替换成功的行
w /PATH/FILE 将替换成功的行保存至文件中
三软件包管理
管理程序包的方式
使用包管理器:rpm
使用前端工具:yum, dnf
1 rpm安装
-ivh 安装软件包并显示详细信息及执行进度
--test: 测试安装,但不真正执行安装,即dry run模式
--nodeps:忽略依赖关系
--replacepkgs | replacefiles
--nosignature: 不检查来源合法性
--nodigest:不检查包完整性
--noscripts:不执行程序包脚本
%pre: 安装前脚本 --nopre
%post: 安装后脚本 --nopost
%preun: 卸载前脚本 --nopreun
%postun: 卸载后脚本 --nopostun
rpm 升级
upgrade:安装有旧版程序包,则“升级” 如果不存在旧版程序包,则“安装”
freshen:安装有旧版程序包,则“升级” 如果不存在旧版程序包,则不执行升级操作
rpm -Uvh PACKAGE_FILE ...
rpm -Fvh PACKAGE_FILE ...
--oldpackage:降级
--force: 强制安装
rpm包查询
-a:所有包
-f:查看指定的文件由哪个程序包安装生成
-p rpmfile:针对尚未安装的程序包文件做查询操作
--whatprovides CAPABILITY:查询指定的CAPABILITY由哪个包所提供
--whatrequires CAPABILITY:查询指定的CAPABILITY被哪个包所依赖
rpm2cpio 包文件|cpio –itv 预览包内文件
rpm2cpio 包文件|cpio –id “*.conf” 释放包内文件
--changelog:查询rpm包的changelog
-c:查询程序的配置文件
-d:查询程序的文档
-i:infORMation
-l:查看指定的程序包安装后生成的所有文件
--scripts:程序包自带的脚本
--provides:列出指定程序包所提供的CAPABILITY
-R:查询指定的程序包所依赖的CAPABILITY
常用查询用法 -qi -qc -ql -qd -qpi -qpl -qa
rpm包卸载
rpm {-e|--erase} [--allmatches] [--nodeps] [--noscripts] [--notriggers] [--test] PACKAGE_NAME ...
包卸载时,对应的配置文件不会删除以FILENAME.rpmsave形式保留
rpm包校验
S文件大小不同
M模式不同(包括权限和文件类型)
5摘要不同
D设备主要/次要编号不匹配
L 路径不匹配
U用户所有权不同
G组所有权不同
T mtime不同
P功能不同
rpm数据库
数据库重建: /var/lib/rpm
initdb: 初始化 如果事先不存在数据库,则新建 否则,不执行任何操作
rebuilddb:重建已安装的包头的数据库索引目录
2 yum
yum客户端配置文件:
/etc/yum.conf:为所有仓库提供公共配置
/etc/yum.repos.d/*.repo:为仓库的指向提供配置
yum的repo配置文件中可用的变量:
$releasever: 当前OS的发行版的主版本号
$arch: 平台,i386,i486,i586,x86_64等
$basearch:基础平台;i386, x86_64
$YUM0-$YUM9:自定义变量
显示仓库列表 yum repolist
显示程序包 yum list
安装程序包 yum install
yum reinstall 重新安装
升级程序包 yum update
yum downgrade 降级
检查可用升级: yum check-update
卸载程序包: yum remove
查看程序包yum info
查看指定的特性是由哪个程序包所提供 yum provides
清理本地缓存 yum clean
yum search 以指定的关键字搜索程序包名及summary信息
查看指定包依赖 yum deplist
查看yum事务历史 yum history
系统安装光盘作为本地yum仓库
(1) 挂载光盘至某目录,例如/mnt/cdrom mount /dev/cdrom /mnt/cdrom
(2) 创建配置文件 [CentOS7] name= baseurl= gpGCheck= enabled=
创建yum仓库: createrepo [options] <directory>
3编译安装
C/C++编译器: gcc
C语言源代码编译安装三步骤
1、./configure
(1) 通过选项传递参数,指定启用特性、安装路径等;执行时会参考用户的 指定以及Makefile.in文件生成Makefile
(2) 检查依赖到的外部环境,如依赖的软件包
2、make 根据Makefile文件,构建应用程序
3、make install 复制文件到相应路径
三磁盘分区和文件系统
1磁盘分区
作用
1)优化I/O性能
2)实现磁盘空间配额限制
3)提高修复速度
4)隔离系统和程序
5)安装多个OS
6)采用不同文件系统
MBR和GPT分区的区别
mbr分区表只支持单个分区最大空间为2TB,可划分为4个主分区或3个主分区和1个扩展分区,扩展分区可有多个逻辑分区
gpt分区无4个主分区限制
管理分区
列出块设备 lsblk
fdisk 创建MBR分区
gdisk 创建GPT分区
parted 高级分区操作
重新设置内存中的内核分区表版本 partprobe
分区工具
gdisk /dev/sdb 类似fdisk 的GPT分区工具
fdisk -l 查看分区 fdisk /dev/sdb 管理分区
子命令
p 分区列表
t 更改分区类型
n 创建新分区
d 删除分区
v 校验分区
u 转换单位
w 保存并退出
q 不保存并退出
同步分区表
查看内核是否已经识别新的分区 cat /proc/partations
centos6通知内核重新读取硬盘分区表
新增分区用 partx -a /dev/DEVICE kpartx -a /dev/DEVICE -f: force
删除分区用 partx -d --nr M-N /dev/DEVICE
CentOS 5,7: 使用partprobe
2文件系统
linux文件系统
ext2(Extended file system):适用于那些分区容量不是太大,更新也不频繁的情况, 例如 /boot 分区
ext3:是 ext2 的改进版本,其支持日志功能,能够帮助系统从非正常关机导致的异常 中恢复。它通常被用作通用的文件系统
ext4:是 ext 文件系统的最新版。提供了很多新的特性,包括纳秒级时间戳、创建和 使用巨型文件(16TB)、最大1EB的文件系统,以及速度的提升
xfs:SGI,支持最大8EB的文件系统
btrfs(oracle), reiserfs, jfs(aiX), swap
创建文件系统
mkfs命令
(1) mkfs.FS_TYPE /dev/DEVICE
ext4 xfs btrfs vfat
(2) mkfs -t FS_TYPE /dev/DEVICE
-L 'LABEL' 设定卷标
创建ext文件系统
mke2fs:ext系列文件系统专用管理工具
-t {ext2|ext3|ext4} 指定文件系统类型
-b {1024|2048|4096} 指定块大小
-L ‘LABEL’ 设置卷标
-j 相当于 -t ext3 mkfs.ext3 = mkfs -t ext3 = mke2fs -j = mke2fs -t ext3
-i # 为数据空间中每多少个字节创建一个inode;不应该小于block大小
-N # 指定分区中创建多少个inode
-I 一个inode记录占用的磁盘空间大小,128---4096
-m # 默认5%,为管理人员预留空间占总空间的百分比
-O FEATURE[,...] 启用指定特性
-O ^FEATURE 关闭指定特性
tune2fs:重新设定ext系列文件系统可调整参数的值
-l 查看指定文件系统超级块信息;super block
-L 修改卷标
-m # 修预留给管理员的空间百分比
-j 将ext2升级为ext3
-O 文件系统属性启用或禁用, –O ^has_journal
-o 调整文件系统的默认挂载选项,–o ^acl
-U UUID 修改UUID号
dumpe2fs:显示ext文件系统信息,将磁盘块分组管理
-h:查看超级块信息,不显示分组信息
xfs_info:显示已挂载的 xfs 文件系统信息
文件系统检测修复
fsck: File System Check
fsck.FS_TYPE
fsck -t FS_TYPE
-a 自动修复
-r 交互式修复错误
e2fsck:ext系列文件专用的检测修复工具
-y 自动回答为yes
-f 强制修复
-p 自动进行安全的修复文件系统问题
xfs_repair:xfs文件系统专用检测修复工具
-f 修复文件,而设备
-n 只检查
-d 允许修复只读的挂载设备,在单用户下修复 / 时使用,然后立即reboot
挂载
挂载方法:mount DEVICE MOUNT_POINT
mount:通过查看/etc/mtab文件显示当前已挂载的所有设备
-t vsftype 指定要挂载的设备上的文件系统类型
-r readonly,只读挂载
-w read and write, 读写挂载
-n 不更新/etc/mtab,mount不可见
-a 自动挂载所有支持自动挂载的设备(定义在了/etc/fstab文件 中,且挂载选项中有auto功能)
-L 'LABEL' 以卷标指定挂载设备
-U 'UUID' 以UUID指定要挂载的设备
-B, --bind 绑定目录到另一个目录上
查看内核追踪到的已挂载的所有设备 cat /proc/mounts
查看挂载情况 findmnt MOUNT_POINT|device
查看正在访问指定文件系统的进程
lsof MOUNT_POINT
fuser -v MOUNT_POINT
终止所有在正访问指定的文件系统的进程
fuser -km MOUNT_POINT
卸载 umount
挂载配置文件
/etc/fstab每行定义一个要挂载的文件系统
1、要挂载的设备或伪文件系统
设备文件
LABEL:LABEL=""
UUID:UUID=""
伪文件系统名称:proc, sysfs
2、挂载点
3、文件系统类型:ext4,xfs,iso9660,nfs,none
4、挂载选项:defaults ,acl,bind
5、转储频率:0:不做备份 1:每天转储 2:每隔一天转储
6、fsck检查的文件系统的顺序:允许的数字是0 1 2
0:不自检
1:首先自检;一般只有rootfs才用
2:非rootfs使用
swap
基本设置
创建交换分区或者文件
使用mkswap写入特殊签名
在/etc/fstab文件中添加适当的条目
使用swapon -a 激活交换空间
启用:swapon
swapon [OPTION]... [DEVICE]
-a:激活所有的交换分区
-p PRIORITY:指定优先级
/etc/fstab 在第4列中:pri=value
禁用:swapoff
文件系统工具
文件系统空间占用等信息的查看工具
df [OPTION]... [FILE]...
-H 以10为单位
-T 文件系统类型
-h human-readable
-i inodes instead of blocks
-P 以Posix兼容的格式输出
查看某目录总体空间占用状态
du [OPTION]... DIR
-h human-readable
-s summary
--max-depth=# 指定最大目录层级
相关文章