Linux文本处理工具sed、软件包管理、磁盘存储及文件系统

文本处理工具sed巧妙用法

1、通过sed获取文件路径的基名和目录名

思路:采用正则表达式将文本字符串分组,取对应的分组后向引用即可。

获取基名

[root@centos7 ~]#echo /etc/sysconfig/network-scripts/ |sed -r 's@(^/.*/)([^/]+)/?$@\2@'
network-scripts

获取目录名

[root@centos7 ~]#echo /etc/sysconfig/network-scripts/ |sed -r 's@(^/.*/)([^/]+)/?$@\1@'
/etc/sysconfig/

2、使用sed命令修改Centos7网卡名称为传统eth0默认网卡,方便统一管理

[root@centos7 ~]#sed -ri '/^[[:space:]]+linux16/s@(.*)@& net.infnames=0@' /boot/grub2/grub.cfg 

[root@centos7 ~]#sed -ri '/GRUB_CMDLINE_LINUX=/s@"$@ net.ifnames=0"@' /etc/default/grub

3、使用sed命令获取本机IPv4地址

思路:使用sed取行,结合正则表达式及分组,后向引用打印输出需要获取的分组内容即可。

[root@centos7 ~]#ifconfig eth0 | sed -rn '2s/^[^0-9]+([0-9.]+).*/\1/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 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源

[root@centos7 ~]#cd /etc/yum.repos.d/
[root@centos7 yum.repos.d]#mkdir bak #在当前目录建立bak备份目录
[root@centos7 yum.repos.d]#mv *.repo ./bak/ #将系统默认repo文件移动到bak目录备份
[root@centos7 yum.repos.d]#wget http://mirrors.aliyun.com/repo/Centos-7.repo #下载阿里云centos7系统对应的repo文件

4、自己定制配置yum仓库

[root@centos7 data]#mkdir dnf
[root@centos7 data]#cd dnf/
上传rpm包文件到yum仓库目录
[root@centos7 dnf]#rz -E
rz waiting to receive.
[root@centos7 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
[root@centos7 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文件
[root@centos7 yum.repos.d]#cat dnf.repo
[dnf]
name=dnf
baseurl=file:///data/dnf
gpgcheck=0
查看是否成功
[root@centos7 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个字节
[root@centos7 data]#hexdump -C /dev/sda -n 512
把分区表的64个字节拷贝出来,skip是跳过原文件的446个字节。
[root@centos7 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
把备份数据拷贝到其他服务器上
[root@centos7 data]#scp mbr root@172.18.20.6:/data
破坏原来的分区表,seek是跳过目标的446个字节。服务器无法启动。
[root@centos7 data]#dd if=/dev/zero of=/dev/sda bs=1 count=64 seek=446
重启进入救援模式。临时配一个IP地址
[root@centos7 ~]#ifconfig ens33 172.18.20.7
把备份的拷回来
[root@centos7 ~]#scp root@172.18.7.7:/data/mbr .
[root@centos7 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使用)

Linux文本处理sed、软件包管理、磁盘存储、文件系统和挂载的更多相关文章

  1. linux系统软件安装及软件包管理

    软件包管理 1  RPM软件包管理 1.1  RPM软件包简介: RPM(Red Hat Package Manager,Red Hat软件包管理器)是一种开放的软件包管理系统,按照GPL条款发行,可 ...

  2. Linux基础四:软件包管理

    四.软件包管理器: 1.概念 红帽有两款软件包管理器,分别是rpm和yum. 1.rpm软件包管理器  ->  用来安装单个包  ->  .rpm文件 红帽的安装包文件,都放在Packag ...

  3. linux常用命令---rpm软件包管理

    rpm软件包管理

  4. linux笔记:RPM软件包管理-yum在线管理

    ip地址配置: 用ifconfig命令只能配置ip和子网掩码,这样只能访问内网:如果需要访问公网则还必须要网关和DNS. 使用setup工具配置ip: 网络yum源配置: 常用yum命令:查询 常用y ...

  5. linux笔记:RPM软件包管理-rpm命令管理

    rpm包命名原则: rpm包的依赖性: 包名和包全名: rpm软件包安装.升级和卸载: rpm软件包查询: 从rpm包中提取指定文件:

  6. Linux文本三剑客-sed

    sed工作原理: sed: Stream Editor.流编辑器 --- 属于行编辑工具 sed和vim一样都是文本编辑工具. 行编辑工具:一行一行处理文件内容 全屏编辑工具:一次性将文件内容加载到内 ...

  7. linux笔记:RPM软件包管理-源码包管理

    源码包和rpm包的区别: 源码包安装过程: 编译安装前准备(执行./configure --prefix=路径 来配置软件的安装位置,以及做其他的配置和检查): 编译和安装(直接在目录下执行make和 ...

  8. linux 创建虚拟块设备,制作文件系统并挂载,用于测试lustre

    1.制作块文件 3 个 [root@localhost yaoxu]# [root@localhost yaoxu]# [root@localhost yaoxu]# 2.创建回环设备 [root@l ...

  9. 【one day one linux】linux下的软件包管理工具

    Linux 下的软件包管理工具 linux下的软件安装可以通过两种方式,一种是直接使用自带的软件包管理工具安装,另外一种通过编译源码安装. 1.软件包的种类 Red Hat和Fedora:redhat ...

随机推荐

  1. Seminar Schedule

    Seminar Schedule (C2017 | 2019.9-12 | 3rd semester S0500783) *************************************** ...

  2. 记录VUE-CLI项目创建及初始化相关

    记录 创建项目 vue init webpack 项目名 配置config下的index.js的文件配置,修改相对路径和配置不打包map文件 修改build-webpack.base.conf.js, ...

  3. ZROI 暑期高端峰会 A班 Day1 序列数据结构

    FBI Warning:本文包含大量人类的本质之一 CF643G 维护一个序列,可以区间赋值,求区间中出现超过 \(p\%\) 的数. 允许输出不对的数,允许重复输出,但是所有对的数都一定要输出.而且 ...

  4. 出现Strict Standards: Only variables should be passed by reference in的解决方法

    出现Strict Standards: Only variables should be passed by reference in的解决方法 代码报错: <br /><b> ...

  5. 基于ZYNQ 的UART中断实验之串口写数据到DDR3中

    1.参考 UG585 网络笔记 2.理论知识 参见上一次实验:基于ZYNQ 的UART中断实验 3.实验目的 练习使用UART的中断实验,并将接收到的数据写入到DDR3中. 4.实验过程 建立工程,设 ...

  6. 关于linux 执行权限的理解

    关于linux 执行权限的理解他这个执行权限不是 执行什么命令的 是这个文件 是否能被执行的权限 比方说<pre>shell_exec('/home/crontabtest12.sh'); ...

  7. 剑指阿里P6,25岁小伙怒斩三面,喜提offer(Java研发岗)

    本文提供者:洎扰の庸人 微信公众号:慕容千语的架构笔记.欢迎关注一起进步. 进阿里一直都是身为程序员的我,最初的梦想,经过去年面试蚂蚁金服失败的挫折后,今年再次鼓起勇气投简历,经过一位前辈的内推省了很 ...

  8. git cherry-pick 命令,解决冲突后没有 commit 变更,再次pull 时出错

    Git : You have not concluded your cherry-pick (CHERRY_PICK_HEAD exists). 解决方法:(1)使用git status 命令查看当前 ...

  9. Replication:事务复制 Subscriber的主键列是只读的

    在使用Transactional Replication时,Subscriber 被认为是“Read-Only”的 , All data at the Subscriber is “read-only ...

  10. Git新建分支,分支合并,版本回退详解

    一.git基本命令 git拉取仓库代码 #拉取master代码 git clone git仓库地址 #拉取分支代码 git clone -b 分支名称 git仓库地址 2.git添加代码到本地仓库 g ...