冰冻三尺非一日之寒

第四周

时间过得很快一下子就过去了,四分之一的培训时间。总感觉时间不是很够用。但是偏偏无法合理运用时间。

sed工具;

用法:

sed [option]… ‘script’ inputfile…
常用选项:
-n:不输出模式空间内容到屏幕,即不自动打印
[root@localhost ~]# sed -n -e “2p” -e “6p” f1 (2;6代表处理第几行)
-e: 多点编辑
-f:/PATH/SCRIPT_FILE: 从指定文件中读取编辑脚本
-r: 支持使用扩展正则表达式
-i.bak: 备份文件并原处编辑
script: ‘地址命令’

sed工具;
地址定界:
(1) 不给地址:对全文进行处理
[root@localhost ~]# sed ‘p’ f1* (打印所有)* 号代表所有】
[root@localhost ~]# sed ‘2p’ f1 (自动默认行打印)2代表指定;后跟文件名】
[root@localhost ~]# ifconfig ens33 |sed -n ‘2p’ (打印行ip地址)第二行;2代表指定】
(2) 单地址:
[root@localhost ~]# sed -n ‘$p’ /etc/passwd ($:最后一行)
[root@localhost ~]# sed -n ‘2p’ /etc/passwd (#: 指定的行)
[root@localhost ~]# sed -n ‘/root/p’ /etc/passwd (模式指定)
/pattern/:被此处模式所能够匹配到的每一行
(3) 地址范围:
#,#
#,+#
/pat1/,/pat2/
#,/pat1/
[root@localhost ~]# sed -n ‘/^root/p’ /etc/passwd (查看root开头的行;^ 使用脱字符)
[root@localhost ~]# sed -n ‘2,5p’ /etc/passwd (显示第几行到第几行)
#或[root@localhost ~]# sed -n ‘2,+3p’ /etc/passwd
[root@localhost ~]# sed -n ‘/^b/,/^f/p’ /etc/passwd (字母开头指定)
[root@localhost ~]# sed -n ‘/^b/,/^ffff/p’ /etc/passwd
#(读一行;处理一行)ffff是没有的;从b后面全部有处理】

(4) ~:步进
[root@localhost ~]# sed -n ‘1~2p’ f1(奇数打印) 1~2 奇数行
[root@localhost ~]# sed -n ‘2~2p’ f1(偶数打印) 2~2 偶数行

sed工具;
编辑命令:
[root@localhost ~]# sed ‘2d’ f1 (指定删除第几行.并不打印)
d: 删除模式空间匹配的行,并立即启用下一轮循环
[root@localhost ~]# sed ‘2,5p’ f1 (指定打印输出)
p:打印当前模式空间内容,追加到默认输出之后
[root@localhost ~]# sed ‘2,3a===’ f1 (指定追加第几行)
[root@localhost ~]# sed ‘2,5a\ ====’ f1 (可加\;后有空格)
a [\]text:在指定行后面追加文本;支持使用\n实现多行追加
[root@localhost ~]# sed ‘2,5i\ ====’ f1 (可加\;前有空格)
i [\]text:在行前面插入文本
[root@localhost ~]# sed ‘2,5c\ ====’ f1
c [\]text:替换行为单行或多行文本
[root@localhost ~]# sed ‘2,5w f2’ f1 (f2为指定)
w /path/somefile: 保存模式匹配的行至指定文件
[root@localhost ~]# sed ‘2,5r /etc/issue’ f1 (指定追加)
r /path/somefile:读取指定文件的文本至模式空间中;匹配到的行后
[root@localhost ~]# sed -n ‘/root/p’ /etc/passwd (查看)
[root@localhost ~]# sed -n ‘/root/=’ /etc/passwd (显示行号)
=: 为模式空间中的行打印行号
[root@localhost ~]# sed -n ‘/root/!p’ /etc/passwd (不包括root的行)
[root@localhost ~]# sed ‘2!d’ f1 (指定留下第二行,其它全删,不打印)
!:模式空间中匹配行取反处理

sed工具;
s///:查找替换,支持使用其它分隔符,s@@@,s###
替换标记:
[root@localhost ~]# sed ‘s/root/administrator/’ /etc/passwd #(行内带有root的替换)
[root@localhost ~]# sed ‘s/root/administrator/g’ /etc/passwd (全部替换)
g: 行内全局替换
p: 显示替换成功的行
w /PATH/TO/SOMEFILE:将替换成功的行保存至文件中
[root@localhost ~]# sed -r ‘s/(root)/\1er/g’ /etc/passwd (指定root后加)
[root@localhost ~]# sed -r ‘s/(root)/admin\1er/g’ /etc/passwd (指定root前后加)
[root@localhost ~]# sed -r ‘s/(.*)/\1dai/g’ /etc/passwd (dai放后)
[root@localhost ~]# sed -r ‘s/(.*)/dai\1/g’ /etc/passwd (dai放前)

sed示例
 sed ‘2p’ /etc/passwd
 sed –n ‘2p’ /etc/passwd
 sed –n ‘1,4p’ /etc/passwd
 sed –n ‘/root/p’ /etc/passwd
 sed –n ‘2,/root/p’ /etc/passwd 从2行开始
 sed -n ‘/^$/=’ file 显示空行行号
sed –n –e ‘/^$/p’ –e ‘/^$/=’ file
 sed ‘/root/a\superman’ /etc/passwd 行后
 sed ‘/root/i\superman’ /etc/passwd 行前
 sed ‘/root/c\superman’ /etc/passwd 代替行

 sed ‘/^$/d’ file (删除空行)
 sed ‘1,10d’ file (1-10行删掉)
 nl /etc/passwd | sed ‘2,5d’
 nl /etc/passwd | sed ‘2a tea’
 sed ‘s/test/mytest/g’ example
 sed –n ‘s/root/&superman/p’ /etc/passwd 单词后
sed –n ‘s/root/superman&/p’ /etc/passwd 单词前
 sed -e ‘s/dog/cat/’ -e ‘s/hi/lo/’ pets
 sed –i.bak ‘s/dog/cat/g’ pets
高级编辑命令;
P:打印模式空间开端至\n内容,并追加到默认输出之前
h: 把模式空间中的内容覆盖至保持空间中
H:把模式空间中的内容追加至保持空间中
g: 从保持空间取出数据覆盖至模式空间
G:从保持空间取出内容追加至模式空间
x: 把模式空间中的内容与保持空间中的内容进行互换
n: 读取匹配到的行的下一行覆盖至模式空间
N:读取匹配到的行的下一行追加至模式空间
d: 删除模式空间中的行
D:如果模式空间包含换行符,则删除直到第一个换行符的模式空间中的文本,
并不会读取新的输入行,而使用合成的模式空间重新启动循环。如果模式空间
不包含换行符,则会像发出d命令那样启动正常的新循环

sed示例
 sed -n ‘n;p’ FILE
列如: [root@localhost ~]# seq 1 10
[root@localhost ~]# seq 1 10 |sed -n ‘n;p’ (双数)
[root@localhost ~]# seq 1 10 |sed -n ‘2~2p’

 sed ‘1!G;h;$!d’ FILE 倒叙显示
列如: [root@localhost ~]# seq 1 10 |sed ‘1!G;h;$!d’
[root@localhost ~]# seq 1 10 |tac
 sed ‘N;D‘ FILE 显示倒叙一行
列如:[root@localhost ~]# seq 1 10 |sed ‘N;D’

 sed ‘$!N;$!D’ FILE 显示倒叙2行
列如:[root@localhost ~]# seq 1 10 |sed ‘$!N;$!D’

sed ‘$!d’ FILE
 sed ‘G’ FILE
 sed ‘g’ FILE
 sed ‘/^$/d;G’ FILE

sed ‘n;d’ FILE
列如:[root@localhost ~]# seq 1 10 |sed ‘n;d’ (单数)

包管理器

静态编译:.a

动态编译:.so

静态链接
把程序对应的依赖库复制一份到包
libxxx.a
嵌入程序包
升级难,需重新编译
占用较多空间,迁移容易
动态链接
只把依赖加做一个动态链接
libxxx.so
连接指向
占用较少空间,升级方便
二进制应用程序的组成部分:
二进制文件、库文件、配置文件、帮助文件

包之间:可能存在依赖关系,甚至循环依赖
解决依赖包管理工具:
yum:rpm包管理器的前端工具
apt-get:deb包管理器前端工具
zypper: suse上的rpm前端管理工具
dnf: Fedora 18+ rpm包管理器前端管理工具
查看二进制程序所依赖的库文件
ldd /PATH/TO/BINARY_FILE
管理及查看本机装载的库文件
ldconfig 加载库文件
/sbin/ldconfig -p: 显示本机已经缓存的所有可用库文件名及文件路径
映射关系
配置文件:/etc/ld.so.conf, /etc/ld.so.conf.d/*.conf
缓存文件:/etc/ld.so.cache
rpm包管理

CentOS系统上使用rpm命令管理程序包:
rpm {-i|–install} [install-options] PACKAGE_FILE…
-v: verbose
-vv:
-h: 以#显示程序包管理执行进度

rpm包安装
[install-options]
–test: 测试安装,但不真正执行安装,即dry run模式
–nodeps:忽略依赖关系
–replacepkgs | replacefiles
–nosignature: 不检查来源合法性
–nodigest:不检查包完整性
–noscripts:不执行程序包脚本

rpm包升级
升级:
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: 强制安装

升级注意项
注意:
(1) 不要对内核做升级操作;Linux支持多内核版本并存,因此,对直接安装新版
本内核
(2) 如果原程序包的配置文件安装后曾被修改,升级时,新版本的提供的同一个配
置文件并不会直接覆盖老版本的配置文件,而把新版本的文件重命名
(FILENAME.rpmnew)后保留

包查询
rpm {-q|–query} [select-options] [query-options]
[select-options]
-a: 所有包
-f: 查看指定的文件由哪个程序包安装生成
-p rpmfile:针对尚未安装的程序包文件做查询操作
–whatprovides CAPABILITY:查询指定的CAPABILITY由哪个包所提供
–whatrequires CAPABILITY:查询指定的CAPABILITY被哪个包所依赖

包查询
[query-options]
–changelog:查询rpm包的changelog
-c: 查询程序的配置文件
-d: 查询程序的文档
-i: information
-l: 查看指定的程序包安装后生成的所有文件
–scripts:程序包自带的脚本
–provides: 列出指定程序包所提供的CAPABILITY
-R: 查询指定的程序包所依赖的CAPABILITY

包查询
常用查询用法:
-qi PACKAGE, -qf FILE, -qc PACKAGE, -ql PACKAGE, -qd PACKAGE
-qpi PACKAGE_FILE, -qpl PACKAGE_FILE, …
-qa

yum命令
yum命令的用法:
yum [options] [command] [package …]
显示仓库列表:
yum repolist [all|enabled|disabled]
显示程序包:
yum list
yum list [all | glob_exp1] [glob_exp2] […]
yum list {available|installed|updates} [glob_exp1] […]
安装程序包:
yum install package1 [package2] […]
yum reinstall package1 [package2] […] (重新安装)

yum命令
升级程序包:
yum update [package1] [package2] […]
yum downgrade package1 [package2] […] (降级)
检查可用升级:
yum check-update
卸载程序包:
yum remove | erase package1 [package2] […]

yum命令

查看程序包information:
yum info […]
查看指定的特性(可以是某文件)是由哪个程序包所提供:
yum provides | whatprovides feature1 [feature2] […]
清理本地缓存:
清除/var/cache/yum/$basearch/$releasever缓存
yum clean [ packages | metadata | expire-cache | rpmdb | plugins |
all ]
构建缓存:
yum makecache

yum命令
搜索:yum search string1 [string2] […]
以指定的关键字搜索程序包名及summary信息
查看指定包所依赖的capabilities:
yum deplist package1 [package2] […]
yum的命令行选项:
–nogpgcheck:禁止进行gpg check
-y: 自动回答为“yes”
-q:静默模式
– -disablerepo=repoidglob:临时禁用此处指定的repo
–enablerepo=repoidglob:临时启用此处指定的repo
–noplugins:禁用所有插件

GPT分区结构
EFI部分又可以分为4个区域: EFI信息区(GPT头)、分区表、 GPT分区、备份区域
列出可用的磁盘设备
图形化磁盘管理功能工具:点击“应用程序” ->“系统工具” ->“磁盘”或执行命令gnome-disks

管理分区
列出块设备
• lsblk
创建分区使用:
• fdisk 创建MBR分区
• gdisk 创建GPT分区
• parted 高级分区操作
partprobe-重新设置内存中的内核分区表版本

分区工具fdiskgdisk
gdisk /dev/sdb 类fdisk 的GPT分区工具
fdisk -l [-u] [device…] 查看分区
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
partprobe [/dev/DEVICE]

创建文件系统
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:关闭指定特性

文件系统标签
指向设备的另一种方法
与设备无关
blkid:块设备属性信息查看
blkid [OPTION]… [DEVICE]
-U UUID: 根据指定的UUID来查找对应的设备
-L LABEL:根据指定的LABEL来查找对应的设备
e2label:管理ext系列文件系统的LABEL
e2label DEVICE [LABEL]
findfs;查找分区
findfs [options] LABEL=<label>
findfs [options] UUID=<uuid>

tune2fs
tune2fs:重新设定ext系列文件系统可调整参数的值
-l:查看指定文件系统超级块信息; super block
-L ‘LABEL’:修改卷标
-m #:修预留给管理员的空间百分比
-j: 将ext2升级为ext3
-O: 文件系统属性启用或禁用, –O ^has_journal
-o: 调整文件系统的默认挂载选项, –o ^acl
-U UUID: 修改UUID号
udumpe2fs:
块分组管理, 32768块
-h:查看超级块信息,不显示分组信息

文件系统检测和修复
常发生于死机或者非正常关机之后
挂载为文件系统标记为“no clean”
注意:一定不要在挂载状态下修复
fsck: File System Check
fsck.FS_TYPE
fsck -t FS_TYPE
-p: 自动修复错误
-r: 交互式修复错误
FS_TYPE一定要与分区上已经文件类型相同
e2fsck: ext系列文件专用的检测修复工具
-y:自动回答为yes
-f:强制修复

mount常用命令选项
   -t vsftype:指定要挂载的设备上的文件系统类型
-r: readonly,只读挂载
-w: read and write, 读写挂载
-n: 不更新/etc/mtab, mount不可见
-a:自动挂载所有支持自动挂载的设备(定义在了/etc/fstab文件中,且挂载选项中有auto功能)
-L ‘LABEL’: 以卷标指定挂载设备
-U ‘UUID’: 以UUID指定要挂载的设备
-B, –bind: 绑定目录到另一个目录上

卸载命令
查看挂载情况
findmnt MOUNT_POINT|device
查看正在访问指定文件系统的进程
lsof MOUNT_POINT
fuser -v MOUNT_POINT
终止所有在正访问指定的文件系统的进程
fuser -km MOUNT_POINT
卸载
umount DEVICE
umount MOUNT_POINT

常见工具
文件系统空间占用等信息的查看工具:
df [OPTION]… [FILE]…
-H 以1000为单位
-T 文件系统类型
-h: human-readable
-i: inodes instead of blocks
-P: 以Posix兼容的格式输出
查看某目录总体空间占用状态:
du [OPTION]… DIR
-h: human-readable
-s: summary –max-depth

 

本文来自投稿,不代表Linux运维部落立场,如若转载,请注明出处:http://www.178linux.com/96865

(0)
小孜然小孜然
上一篇 2018-04-22
下一篇 2018-04-22

相关推荐