
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.]+).*//p'软件包管理 RPM及YUM
1、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 basebaseurl=file:///misc/cd # /misc/cd 路径需要系统启用autofs自动挂载服务gpgcheck=1gpgkey=file:///misc/cd/RPM-GPG-KEY-CentOS-7 #验证秘钥文件
设置阿里与EPEL源
[epel]name=aliyun epelbaseurl=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 -Erz waiting to receive.[[email protected] dnf]#lltotal 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 pkgsSpawning worker 1 with 2 pkgsWorkers FinishedSaving Primary MetadataSaving file Lists MetadataSaving other MetadataGenerating sqlite DBssqlite DBs complete配置yum客户端repo文件[[email protected] yum.repos.d]#cat dnf.repo [dnf]name=dnfbaseurl=file:///data/dnfgpgcheck=0查看是否成功[[email protected] yum.repos.d]#yum repoList磁盘存储、分区、文件系统及挂载
1、MBR分区方式与GPT分区方式主要区别
MBR分区方式:按32位表示扇区数,按柱面划分分区,最多管理2TB空间。最多支持4个主分区,或3个主分区一个扩展分区,扩展分区中可以有多个逻辑分区。分区信息存放位于:0磁道0扇区0磁道0扇区:512bytes446bytes: 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|msdosparted /dev/sdb printparted /dev/sdb mkpart primary 1 200 (默认M)parted /dev/sdb rm 1parted /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/partationscentos6通知内核重新读取硬盘分区表新增分区用partx -a /dev/DEVICEkpartx -a /dev/DEVICE -f: force删除分区用partx -d --nr M-N /dev/DEVICECentOS 5与centos7使用partprobepartprobe [/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=44664+0 records in64+0 records out64 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=446exit #退出救援模式并让系统重启
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 Checkfsck.FS_TYPEfsck -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_POINTmount:通过查看/etc/mtab文件显示当前已挂载的所有设备mount [-fnrsvw] [-t vfstype] [-o options] device dirdevice:指明要挂载的设备;(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_POINTfuser -v MOUNT_POINT终止所有在正访问指定的文件系统的进程fuser -km MOUNT_POINT卸载umount DEVICEumount 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使用)总结
以上是内存溢出为你收集整理的linux文本处理sed、软件包管理、磁盘存储、文件系统和挂载全部内容,希望文章能够帮你解决linux文本处理sed、软件包管理、磁盘存储、文件系统和挂载所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)