学习笔记3

发布时间:2019-08-31 09:40:46编辑:auto阅读(1400)

    一文件查找和压缩
    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=#   指定最大目录层级 

关键字