目录
1)如何打开文件。并在打开文件(命令模式)之后如何退出文件。
2)打开文件(命令模式)之后,进入插入模式。并在插入模式中如何回到打开文件的状态(命令模式),并在命令模式之后如何退出文件。
3)打开文件(命令模式)之后,进入插入模式,编写一段话,"马哥出品,必属精品", 之后从插入模式中如何回到打开文件的状态(命令模式),并在命令模式之后如何退出文件。
5)(可选),命令模式下,光标在单词,句子上进行前后,上下跳转。行复制粘贴。行删除。
4. 总结学过的文本处理工具,文件查找工具,文本处理三剑客, 文本格式化命令(printf)的相关命令及选项,示例。
5. 总结文本处理的grep命令相关的基本正则和扩展正则表达式。
6. 总结变量命名规则,不同类型变量(环境变量,位置变量,只读变量,局部变量,状态变量)如何使用。
7. 通过shell编程完成,30鸡和兔的头,80鸡和兔的脚,分别有几只鸡,几只兔?
8. 结合编程的for循环,条件测试,条件组合,完成批量创建100个用户
1)for遍历1..1002)先id判断是否存在3)用户存在则说明存在,用户不存在则添加用户并说明已添加。
9. 磁盘存储术语总结: head, track, sector, sylinder.
11. 总结学过的分区,文件系统管理,SWAP管理相关的命令及选项,示例
12. 总结raid 0, 1, 5, 10, 01的工作原理。总结各自的利用率,冗余性,性能,至少几个硬盘实现。
1. 总结linux安全模型
- linux使用用户和组来控制使用者对文件的存储权限
- 用户用账号和口令登录Linux
- 每个文件都有拥有者,并让拥有者属于某个组
- 每个程序都有拥有着和组
2. 总结学过的权限,属性及ACL相关命令及选项,示例。
per(权限):r (读)、w(写)、 x(执行)
数字法
r--
100 :4
-w-
010 :2
--x
001 :1
root@test01:/data/a# chmod 760 e.txt
root@test01:/data/a# ll
total 12
drwxr-xr-x 2 root root 4096 Dec 3 14:59 ./
drwxr-xr-x 3 root root 4096 Dec 6 11:34 ../
-rw-r--rw- 1 root root 9 Dec 6 11:55 d.txt
-rwxrw---- 1 root root 0 Dec 3 14:50 e.txt*
s权限数字是独立的4
root@test01:/data# ll
total 12
drwxr-xr-x 3 root root 4096 Dec 6 14:15 ./
drwxr-xr-x 20 root root 4096 Dec 3 14:40 ../
lrwxrwxrwx 1 root root 5 Dec 6 13:54 aa.txt -> a.txt
---------- 1 root root 0 Dec 6 13:54 a.txt
drw-r-xr-- 2 root root 4096 Dec 6 14:15 f/
-rw-r--r-- 1 root root 0 Dec 6 14:15 f.txt
root@test01:/data# chmod 4644 f.txt
root@test01:/data# ll
total 12
drwxr-xr-x 3 root root 4096 Dec 6 14:15 ./
drwxr-xr-x 20 root root 4096 Dec 3 14:40 ../
lrwxrwxrwx 1 root root 5 Dec 6 13:54 aa.txt -> a.txt
---------- 1 root root 0 Dec 6 13:54 a.txt
drw-r-xr-- 2 root root 4096 Dec 6 14:15 f/
-rwSr--r-- 1 root root 0 Dec 6 14:15 f.txt
粘滞位权限:作用在目录上,此目录中的文件只能由所有者自己来删除(root以外)
root@test01:/data# ll
total 12
drwxr-xr-x 3 root root 4096 Dec 6 14:15 ./
drwxr-xr-x 20 root root 4096 Dec 3 14:40 ../
lrwxrwxrwx 1 root root 5 Dec 6 13:54 aa.txt -> a.txt
---------- 1 root root 0 Dec 6 13:54 a.txt
drw-r-xr-- 2 root root 4096 Dec 6 14:15 f/
-rw-r--r-- 1 root root 0 Dec 6 14:15 f.txt
root@test01:/data# chmod 1644 f.txt
root@test01:/data# ll
total 12
drwxr-xr-x 3 root root 4096 Dec 6 14:15 ./
drwxr-xr-x 20 root root 4096 Dec 3 14:40 ../
lrwxrwxrwx 1 root root 5 Dec 6 13:54 aa.txt -> a.txt
---------- 1 root root 0 Dec 6 13:54 a.txt
drw-r-xr-- 2 root root 4096 Dec 6 14:15 f/
-rw-r--r-T 1 root root 0 Dec 6 14:15 f.txt
设置权限,不能删除不能修改,只能读取(对所有用户,包括root)
root@test01:/data# chattr +i c.txt
root@test01:/data# ll
total 12
drwxr-xr-x 3 root root 4096 Dec 6 15:10 ./
drwxr-xr-x 20 root root 4096 Dec 3 14:40 ../
lrwxrwxrwx 1 root root 5 Dec 6 13:54 aa.txt -> a.txt
---------- 1 root root 0 Dec 6 13:54 a.txt
-rw-rw-rw- 1 root root 0 Dec 6 15:10 c.txt
drw-r-xr-- 2 root root 4096 Dec 6 14:15 f/
-rw-r--r-T 1 root root 0 Dec 6 14:15 f.txt
root@test01:/data# rm c.txt
rm: cannot remove 'c.txt': Operation not permitted
root@test01:/data# mv c.txt cc.txt
mv: cannot move 'c.txt' to 'cc.txt': Operation not permitted
root@test01:/data# echo dsadj >> c.txt
bash: c.txt: Operation not permitted
root@test01:/data# cat c.txt
root@test01:/data# lsattr c.txt
----i---------e------- c.txt
#删除
root@test01:/data# chattr -i c.txt
root@test01:/data# ll
total 12
drwxr-xr-x 3 root root 4096 Dec 6 15:10 ./
drwxr-xr-x 20 root root 4096 Dec 3 14:40 ../
lrwxrwxrwx 1 root root 5 Dec 6 13:54 aa.txt -> a.txt
---------- 1 root root 0 Dec 6 13:54 a.txt
-rw-rw-rw- 1 root root 0 Dec 6 15:10 c.txt
drw-r-xr-- 2 root root 4096 Dec 6 14:15 f/
-rw-r--r-T 1 root root 0 Dec 6 14:15 f.txt
root@test01:/data# rm c.txt
root@test01:/data# ll
total 12
drwxr-xr-x 3 root root 4096 Dec 6 15:18 ./
drwxr-xr-x 20 root root 4096 Dec 3 14:40 ../
lrwxrwxrwx 1 root root 5 Dec 6 13:54 aa.txt -> a.txt
---------- 1 root root 0 Dec 6 13:54 a.txt
drw-r-xr-- 2 root root 4096 Dec 6 14:15 f/
-rw-r--r-T 1 root root 0 Dec 6 14:15 f.txt
3. 结合vim几种模式,学会使用vim几个常见操作。
1)如何打开文件。并在打开文件(命令模式)之后如何退出文件。
打开文件:vi +文件名
打开文件(命令模式)退出:
- 退出:q
- 保存退出:wq
- 强制退出:q!
2)打开文件(命令模式)之后,进入插入模式。并在插入模式中如何回到打开文件的状态(命令模式),并在命令模式之后如何退出文件。
打开文件:vi +文件名
进入插入模式:
- i:在光标所在处插入
-
I:在当前光标所在的首行插入
-
a:append,在光标所在处后面插入
A:在当前光标所在行的行尾插入
o:在当前光标所在行的下方打开一个新行
O:在当前光标所在行的上方打开一个新行
插入模式模式返回命令行模式:esc键加上冒号
命令模式之后退出文件:
- 退出:q
- 保存退出:wq
- 强制退出:q!
3)打开文件(命令模式)之后,进入插入模式,编写一段话,"马哥出品,必属精品", 之后从插入模式中如何回到打开文件的状态(命令模式),并在命令模式之后如何退出文件。
打开文件
[root@localhost ~]# vim /data/test.txt
冒号进入插入模式
输入:马哥出品,必属精品
插入模式模式返回命令行模式:esc键加上冒号
命令模式之后退出文件:wq
4)使用cat命令验证文件内容,是刚刚自己写的内容。
[root@localhost ~]# cat /data/test.txt
马哥出品,必属精品
5)(可选),命令模式下,光标在单词,句子上进行前后,上下跳转。行复制粘贴。行删除。
^ :跳至行首的第一个非空白字符
0 :调制行首
$ : 跳至行尾
2G :跳至第二行
G :跳至最后一行
gg :跳至第一行
x:剪切光标所在的字符、
p:粘贴在光标的后面
r 3 :将光标所在的位置替换成三
R +要替换的内容 ;持续替换
/ +要查询的字符 :查询
u:撤回
ctrl + r :翻撤销
U:将所有修改全部撤销
y:复制
yy:复制整行
4. 总结学过的文本处理工具,文件查找工具,文本处理三剑客, 文本格式化命令(printf)的相关命令及选项,示例。
1)文本处理工具:nl、tac、paste
nl给文件表行号,相当于cat -b的作用
[root@localhost ~]# cat /data/test.txt
a
b
c
d
[root@localhost ~]# cat -b /data/test.txt
1 a
2 b
3 c
4 d
[root@localhost ~]# nl /data/test.txt
1 a
2 b
3 c
4 d
tac倒着显示文件内容
[root@localhost ~]# cat /data/test.txt
a
b
c
d
[root@localhost ~]# tac /data/test.txt
d
c
b
a
paste合并多个文件,同一行号的合并到一行
[root@localhost ~]# cat test.txt
a
b
c
[root@localhost ~]# cat test2.txt
xie:x:1000:1000:xie:/home/xie:/bin/bash
mysql:x:27:27:MySQL Server:/var/lib/mysql:/sbin/nologin
postgres:x:26:26:PostgreSQL Server:/var/lib/pgsql:/bin/bash
[root@localhost ~]# paste test.txt test2.txt
a xie:x:1000:1000:xie:/home/xie:/bin/bash
b mysql:x:27:27:MySQL Server:/var/lib/mysql:/sbin/nologin
c postgres:x:26:26:PostgreSQL Server:/var/lib/pgsql:/bin/bash
2)文件查找工具:head、tail、cut
head显示文件前几行的内容
[root@localhost ~]# head -n 3 /etc/passwd
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
tail显示文件后几行的内容
[root@localhost ~]# tail -n 2 /etc/passwd
xie:x:1000:1000:xie:/home/xie:/bin/bash
postgres:x:1001:1001::/home/postgres:/bin/bash
cut提取文本中的指定列
[root@localhost ~]# tail -n 2 /etc/passwd
xie:x:1000:1000:xie:/home/xie:/bin/bash
postgres:x:1001:1001::/home/postgres:/bin/bash
[root@localhost ~]# tail -n 2 /etc/passwd | cut -d ":" -f6
/home/xie
/home/postgres
3)文本处理三剑客:grep、sed、awk
4)文本格式化命令(printf)的相关命令及选项
可以实现格式化输出
FORMAT=格式
格式:printf "FORMAT", item1,item2...
- 必须指定FORMAT
- 不会自动换行,需要格式换行控制符\n
- FORMAT中需要分别为后面每一个item指定格式符
格式符:与item对应
- %s:显示字符串
- %d,%i:显示十进制整数
- %f:显示为浮点数
- %e,%E:显示科学计数法数值
- %c:显示字符的ASCII码
- %g,%G:以科学计数法或浮点型形式显示数值
- %u:无符号整数
- %%:显示%自身
root@Ubuntu:~# awk -F":" '{printf "%s\n",$1}' /etc/passwd
root
daemon
bin
5. 总结文本处理的grep命令相关的基本正则和扩展正则表达式。
字符匹配:
. 匹配任意单个字符
[] 匹配指定范围内的任意单个字符
[^] 匹配范围之外的任意单个字符
[:digit:] [:alpha:]
匹配次数:用在要指定次数的字符后面,用于指定前面字符出现的次数
* 匹配前面的字符任意次
.* 任意长度的任意字符
\? 匹配其前面的字符0或1次
\+ 匹配其前面的字符至少一次
\{m\} 匹配前面字符m次
\{m,n\} 匹配前面的字符至少m次,至多n次
位置锚定:
^ 行首锚定 用于模式的最左侧
$ 行尾锚定 用于模式的最右侧
^模式$ 整行匹配模式
^$ 空行
\< 词首锚定 用于单词模式的左侧
\> 词尾锚定 用于单词右侧
\<模式\> 匹配整个单词
6. 总结变量命名规则,不同类型变量(环境变量,位置变量,只读变量,局部变量,状态变量)如何使用。
1)变量命名规则
- 区分大小写
- 不能使用程序中的保留字和内置变量:if,while
- 只能用数字字母下划线组成,不能以数字开头
- 用英文单词命名,并体现出实际作用,不要用简写
- 变量名大写
- 局部变量小写
- 函数名小写
2)不同类型变量如何使用
环境变量:系统配置文件中使用
位置变量:在脚本代码中调用命令行递给脚本参数
只读变量:只能用来读,不能其值
局部变量:在某个特定范围内使用,超出范围则无效
状态变量:能够完全描述动态系统时域行为的所含变量个数最少的变量组
7. 通过shell编程完成,30鸡和兔的头,80鸡和兔的脚,分别有几只鸡,几只兔?
[root@localhost ~]# cat rabbit_chicken.sh
#!/bin/bash
read -p "请输入头的总数量:" HEDA
read -p "请输入脚的总数量:" FOOT
RABBIT=$[FOOT/2-HEAD]
CHICKEN=$[HEAD-RABBIT]
echo "兔子有:"$RABBIT
echo "鸡有:"$CHICKEN
8. 结合编程的for循环,条件测试,条件组合,完成批量创建100个用户
1)for遍历1..100
2)先id判断是否存在
3)用户存在则说明存在,用户不存在则添加用户并说明已添加。
#!/bin/bash
for i in {1..100}; do
grep "user$i" /etc/passwd &> /dev/null
if[ $? -ne 0 ];then
useradd user$i &> /dev/null
echo "用户创建成功:user"$i
else
echo "用户创建失败,用户已存在:user"$i
done
9. 磁盘存储术语总结: head, track, sector, sylinder.
head:磁头
track:磁道
sector:扇区
sylinder:柱面
10. 总结MBR,GPT结构。
MBR:
使用MBR分区表时,分区分为主分区、扩展分区、逻辑分区,三种类型。
1、主分区的总数,不能超过4个。就是说,一个硬盘,最多可以被划分为4个主分区。
2、如果划分扩展分区,那么,一个硬盘只能有一个扩展分区,且主分区与扩展分区的分区数目之和不能超过4个,就是说,一个硬盘,最多可以被划分为3个主分区与1个扩展分区。
3、在扩展分区中创建逻辑分区的数目没有限制,只要需要,可以创建任意多个逻辑分区。事实上,是微软公司在MBR分区表中引入扩展分区与逻辑分区的概念,目的就是要突破MBR最多只能划分四个主分区的限制。
4、任何分区,包括主分区、扩展分区、逻辑分区,分区的大小,都不能超过2TB,这是一条使得MBR分区表不能很好的处理大容量硬盘的限制。
5、任何分区,其起始地址,不能位于硬盘物理地址2TB之后,实际情况是,不仅是起始地址,结束地址在硬盘物理地址2TB之后的分区,也会导致很多严重的问题。这条限制直接宣告MBR不适合于管理超过2TB的大容量硬盘。
6、UEFI对MBR分区表支持不好,UEFI是新一代的BIOS,现在的新电脑,不论是台式机还是笔记本,都开始支持UEFI了。UEFI的内容可以点击:BIOS终结者,UEFI是什么?UEFI详解!
GPT:
1、GPT分区表,没有扩展分区与逻辑分区的概念,所有分区都是主分区。
2、GPT分区表,一个物理硬盘,在Windows下最多可以划分出128个分区,应该是足够用了。
3、GPT分区表,每个分区的最大容量是18EB(1EB = 1024PB = 1,048,576TB),这么大,不用考虑硬盘容量太大的问题了。
4、GPT分区表,与使用UEFI的新计算机配合的非常好,但使用BIOS的老机器,会出一些问题,不建议使用。
5、GPT分区表对新的Windows操作系统,比如Windows 7、8、10,都支持的非常好,但只支持64位的Windows XP。
11. 总结学过的分区,文件系统管理,SWAP管理相关的命令及选项,示例
fdisk:
root@Ubuntu:~# fdisk /dev/sdb
Welcome to fdisk (util-linux 2.37.2).
Changes will remain in memory only, until you decide to write them.
Be careful before using the write command.
Command (m for help):
parted:
root@Ubuntu:~# parted /dev/sdb mkpart primary 1 300
Information: You may need to update /etc/fstab.
root@Ubuntu:~# parted /dev/sdb print
Model: VMware, VMware Virtual S (scsi)
Disk /dev/sdb: 21.5GB
Sector size (logical/physical): 512B/512B
Partition Table: msdos
Disk Flags:
Number Start End Size Type File system Flags
1 1049kB 300MB 299MB primary
root@Ubuntu:~# parted /dev/sdb mkpart primary 301 500
Information: You may need to update /etc/fstab.
root@Ubuntu:~# parted /dev/sdb print
Model: VMware, VMware Virtual S (scsi)
Disk /dev/sdb: 21.5GB
Sector size (logical/physical): 512B/512B
Partition Table: msdos
Disk Flags:
Number Start End Size Type File system Flags
1 1049kB 300MB 299MB primary
2 301MB 500MB 199MB primary
mkfs:
root@Ubuntu:~# mkfs.ext4 /dev/sdb1
mke2fs 1.46.5 (30-Dec-2021)
Creating filesystem with 76800 4k blocks and 76800 inodes
Filesystem UUID: ed687ce3-956e-4283-8479-884a3b75206d
Superblock backups stored on blocks:
32768
Allocating group tables: done
Writing inode tables: done
Creating journal (4096 blocks): done
Writing superblocks and filesystem accounting information: done
tune2fs:
#查看块的属性信息
root@Ubuntu:~# tune2fs -l /dev/sdb1
xfs_info:用来查看xfs文件系统的具体信息。
fs_info [挂载点] | [设备文件名]
fsck:
#修复文件系统
fsck /dev/sdb1 -y
mount:
#挂载
root@Ubuntu:~# mount /dev/sdb1 /data/mysql
umount:
#取消挂载
umount /data/mysql
swapon:
#查看设备名
[root@Rocky ~]# swapon -s
Filename Type Size Used Priority
/dev/dm-1 partition 2113532 512 -2
swapoff:
#禁用
[root@Rocky ~]# swapoff /dev/dm-1
12. 总结raid 0, 1, 5, 10, 01的工作原理。总结各自的利用率,冗余性,性能,至少几个硬盘实现。
RAID级别区别 :0,1,5,6
- 磁盘能利用率
- 最少几块硬盘实现
- 容错性,防止几块硬盘损坏
- 性能好坏
13. 完成不影响业务对LVM磁盘扩容及缩容示例。
扩容
root@Ubuntu:~# lvextend -r -l +100%free /dev/testvg0/lv-mysql
Size of logical volume testvg0/lv-mysql changed from 6.00 GiB (384 extents) to <14.97 GiB (958 extents).
Logical volume testvg0/lv-mysql successfully resized.
resize2fs 1.46.5 (30-Dec-2021)
Filesystem at /dev/mapper/testvg0-lv--mysql is mounted on /data/mysql; on-line resizing required
old_desc_blocks = 1, new_desc_blocks = 2
The filesystem on /dev/mapper/testvg0-lv--mysql is now 3923968 (4k) blocks long.
root@Ubuntu:~# df -h
Filesystem Size Used Avail Use% Mounted on
tmpfs 389M 1.6M 388M 1% /run
/dev/mapper/ubuntu--vg-ubuntu--lv 97G 8.0G 85G 9% /
tmpfs 1.9G 0 1.9G 0% /dev/shm
tmpfs 5.0M 0 5.0M 0% /run/lock
/dev/sda2 2.0G 247M 1.6G 14% /boot
tmpfs 389M 4.0K 389M 1% /run/user/0
/dev/mapper/testvg0-lv--mysql 15G 24K 14G 1% /data/mysql
缩容
root@Ubuntu:~# umount /data/mysql
root@Ubuntu:~# lvreduce -L 8G -r /dev/testvg0/lv-mysql
fsck from util-linux 2.37.2
/dev/mapper/testvg0-lv--mysql: 11/983040 files (0.0% non-contiguous), 85760/3923968 blocks
resize2fs 1.46.5 (30-Dec-2021)
Resizing the filesystem on /dev/mapper/testvg0-lv--mysql to 2097152 (4k) blocks.
The filesystem on /dev/mapper/testvg0-lv--mysql is now 2097152 (4k) blocks long.
Size of logical volume testvg0/lv-mysql changed from <14.97 GiB (958 extents) to 8.00 GiB (512 extents).
Logical volume testvg0/lv-mysql successfully resized.
root@Ubuntu:~# mount /dev/testvg0/lv-mysql /data/mysql
root@Ubuntu:~# df -h
Filesystem Size Used Avail Use% Mounted on
tmpfs 389M 1.6M 388M 1% /run
/dev/mapper/ubuntu--vg-ubuntu--lv 97G 8.0G 85G 9% /
tmpfs 1.9G 0 1.9G 0% /dev/shm
tmpfs 5.0M 0 5.0M 0% /run/lock
/dev/sda2 2.0G 247M 1.6G 14% /boot
tmpfs 389M 4.0K 389M 1% /run/user/0
/dev/mapper/testvg0-lv--mysql 7.8G 24K 7.5G 1% /data/mysql