linux文本处理sed、软件包管理、磁盘存储、文件系统和挂载
Linux文本处理工具sed、软件包管理、磁盘存储及文件系统文本处理工具sed巧妙用法1、通过sed获取文件路径的基名和目录名 思路:采用正则表达式将文本字符串分组,取对应的分组后向引用即可。 获取基名 [[email?protected] ~]#echo /etc/sysconfig/network-scripts/ |sed -r '[email?protected](^/.*/)([^/]+)/[email?protected][email?protected]' network-scripts 获取目录名 [[email?protected] ~]#echo /etc/sysconfig/network-scripts/ |sed -r '[email?protected](^/.*/)([^/]+)/[email?protected][email?protected]' /etc/sysconfig/ 2、使用sed命令修改Centos7网卡名称为传统eth0默认网卡,方便统一管理 [[email?protected] ~]#sed -ri '/^[[:space:]]+linux16/[email?protected](.*)@& [email?protected]' /boot/grub2/grub.cfg [[email?protected] ~]#sed -ri '/GRUB_CMDLINE_LINUX=/[email?protected]"[email?protected] net.ifnames=0"@' /etc/default/grub 3、使用sed命令获取本机IPv4地址 思路:使用sed取行,结合正则表达式及分组,后向引用打印输出需要获取的分组内容即可。 [[email?protected] ~]#ifconfig eth0 | sed -rn '2s/^[^0-9]+([0-9.]+).*/1/p' 软件包管理 RPM及YUM1、rpm命令常见用法 CentOS系统上使用rpm命令管理程序包: 安装: rpm {-i|--install} [install-options] PACKAGE_FILE… -v: verbose -vv: -h: 以#显示程序包管理执行进度 rpm -ivh PACKAGE_FILE ... 升级: rpm {-U|--upgrade} [install-options] PACKAGE_FILE... rpm {-F|--freshen} [install-options] PACKAGE_FILE... upgrade:安装有旧版程序包,则“升级” 如果不存在旧版程序包,则“安装” freshen:安装有旧版程序包,则“升级” 如果不存在旧版程序包,则不执行升级操作 rpm -Uvh PACKAGE_FILE ... rpm -Fvh PACKAGE_FILE ... --oldpackage:降级 --force: 强制安装 包查询: rpm {-q|--query} [select-options] [query-options] [select-options] -a:所有包 -f:查看指定的文件由哪个程序包安装生成 -p rpmfile:针对尚未安装的程序包文件做查询操作 --whatprovides CAPABILITY:查询指定的CAPABILITY由哪个包所提供 --whatrequires CAPABILITY:查询指定的CAPABILITY被哪个包所依赖 rpm2cpio 包文件|cpio –itv 预览包内文件 rpm2cpio 包文件|cpio –id “*.conf” 释放包内文件 [query-options] --changelog:查询rpm包的changelog -c:查询程序的配置文件 -d:查询程序的文档 -i:information -l:查看指定的程序包安装后生成的所有文件 --scripts:程序包自带的脚本 --provides:列出指定程序包所提供的CAPABILITY -R:查询指定的程序包所依赖的CAPABILITY 2、本地yum客户端配置 设置本地yum源为光盘CDROM [base] name=cdrom base baseurl=file:///misc/cd # /misc/cd 路径需要系统启用autofs自动挂载服务 gpgcheck=1 gpgkey=file:///misc/cd/RPM-GPG-KEY-CentOS-7 #验证秘钥文件 设置阿里与EPEL源 [epel] name=aliyun epel baseurl=https://mirrors.aliyun.com/epel/$releasever/$basearch/ gpgcheck=0 #不启用gpg验证检查 enabled=1 #禁用epel改为0 3、设置系统使用阿里云yum源 [[email?protected] ~]#cd /etc/yum.repos.d/ [[email?protected] yum.repos.d]#mkdir bak #在当前目录建立bak备份目录 [[email?protected] yum.repos.d]#mv *.repo ./bak/ #将系统默认repo文件移动到bak目录备份 [[email?protected] yum.repos.d]#wget http://mirrors.aliyun.com/repo/Centos-7.repo #下载阿里云centos7系统对应的repo文件 4、自己定制配置yum仓库 [[email?protected] data]#mkdir dnf [[email?protected] data]#cd dnf/ 上传rpm包文件到yum仓库目录 [[email?protected] dnf]#rz -E rz waiting to receive. [[email?protected] dnf]#ll total 808 -rw-r--r-- 1 root root 213696 Jun 4 2018 dnf-0.6.4-2.sdl7.noarch.rpm -rw-r--r-- 1 root root 62404 Jun 4 2018 dnf-conf-0.6.4-2.sdl7.noarch.rpm -rw-r--r-- 1 root root 75472 Jun 4 2018 libcomps-0.1.8-3.el7.x86_64.rpm -rw-r--r-- 1 root root 46792 Jun 4 2018 python2-libcomps-0.1.8-3.el7.x86_64.rpm -rw-r--r-- 1 root root 416988 Jun 4 2018 python-dnf-0.6.4-2.sdl7.noarch.rpm 自动生成repodata [[email?protected] dnf]#createrepo . Spawning worker 0 with 3 pkgs Spawning worker 1 with 2 pkgs Workers Finished Saving Primary metadata Saving file lists metadata Saving other metadata Generating sqlite DBs Sqlite DBs complete 配置yum客户端repo文件 [[email?protected] yum.repos.d]#cat dnf.repo [dnf] name=dnf baseurl=file:///data/dnf gpgcheck=0 查看是否成功 [[email?protected] yum.repos.d]#yum repolist 磁盘存储、分区、文件系统及挂载1、MBR分区方式与GPT分区方式主要区别 MBR分区方式: 按32位表示扇区数,按柱面划分分区,最多管理2TB空间。最多支持4个主分区,或3个主分区一个扩展分区,扩展分区中可以有多个逻辑分区。 分区信息存放位于:0磁道0扇区 0磁道0扇区:512bytes 446bytes: boot loader #启动主引导程序 64bytes:分区表,其中每16bytes标识一个分区 2bytes: 55AA #结束标记位字符 GPT分区方式: 使用64位表示扇区,最多128个分区,支持8Z( 512Byte/block )或64Z ( 4096Byte/block)空间,使用128位UUID表示磁盘和分区,GPT分区表自动备份在头和尾两份,并有CRC校验位 GPT方式的分区安装操作系统,需要使用UEFI来引导操作系统启动 2、Linux常用磁盘分区工具命令 分区工具parted: parted的操作都是实时生效的,小心使用 用法:parted [选项]... [设备 [命令 [参数]...]...] parted /dev/sdb mklabel gpt|msdos parted /dev/sdb print parted /dev/sdb mkpart primary 1 200 (默认M) parted /dev/sdb rm 1 parted /dev/sdb –l 列出分区信息 分区工具fdisk和gdisk: gdisk /dev/sdb 类fdisk 的GPT分区工具 fdisk -l [-u] [device...] 查看分区 fdisk /dev/sdb 管理分区 子命令: p 分区列表 t 更改分区类型 n 创建新分区 d 删除分区 v 校验分区 u 转换单位 w 保存并退出 q 不保存并退出 3、同步分区表 查看内核是否已经识别新的分区 cat /proc/partations centos6通知内核重新读取硬盘分区表 新增分区用 partx -a /dev/DEVICE kpartx -a /dev/DEVICE -f: force 删除分区用 partx -d --nr M-N /dev/DEVICE CentOS 5与centos7使用partprobe partprobe [/dev/DEVICE] 4、备份和还原MBR分区表 查看MBR分区表前512个字节 [[email?protected] data]#hexdump -C /dev/sda -n 512 把分区表的64个字节拷贝出来,skip是跳过原文件的446个字节。 [[email?protected] data]#dd if=/dev/sda of=/data/mbr bs=1 count=64 skip=446 64+0 records in 64+0 records out 64 bytes (64 B) copied,0.000585693 s,109 kB/s 把备份数据拷贝到其他服务器上 [[email?protected] data]#scp mbr [email?protected]:/data 破坏原来的分区表,seek是跳过目标的446个字节。服务器无法启动。 [[email?protected] data]#dd if=/dev/zero of=/dev/sda bs=1 count=64 seek=446 重启进入救援模式。临时配一个IP地址 [[email?protected] ~]#ifconfig ens33 172.18.20.7 把备份的拷回来 [[email?protected] ~]#scp [email?protected]:/data/mbr . [[email?protected] data]#dd if=mar_db of=/dev/sda bs=1 count=64 skip=446 exit #退出救援模式并让系统重启 5、linux常见的几种文件系统及区别 EXT3 (1)最多只能支持32TB的文件系统和2TB的文件,实际只能容纳2TB的文件系统和16GB的文件 (2)Ext3目前只支持32000个子目录 (3)Ext3文件系统使用32位空间记录块数量和i-节点数量 (4)当数据写入到Ext3文件系统中时,Ext3的数据块分配器每次只能分配一个4KB的块 EXT4 EXT4是Linux系统下的日志文件系统,是EXT3文件系统的后继版本。 (1)Ext4的文件系统容量达到1EB,而文件容量则达到16TB (2)理论上支持无限数量的子目录 (3)Ext4文件系统使用64位空间记录块数量和i-节点数量 (4)Ext4的多块分配器支持一次调用分配多个数据块 XFS (1)根据所记录的日志在很短的时间内迅速恢复磁盘文件内容 (2)采用优化算法,日志记录对整体文件操作影响非常小 (3) 是一个全64-bit的文件系统,它可以支持上百万T字节的存储空间 (4)能以接近裸设备I/O的性能存储数据 6、文件系统的检查和修复 文件系统夹故障常发生于死机或者非正常关机之后,挂载为文件系统标记为“no clean” fsck: File System Check fsck.FS_TYPE fsck -t FS_TYPE 注意:FS_TYPE 一定要与分区上已经文件类型相同 -a 自动修复 -r 交互式修复错误 e2fsck:ext系列文件专用的检测修复工具 -y 自动回答为yes -f 强制修复 -p 自动进行安全的修复文件系统问题 xfs_repair:xfs文件系统专用检测修复工具 -f 修复文件,而设备 -n 只检查 -d 允许修复只读的挂载设备,在单用户下修复 / 时使用,然后立即reboot 7、文件系统挂载 文件系统挂载命令mount用法 挂载方法:mount DEVICE MOUNT_POINT mount:通过查看/etc/mtab文件显示当前已挂载的所有设备 mount [-fnrsvw] [-t vfstype] [-o options] device dir device:指明要挂载的设备; (1) 设备文件:例如/dev/sda5 (2) 卷标:-L 'LABEL',例如 -L 'MYDATA' (3) UUID,-U 'UUID':例如-U '0c50523c-43f1-45e7-85c0-a126711d406e' (4) 伪文件系统名称:proc,sysfs,devtmpfs,configfs dir:挂载点 事先存在,建议使用空目录 mount命令常用选项 -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 -o options:(挂载文件系统的选项),多个选项使用逗号分隔 async 异步模式 sync 同步模式,内存更改时,同时写磁盘 atime/noatime 包含目录和文件 diratime/nodiratime 目录的访问时间戳 auto/noauto 是否支持自动挂载,是否支持-a选项 exec/noexec 是否支持将文件系统上运行应用程序 dev/nodev 是否支持在此文件系统上使用设备文件 suid/nosuid 是否支持suid和sgid权限 remount 重新挂载 ro 只读 rw 读写 user/nouser 是否允许普通用户挂载此设备,/etc/fstab使用 acl 启用此文件系统上的acl功能 loop 使用loop设备 defaults:相当于rw,suid,dev,exec,auto,nouser,async 卸载命令umount 注意:进程正在使用中的设备无法被卸载 查看挂载情况 findmnt MOUNT_POINT|device 查看正在访问指定文件系统的进程 lsof MOUNT_POINT fuser -v MOUNT_POINT 终止所有在正访问指定的文件系统的进程 fuser -km MOUNT_POINT 卸载 umount DEVICE umount MOUNT_POINT 文件挂载配置文件/etc/fstab详解 /etc/fstab每行定义一个要挂载的文件系统,一共6列,对应的列如下: 第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使用) (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |