一.diff命令
difffile file1 ##比较两个文件的不同
-c ##显示周围的行
-u ##按照一个格式统一输出生成补丁
-r ##比较两个目录中文件的不同
patchfile file.path ##打补丁
-b ##备份文件
二.grep过滤命令
grep关键字文件|目录##在文件或目录中查找含有关键字的行
-i ##忽略大小写
-n ##显示关键字所在行
-c ##显示过滤结果的个数
-v ##反向过滤
-E “关键字1|关键字2“ ##过滤多个关键字
-r 目录 ##在目录中查找含有关键字的文件
注意事项:
^关键字 ##以关键字开头
关键字$ ##以关键字结尾
三.cut命令
cut ##截取字符
cut -d 分隔符 ##指定分隔符
cut -f 1,7 ##显示指定列
cut -c 1-4 ##显示指定的字符
四.sort排序命令
sort 参数
-n ##纯数字排序
-u ##去除重复的
|uniq -c ##去除重复的并且统计重复的次数
-t ##指定分隔符
-k ##指定列
五.uniq命令
sort file |uniq -c ##去除重复的并且统计重复的次数
-d ##显示重复的行
-u ##显示唯一的行
六.sed命令
sed ‘s/原字符/替换字符/g‘ file ##表示在file文件全文中的某字符替换成令为一个字符
sed -e ‘策略1‘ -e ‘策略2‘ file ##-e表示多个动作用一条命令进行
sed -i file ##把转换后的内容输入到指定文件
sed ‘3,5s/原字符/替换字符/g‘ ##3到5行替换
sed xd ##屏蔽指定行,x表示行数
sed xp ##复制指定行
sed -nxp ##只显示指定行
七.for do done循环语句
循环显示某个目录的所有文件名称
例如:
for FRUIT in apple banana pear;
do echo "I like $FRUIT" ;
done;
解释:FRUIT是一个循环变量,第一次循环$FRUIT的取值是apple,第二次取值banana,第三次取值取pear,最后依次输出结果
八.管理系统存储
1.分区的划分
[[email protected] ~]# fdisk /dev/vdb
Welcome to fdisk (util-linux 2.23.2).
Changes will remain in memory only, until you decide to write them.
Be careful before using the write command.
Device does not contain a recognized partition table
Building a new DOS disklabel with disk identifier 0xde2836d8.
Command (m for help): m ##帮助
Command action
a toggle a bootable flag
b edit bsd disklabel
c toggle the dos compatibility flag
d delete a partition ##删除分区表
g create a new empty GPT partition table
G create an IRIX (SGI) partition table
l list known partition types ##列出系统可用分区类型
m print this menu
n add a new partition ##新建分区
o create a new empty DOS partition table
p print the partition table ##显示分区
q quit without saving changes ##退出不保存
s create a new empty Sun disklabel
t change a partition‘s system id ##修改分区功能id
u change display/entry units
v verify the partition table
w write table to disk and exit ##保存更改到分区表中
x extra functionality (experts only)
Command (m for help): n
Partition type:
p primary (0 primary, 0 extended, 4 free) ##分区类型p为主分区
e extended##分区类型为扩展分区
Select (default p): p ##默认主分区
Partition number (1-4, default 1): ##主分区id
First sector (2048-20971519, default 2048): ##此分区的起始位置
Using default value 2048
Last sector, +sectors or +size{K,M,G} (2048-20971519, default 20971519): +200M ##分配分区大小
Partition 1 of type Linux and of size 200 MiB is set
Command (m for help): wq ##保存退出
The partition table has been altered!
Calling ioctl() to re-read partition table.
Syncing disks.
[[email protected] ~]# partprobe ##同步分区表
查看分区情况
fdisk -l 命令
[[email protected] ~]# fdisk -l
Disk /dev/vda: 10.7 GB, 10737418240 bytes, 20971520 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk label type: dos
Disk identifier: 0x00013f3e
Device Boot Start End Blocks Id System
/dev/vda1 * 2048 20970332 10484142+ 83 Linux
【强调说明,上面以行的*号是指的是开机最先读取的446字节】
Disk /dev/vdb: 10.7 GB, 10737418240 bytes, 20971520 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk label type: dos
Disk identifier: 0xde2836d8
Device Boot Start End Blocks Id System
/dev/vdb1 2048 411647 204800 83 Linux
|| || || || || ||
引导设备分区起始位置 终止位置 分区大小 id 文件系统类型
2.分区的挂载
[[email protected] ~]# blkid ##查看系统可识别,可用分区
/dev/vda1: UUID="9bf6b9f7-92ad-441b-848e-0257cbb883d1" TYPE="xfs"
添加挂载 mount /dev/vdb1 /mnt/
mount: /dev/vdb1 is write-protected, mounting read-only
mount: unknown filesystem type ‘(null)‘
[[email protected] ~]# mkfs.xfs /dev/vdb1 ##将vdb1按照xfs文件系统类型格式化
meta-data=/dev/vdb1 isize=256 agcount=4, agsize=12800 blks
= sectsz=512 attr=2, projid32bit=1
= crc=0
data = bsize=4096 blocks=51200, imaxpct=25
= sunit=0 swidth=0 blks
naming =version 2 bsize=4096 ascii-ci=0 ftype=0
log =internal log bsize=4096 blocks=853, version=2
= sectsz=512 sunit=0 blks, lazy-count=1
realtime =none extsz=4096 blocks=0, rtextents=0
将分区按照xfs文件系统格式化后,vdb1分区就可以被系统所用
[[email protected] ~]# blkid
/dev/vda1: UUID="9bf6b9f7-92ad-441b-848e-0257cbb883d1" TYPE="xfs"
/dev/vdb1: UUID="1270e1f2-e607-46de-acc9-5c05cd4692df" TYPE="xfs"
3.查看系统能识别的分区
[[email protected] ~]# cat /proc/partitions
major minor #blocks name
253 0 10485760 vda
253 1 10484142 vda1
253 16 10485760 vdb
253 17 204800 vdb1
4.swap分区的管理
在实验中,我新建了一个/dev/vdb2分区,作为swap分区的实验材料
swapon -s##查看系统中的swap分区
建立swap分区
mkswap/dev/vdb2###把/dev/vdb1格式化成swap格式
swapon -a /dev/vdb2##激活
vim /etc/fstab##开机自动激活
/dev/vdb2swapswapdefautls0 0
实验结果:
[[email protected] ~]# swapon -s
FilenameTypeSizeUsedPriority
/dev/vdb2 partition2047960-1
5.开机自动挂载
vim /etc/fstab##开机自动激活
/dev/vdb1swapswapdefautls0 0
############################################################################
一.磁盘加密
fdisk /dev/vdb #添加磁盘
partprobe #同步磁盘信息
df#查看挂载
cat /proc/partitions
cryptsetup luksFormat /dev/vdb1 #设置加密密码
#mima:123westos
cryptsetup open /dev/vdb1 westos ##打开磁盘加密层
mkfs.xfs /dev/mapper/westos #格式化
mount /dev/mapper/westos /mnt/ #挂载文件,到mnt下
cryptsetup close westos #关闭这个加密层
#######开机自动挂载磁盘加密##(永久)##########
vim /etc/crypttab ##打开配置文件添加参数
解密后设备管理文件设备加密字符存在文件
redhat/dev/vdb1/root/lukspsfile
vim /root/lukspsfile ##写入加密文件的密码
chmod 600 /root/lukspsfile##设置权限;只有超级用户才可以看到
cryptsetup luksAddKey /dev/vdb1 /root/lukspsfile ##将vbd1与文件lukspsfile关联其起来
vim /etc/fstab #添加开机启动脚本:
/dev/mapper/redhat /mnt xfs defaults 0 0
最后reboot
#######加密清除############
vim /etc/fstab #清除之前添加的内容
> /etc/crypttab #清空文件内容
umount /mnt/ #把/mnt/卸载掉
cryptsetup close redhat #关闭加密
mkfs.xfs /dev/vdb1 #将vdb1格式化
#### Raid磁盘阵列#######
fdisk /dev/vbd ##添加三个大小相同的磁盘,将文件系统类型改成Linux raid(fd)
mdadm -C /dev/md0 -a yes -l 1 -n 2 -x 1 /dev/vdb{1..3}
说明:表示添加阵列
-C 表示创建, /dev/md0
-a 表示在如果md0不存在的情况下创建md0, yes
-l 表示级别 1级
-n 表示添加工作的磁盘,2个
-x 表示闲置的磁盘 ,1个,(当工作的两个磁盘之一出现故障,立即启动闲置磁盘工作)
最后工作的磁盘
监控命令:watch -n 1 cat /proc/mdstat
###############
mdadm -f /dev/md0 /dev/vdb1 ##手动破坏设备
mdadm -D /dev/md0 ##设备配置信息
mdadm /dev/md0-f /dev/vdb1 ##损坏设备1
mdadm /dev/md0 -r /dev/vdb1 ##移除设备1
mdadm /dev/md0 -a /dev/vdb1 ##恢复设备1
mdadm -S /dev/md0 #停止设备
#####lvm 管理########
1.lvm名词解释
lvm逻辑卷,可以让设备自由伸缩的一个设备管理软件
pv物理卷
vg物理卷组
pe物理拓展,lvm最小的存储单元
lvm逻辑卷,时最终我们使用的可以伸缩的设备
2.lvm的制作
fdisk /dev/vdb
创建两个文件系统类型为lvm的分区(8e)
监控命令: watch -n 1 ‘echo "= pvinfo =";pvs; echo "= vginfo =";vgs;echo "= lvinfo =" ; lvs ; echo "= - =";df -h /mnt ‘
3.lvm的建立
fdisk /dev/vdb
partprobe
fdisk -l
pvcreate /dev/vdb1 #创建物理卷
vgcreate westos /dev/vdb1 #添加物理卷组为westos
lvcreate -L 50M -n lv0 westos #从westos组中取出一个名字为lv0,大小为50M的内存
mkfs.xfs /dev/westos/lv0 #格式化
mount /dev/westos/lv0 /mnt/ #lv0 挂载到 /mnt
4.lvm设备的扩大
lvextend -L 90M /dev/westos/lv0 #将lv0扩展到90M
xfs_growfs /dev/westos/lv0 #扩展文件系统
pvcreate /dev/vdb2#添加新的pv
vgextend westos /dev/vdb2#扩展分区组
lvextend -L 188M /dev/westos/lv0 #扩展lv
xfs_growfs /dev/westos/lv0 #扩展文件系统
5.缩减lvm文件系统
xfs文件系统不支持缩减,将xfs格式化为ext4
缩减内存不支持在线缩减,所以必须卸载后在进行缩减
umount /mnt
mkfs.ext4 /dev/westos/lv0 ##按照ext格式化
e2fsck -f /dev/westos/lv0 ##检测lv0文件
resize2fs /dev/westos/lv0 77M ##缩减lv0到77M
lvreduce -L 77M /dev/westos/lv0
pvmove /dev/vdb1 /dev/vdb2
vgreduce westos /dev/vdb1
pvremove /dev/vdb1
创建快照
umount /mnt/
lvcreate -L 10M -n lv0-backup -s /dev/westos/lv0
mount /dev/westos/lv0-backup /mnt/
删除所有记录
umount /mnt/
lvremove /dev/westos/lv0-backup
lvremove /dev/westos/lv0
vgremove westos
pvremove /dev/vdb2
pvs
pvremove /dev/vdb1
pvs
用脚本实现磁盘的添加
vim test.sh
在里面填写
#!/bin/bash
fdisk /dev/vdb << end
n
【空格,表示取默认值】
【空格,表示取默认值】
【空格,表示取默认值】
+1G
wq
end
最后运行脚本文件
sh test.sh
c查看结果
fdisk -l