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及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源

[[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使用)

原文地址:https://www.cnblogs.com/eddie1127/p/11335307.html

时间: 2024-11-05 12:06:21

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

linux文本处理sed、软件包管理、磁盘存储和文件系统

linux文本处理sed.软件包管理.磁盘存储和文件系统 1.取基名和文件名 [[email protected] scripts38]#echo /etc/sysconfig/network-scripts/ |sed -r '[email protected](^/.*/)([^/]+)/[email protected]\[email protected]' /etc/sysconfig/ [[email protected] scripts38]#echo /etc/sysconfig/

linux学习笔记(软件包管理)

前言:运维工程师平时安装服务时很正常的事情,所以软件包的管理就显得尤为重要. 内容: 基础知识. 程序发行的源代码都是不可以运行的,需要编译之后才可以运行,linux发行版的厂商会在他的机器上进行编译然后提供下载使用,用户可以直接拿到二进制的可执行文件进行使用. 通过file可以看到文件时不是可执行文件( ELF 32-bit LSB)是可执行文件,shared libs是使用了共享库.shell脚本显示Bourne-Again是应为#!/bin/bash的原因. 程序的组成部分:1.二进制程序

Linux详解之软件包管理与源

包管理与源是Linux学习中不可缺少的部分,同时也令很多初学者倍感困惑.本文整理了一些Linux相关的包管理与源方面的材料,希望对大家有帮助. Linux中的软件包主要分为RPM软件包及DEB软件包两类,其中Redhat Linux等系统使用RPM软件包,Ubuntu Linux等系统使用Deb软件包.本文主要侧重介绍Ubuntu Linux的包管理方法. 首先要介绍几个概念和理解: (1)安装就是把软件送到一个特定的位置,并且配置好其周边环境,使之能够正确运行. (2)Deb包就是一个压缩起来

linux学习笔记之软件包管理

软件包管理 软件包组成 二进制程序 配置文件 单文件 将主配置文件切割成多个小文件,并放置于某个目录中. /etc/profile ,/etc/profile.d/* /etc/pam.conf , /etc/pam.d/* 单文件,在内部分割成多个片段. [mysql] [mysqld]... 库文件: 二进制 可执行  函数(c程序都由函数组成) 共享模块 静态库 动态库 帮助文件 手册页 文档(/usr/share/doc) /bin /sbin 系统启动使用 /usr/bin  /usr

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

rpm软件包管理 原文地址:https://www.cnblogs.com/open-yang/p/11253278.html

linux命令:rpm软件包管理

  rpm命令简介:      rpm:软件管理器          数据库:/var/lib/rpm   用于软件进行查询相关操作的数据库.      rpmbuild:用于创建rpm软件包的工具 对软件进行安装.查询.卸载.升级.校验.数据库的重建.验证数据包等工作. 1.命令格式: 1.rpm命名规则: 主包: Usage: httpd-2.2.15-15.e16.centos.i686.rpm httpd:软件包名  2.2.15:软件版本号  15:软件发布的次数 e16.centos

Linux运维学习历程-第八天-Linux文本工具sed与Vim(vi)

概述: 本篇我们主要学习两个功能非常强大的文本编辑器,了解这两种文本编辑器的各自的特点 一.vi(vim)文本编辑器 练习和课后作业 1 .删除/etc/grub2.conf 文件中所有以空白开头的行行首的空白字符 sed "s/^[[:space:]]\+//" /etc/grub2.cfg sed -r "s/^[[:space:]]+//" /etc/grub2.cfg 2 .删除/etc/fstab 文件中所有以# 开头,后面至少跟一个空白字符的行的行首的#

Linux文本工具sed

Sed sed 是一种在线编辑器,它一次处理一行内容.处理时,把当前处理的行存储在临时缓冲区中,称为"模式空间"(pattern space),接着用sed命令处理缓冲区中的内容,处理完成后,把缓冲区的内容送往屏幕.接着处理下一行,这样不断重复,直到文件末尾.文件内容并没有改变,除非你使用重定向存储输出. sed用法: sed [OPTION]...  'script'  [input-file] ... 常用选项: -n:静默模式(禁止在匹配不到的情况下,直接屏幕输出,仅显示scri

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

ip地址配置: 用ifconfig命令只能配置ip和子网掩码,这样只能访问内网:如果需要访问公网则还必须要网关和DNS. 使用setup工具配置ip: 网络yum源配置: 常用yum命令:查询 常用yum命令:安装 常用yum命令:升级 常用yum命令:卸载(注意:用yum卸载一个软件包时,系统会自动卸载这个软件包所依赖的所有包,这是非常不安全的,所以尽量不要用yum卸载.) yum软件组管理命令: 光盘yum源搭建: