学习笔记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=#   指定最大目录层级 

相关文章