Linux基础命令
本文摘要: Linux系统遵循"一切皆文件"的哲学思想,所有配置和操作都通过文件实现。系统启动流程包括:加电自检、BIOS启动、引导加载、内核初始化、进程初始化和用户登录。介绍了SSH远程连接、基础命令(ls、pwd、cat等)、文件权限管理(chmod、chown)、进程管理(systemctl)和用户管理(useradd、passwd)等内容。详细讲解了磁盘管理(fdisk
Linus哲学思想:
- 一切皆文件:所有文件的配置、执行结果、网络通信、硬件管理等操作都是通过文件操作来实现的
- 一个命令只完成一项任务,复杂功能通过命令组合来实现,例如通过管道符“I”’可以将前一个命令的执行结果交给后一个命令继续执行
避免一切不必要的交互
Linux系统的启动流程
- 加电自检(检查硬件)
- 启动BIOS固件(主板中的程序、启动项、按键、显示模式、WIFI启动等功能)
- 引导加载系统启动程序(硬盘第一个分区、u盘、光盘)
- 内核初始化(将内核加载到内存中运运行)
- 初始化进程(systemd的PID是1,管理整个系统运行)
- 启动用户空间(根据系统运行级别启动相应的后台服务与用户设置的自启动服务)
- 用户登录
远程连接
SSH:安全的远程访问协议,C/S架构
服务端安装:openssh-server
客户端安装:ssh命令、xshell、PUTTY、mobaxterm
服务器的IP地址:ip a
SSH服务端口:22
Ssh root@192.168.8.30 # yes 输入root密码
排错思路:
- 检查网络连接模式
- 检查IP、网关、掩码
- 真机网络适配器设置
忘记root密码后进行重置
Linux基础命令
命令结构: 命令 【选项】 【参数】
*命令:用于调用系统中的可执行程序
*选项:- / --开头的之后跟字母,可以通—help查看命令的常用选项
*参数:一般是文件或者目录
-
ls查看目录中的文件
-l:查看文件详情
-a:查看所有文件,包括命令结构隐藏文件(开头的文件)
1.#查看/etc目录中的所有文件
2.ls-la /etc
2.pwd查看当前工作目录中的路径
3.cat查看文件中的所有内容
4.cd:改变当前路径到某一个新的路径
*文件路径:/etc/xxx/xxx
*/根目录:Linux的
绝对路径:从/开始
例如:/etc/sysconfig/network/scripts/ifcfg-ens33
*相对路径:从当前目录开始到目标目录的路径
Shell中文是“壳”的意思,在Linux中作为用户和系统之间交互的工具
*bash:大多数Linux操作系统默认的shell版本
*SH:最初的shell,较为原始,不推荐使用
ZSH:功能更加强大
5.fell:查看文件类型
- file 文件名
- -普通文件(二进制executable、)文本文件(ASCII text、UTF-8 Unicode text)
- l链接文件(symbolic link)
- d目录文件(directory)
- b块文件(block special)磁盘或光盘
- c字符文件(character special)输入输出设备:显示器、打印机、键盘鼠标
- s套接字文件(socket)进程间通信
- p管道符服务文件(fifo(named pipe))多进程通信
6.touch:创建普通文件(更新文件修改时间)
(1)touch a.txt
(2)touch 1.txt 2.txt 3.txt
(3)touch{1…100}.txt
7.rm: 删除文件或目录
(1)rm -f强制删除
(2)rm -r递归删除目录和目录中的所有内容
(3)rm -rf目录(极度危险慎用)
8.vi/vim:神的编辑器
(1)进入编辑模式 i/a/o
(2)保存退出:esc:wq
(3)esc(返回命令模式)
(4):末行模式
(5)w保存
(6)q退出
#vim三种基本模式
Vim
- 命令模式:复制、剪切、跳转、撤销、找回、删除等功能
- 编辑模式(插入模式):对文件内容进行编辑
- 末行模式(末行命令):对编辑进行一些设置,行号、查找、替换、保存、退出
#命令模式快捷键
- gg 光标跳转到第一行
- GG 光标跳转到最后一行
- dd 删除光标所在的一行 10dd删除当前行向下的10行
- u 撤销操作
- Ctrl+r 取消上一次的撤销(恢复)
- yy 复制一行 3yy 复制三行
- p 粘贴一行 10p 粘贴10行
#编辑模式
进入编辑模式
- i:在光标当前位置进行编辑
- a:光标后一位进行编辑
- o:光标向下新建一行进行编辑
- I:将光标移动到当前行的开头然后编辑
- A:将光标移动到当前行的结尾
- O:光标向上新建一行进行编辑
Esc先进入末行模式然后输入冒号
(1):set nonu取消行
(2):Set nu 显示行号
(3):q 不保存直接退出
(4):w 保存
(5):wq 保存并退出
(6):x 保存并退出
(7):q! 强制退出
(8):wq! 强制保存并退出
(9)/关键字 n向下查找 N向上查找
(10):s/old/new/ 替换光标所在行第一个找到的关键字
(11):s/old/new/g 替换光标所在行找到的所有关键字
(12):%s/old/new/全文替换
9.cp:复制文件或目录
10.mv:移动文件(改名)
(1)mv 原文件 路径
(2)mv old new
11.mkdir:创建目录
mkdir -p AA/BB/CC
12.rmdir删除空目录
rmdir dir01
13.date:查看系统时间
(1)date
(2)自定义时间显示的格式:时间格式化
(3)%Y xxx年 %m xx月 %d xx日 %H(xx小时) %M(XX分钟) %s (xx秒)
(4)%F xxxx-xx-xx
(5)%T HH:MM:SS
(6)时间格式化显示当前时间 date+%Y-%m-%d %H:%M:%S
(7) 使用时间同步服务器恢复系统时间ntpdate ntp.aliyun.com
(8)修改时间 date-s
14.man:查看命令帮助文档
(1)man date
15.cal : 显示日历
16.free:显示内存占率
(1)free -h:显示人类可读的单位
17.df:查看磁盘与分区的占用率
(1)df -h 显示人类可读的单位
(2)df -ht 显示磁盘的文件类型
18.du:查看目录大小
(1)du:默认会显示目录中每个子目录的大小
(2)du -s:只总的大小
(3)du-sh:显示人类可读单位
19.uname:查看系统基本信息,内核版本
(1)uname -a
20.lscpu:查看cpu的基本信息
(1)lscpu
21:lsblk:查看磁盘分区
22.lsof:查看端口是否被占用
(1)lsof -i:端口号
23.init:设置系统启动级别
(1)init 0 关机
(2)init 1 单用户模式,仅允许root登录,救援模式
(3)init2 多用户、不支持网络文件系统
(4)init3 多人多用户的命令行模式
(5)init4 未占用
(6)Init5 带图形界面的多人多用户模式
(7)init6 重启模式
24.wget:下载网络文件
(1)wget URL
(2)wget -0指定下载路径名称 URL
(3)下载华为yum源
(4)cd/ etc/yum.repos.d/
(5)cp -a /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.bak
(6)wget -O /etc/yum.repos.d/CentOS-Base.repo https://mirrors.huaweicloud.com/repository/conf/CentOS-7-anon.repo
25.yum:rpm包安装命令
(1)yum makecache 建立yum源的元缓存
(2)yum install -y 软件名称 #安装软件
(3)yum remove -y 软件名称 #卸载软件
(4)yum update #更新系统中所有的软件
(5)yum info 软件名称 #查看软件的基本信息
(6)yum search 软件名 #通过软件名称搜索软件包
(7)yum group list #显示软件分组
(8)yum groupinstall #安装一组软件
(9)yum list installed #显示安装的软件
(10)yum clean all #清除所有的yum缓存
使用安装光盘作为YUM源,适合没有网络的环境中使用
使用虚拟机加载安装光盘
挂载光盘到系统目录:/media/cdrom
配置光盘YUM源文件
26.mount:挂载磁盘、光盘、网络文件系统
(1)mkdir /media/cdrom
(2)# -r挂载只读文件时使用
(3)mount -r /dev/sr0 /media/cdrom
(4)#挂载:将系统中的目录和存储设备进行关联,通过该目录可以正常使用存储设备
(5)cd /etc/yum.repos.d/
(6)vim cdrom.repo

27.nmtui:半图形化网卡设置
(1)nmtui
(2)直接修改配置文件
(3)vim /etc/sysconfig/network-scripts/ifcfg-ens33

(15).重启系统网卡
(16)systemectl restart network
28.alias:给命令起别名
(1)alias vinet= vim /etc/sysconfig/network-scripts/ifcfg-ens33
(2)alias rennet= systemectl restart network
(3)默认只在当前终端中生效,在新终端中无效
(4)vim /etc/profile 让所有用户生效
(5)vim ~/.bashrc 让当前用户生效
29.unalias:清除别名
(1)unalias -a 清除所有别名
30.:source:重新加载配置,让配置文件立即生效
(1)source .bashrc # .bashrc是bash的配置文件,用户登录时,自动执行
(2)source /etc/profile # /etc/profile系统启动完成时,自动执行
31.type:显示命令的类型
(1)type 命令
(2)shell 内部命令:shell内部自带的命令
(3)外部命令:/usr/bin/python
(4)别名:使用alias起到别名
(5)函数:包含一组命令的集合
(6)shell脚本关键字: if for while...
.用户与权限管理
32.useradd:创建新用户
(1)useradd 用户名
(2)默认创建用户:
(3)创建用户家目录, /home/家目录
(4)允许用户登录系统,
(5)系统默认的shell - /bin/bash
(6)创建一个和用户相同名称的组名,它是用户的主组,不添加附加组
(7)-b, --base-dir BASE_DIR 新账户的主目录的基目录
(8) -c, --comment COMMENT 新账户的 GECOS 字段
(9) -d, --home-dir HOME_DIR 新账户的主目录
(10)-D, --defaults 显示或更改默认的 useradd 配置
(11) -e, --expiredate EXPIRE_DATE 新账户的过期日期
(12) -f, --inactive INACTIVE 新账户的密码不活动期
(13)-g, --gid GROUP 新账户主组的名称或 ID
(14)-G, --groups GROUPS 新账户的附加组列表
(15) -h, --help 显示此帮助信息并推出
(16) -k, --skel SKEL_DIR 使用此目录作为骨架目录
(17)-K, --key KEY=VALUE 不使用 /etc/login.defs 中的默认值
(18) -l, --no-log-init 不要将此用户添加到最近登录和登录失败数据库
(19) -m, --create-home 创建用户的主目录
(20)-M, --no-create-home 不创建用户的主目录
(21) -N, --no-user-group 不创建同名的组
(22)-o, --non-unique 允许使用重复的 UID 创建用户
(23) -p, --password PASSWORD 加密后的新账户密码
(24) -r, --system 创建一个系统账户
(25)-R, --root CHROOT_DIR chroot 到的目录
(26) -P, --prefix PREFIX_DIR prefix directory where are located the /etc/* files
(27) -s, --shell SHELL 新账户的登录 shell
(28)@-u, --uid UID 新账户的用户 ID
(29)-U, --user-group 创建与用户同名的组
(30) -Z, --selinux-user SEUSER 为 SELinux 用户映射使用指定 SEUSER
(31)存放用户信息
(32)/etc/passwd
(33)tom:x:1002:1002::/home/tom:/bin/bash
(34)用户名:密码占位:用户ID:主组ID:简介:用户家目录:启动时运行的shell
(35)软件用户不允许登录系统
(36)useradd -M -s /usr/sbin/nologin mysql
(37)useradd -u 9527 yqq
(38)UID:用户id 0:超级管理员的id 1~999系统用户的id范围 1000+普通用户范围
(39)useradd -g root admin 将admin用户的主组设置为root
(40)主组:和用户绑定的组,用户创建、复制、剪切的文件会自动属于该组
(41)附加组:加入该组的用户拥有该组的组权限
(42)useradd -G root user1 将user1用户加入到root中
(43)vim /etc/group 存放组信息的文件
(44)root:x:0: user1,user2 组名:组密码占位:GID:用户1,用户2
33.usermod:修改已有用户的设置
(1)usermod -aG root tom 将tom加入root组
34.userdel删除用户
(1)userdel -r用户 #删除用户、用户家目录、邮箱目录
35.passwd:给用户创建密码或修改密码
(1)root用户可以修改所有用户的密码
(2)普通用户只能修改自己的密码,除非使用sudo
(3)passwd 用户名
36.su:切换用户
(1)su用户 #当前目录直接切换用户
(2)su - 用户 #切换用户并在它的家目录登录
(3)su - #切换root用户
(4)root用户切换普通用户不需要密码,普通用户切换需要密码
37sudo:让普通用户临时使用root的身份执行命令
38.id:查看用户的UID
39.groupadd:创建组
(1)groupadd 组名
(2)groupadd test #创建组
(3)groupadd -aG test# 将用户添加到该组
40.groupmod:修改组
(1)groupmod -g 组名 #修改组ID
41.groupdel:删除组
(1)groupdel:组名
文件权限
rwx rwx rwx

42.start:查看文件详情
43.chmod:修改文件的权限
|
数值 |
字母 |
文件含义 |
目录含义 |
|||
|
1 |
--x |
可执行 |
可以进入目录 |
|||
|
2 |
-w- |
只写 |
创建、剪切、删除 |
|||
|
3 |
-wx |
可写可执行 |
进入目录可修改 |
|||
|
4 |
r-- |
只读 |
可以查看目录中内容 |
|||
|
5 |
r-x |
可读可执行 |
查看、进入目录 |
|||
|
6 |
rw- |
可读可写 |
不能cd进入目录 |
|||
|
7 |
rwx |
可读可写可执行 |
拥有目录的所有权 |
|||
|
0 |
--- |
无权限 |
无权限 |
|||
|
字母 |
含义 |
|
|
a |
所有用户 |
|
|
u |
所有者(属主) |
|
|
g |
同组成员(属组) |
|
|
o |
其他成员 |
|
|
+ |
增加权限 |
|
|
- |
减少权限 |
|
|
= |
赋予权限 |
|
- chmod 权限值 文件
- chmod 权限值 -R 目录 #递归修改权限
- chmod 755 dir #rwxr-xr-x
- chmod 700 dir #rwx------
- chmod 644 file #re-r-r—
- chmod 600 file #rw------
- chmod +x file #rwx—x—x
- chmod u-w file #r-x—x—x
- chmod u+w,g=rw,o=r file #rwxrw-r--
44.umask:设置创建文件或目录时默认的权限
(1)umask #0022
(2)#0666-0022=0644 rw-r--r—
(3)#0777 -0022=0755 rwxr-xr-x
45.chown:修改文件的所有者
(1)chown 用户名 文件名
(2)chown 用户名.组名 -R 目录名
46.chgrp:只修改文件的属组
(1)chgrp 组名 文件名
特殊权限:
SUID:让其他用户可以使用属主的权限执行该命令;passwd命令被设置SUID
没有root权限,普通用户无法修改自己的密码;因为修改/etc/shadow需要root权限
Root无视普通权限,/etc/shadow为了安全性考虑,只能由root用户修改
chmod u+s /bin/paswd
chmod 4755 file
s/S:s SUID生效,S 没有生效,没有x可执行权限,则SUID无法生效
SGID: rwxr-sr-x 让其他用户可以使用属组的权限执行该命令
chmod g+s xxx
chmod 2755 xxx
Sticky bit: rwxrwxrwt粘滞位 给共享目录设置特殊权限,使用t/T,存放在该目录的文件仅允许其属主执行删除、移动等操作
chmod o+t /tmp
chmod 1777 /tmp
隐藏权限:
47.lsattr:查看隐藏权限
48.chattr:设置隐藏权限
chattr 选项 文件
a 对文件只能追加内容,不能编辑、修改、删除文件
i 锁定文件,只能查看,复制文件,不能做任何修改
chattr +a xxx.log #对一些特殊的日志添加
echo “字符串”>> test.txt
# >>实现追加重定向
## 输出重定向,将屏幕上输出的内容保存到文件当中
49.ech:在Shell中输出内容
echo “hello”
ACL访问控制列表:
*属主、属组、其他用户
*ACL对于权限管理更加灵活一些,最主要的功能给其他某个用户或某组用户设置独立的权限
*rw-r-----: u:root 单独给tom一个rw-权限
50.getfacl:查看文件是否设置ACL权限
(1)getfacl file
51.setfacl:设置及文件的ACL权限
(1)-m添加或修改acl权限
(2)-x 删除指定的权限
(3)-b 删除所有的acl权限
(4)#添加或修改用户或组的权限
(5)setfacl -m u:tom:rw filename
(6)setfacl -m g:tom:r-x filename
(7)#指定删除权限
(8)setfacl -x u:tom filename
(9)删除文件的所有ACL权限
(10)setfacl -b filename
(11)目录设置ACL权限后,目录中新建的文件后自动添加ACL权限
(12)setfacl -m d:u:tom:rw dir01
sudo与sudoers
- sudo 可以让普通用户临时使用root的身份执行命令
- sudo 命令
52.visudo:使用vi编辑器打开/etc/sudoers文件

53.reboot:重启系统
54.shutdown:关机
55.which:查找命令的路径
(1)which 命令
56.who:查看登录的用户

57.whoami:查看当前终端中登录的用户
58.w:查看登录的用户的状态
59.uptime:查看系统负载

文件查看
60.tac:反向查看,从最后一行倒叙输出文本内容
61.head:查看前n行
(1)head -5 /etc/passwd
62.tail:查看后n行
(1)tail -5 /etc/passwd
(2)#监控日志,事实显示最新的日志内容
(3)tail -f /var/log/xx.log
管道符:将前一个命令执行结果通过“|”符号交给后一个命令继续执行

63.more:查看内容较多的文件时,可以向下翻页
(1)more /etc/sudoers
64.less:more升级版,可以上下自由查看文件
(1)less /etc/sudoers
(2)/关键字 n向下查找,N向上查找
(3)q退出
65.find:在系统中查找文件
(1)find 路径 查找条件(可以多条件查找)…
(2)#查找条件
(3)-name: 按文件名查找,可以使用“*”通配符进行模糊查询,会区分大小写
(4)-iname:不区分大小写
(5)-type:按文件类型查询 f普通文件 d目录 l链接 b块文件 c字符文件 s套接字 p管道符
(6)-size:根据文件大小匹配 +大于 -小于 约等于k m g
(7)-mtime:根据文件的修改时间查找,单位是天 + - =
(8)find /etc -size 10k -type f
(9)-exec #使用其他命令处理查询到的结果
(10)#找到系统中的所有log日志,自动复制到/tmp/logs中
(11)mkdir /tmp/logs
find / -name “*.log” -type f -exec cp {} /tmp logs \;
(12)find ./ -size -100k -exec rm {} \; 删除当前目录下小于100k的文件
66.rpm:RedHat的软件包管理工具
(1)rpm -I xxx.rpm #安装rpm包的系统中
(2)rpm -ivh xxx.rpm #安装rpm包时,显示进度条
(3)rpm -e xxx #在系统中移除该软件
(4)rpm -evh xxx #删除软件时,显示进度条
(5)wegt http://xxx
查看软件包
(6)rpm -qa #查询所有安装上的软件包
(7)rpm -qi xxx #查询某个软件包的详细信息
(8)rpm -ql xxx #查询某个软件包的安装路径
67.grep:通过条件查找过滤文件或命令结果中的内容
(1)rpm -qa / grep tree
68.wc:world count 单词统计命令
(1)wc -l 文件 #统计行数
(2)-c 字节数
(3)-w 单词数
69.tar:归档、压缩、解压缩命令
(1)#归档:将一个目录打包成一个文件
(2)tar -cvf xxx.tar 目录名
(3)-c 创建归档
-x解压缩
(4)-v 显示过程
(5)-f 指定打包后的文件
(6)-z Gzip 压缩格式
(7)-j Bzip2压缩格式
(8)-J XZ压缩格式
(9)-c 指定解压缩目录
#压缩目录
tar -czvf xxx.tar.gz 目录
tar -cjvf xxx.tar.bz2 目录
tar -cJvf xxx.tar.xz 目录
# 解压缩目录
tar -xvf xxx.tar -C /tmp
70.sz:通过xshell之类的终端进行文件下载
(1)yum install lrzsz
(2)#下载文件
(3)sz 文件
71.rz:通过xshell之类的终端进行文件上传
72.zip/unzip:压缩与解压缩zip文件
zip -r etc.zip /etc
unzip etc.zip
73.gzip
(1)gzip 文件 #文件.gz
(2)gzip -d 文件.gz
74.bzip2
(1)bzip2 文件 #文件.bz2
(2)bzip2 -d 文件.bz2
75.xz
(1)xz 文件 #文件xz
(2)xz -d
Linux 安装软件的方法:
*Rpm包安装:需要自己查找依赖关系,按顺序安装软件包
*Yum安装:需要配置好yum源,一键安装软件
*源码编译安装:需要下载源代码,安装编译环境,自定义安装路径和设置
*二进制包安装:将编译好的程序解压到系统中,进行简单配置
*容器化安装:使用docker镜像进行服务的安装运行
源码安装案例:
nginx:开源web服务器,支持反向代理、负载均衡、静态文件web服务
*下载源代码:https://www.nginx.org


#关闭防火墙:systemctl stop firewalld
开机不启动防火墙:systemctl disable firewalld
76.make:C语言编译工具,执行Makefile文件,调用GCC进行编译
(1)cd 源码目录
(2)make -j2 #使用2个线程编译
(3)make install #将项目安装到安装目录
77.systemctl:服务管理工具
(1)systemctl start 服务 启动服务
(2)systemctl stop 服务 #关闭服务
(3) systemctl status 服务 #查看服务状态
(4) systemctl enable 服务 #开机启动服务
(5) systemctl disable 服务 #开机不启动服务
YUM源
yum软件包的一键安装工具,rpm包(Linu60,x中较为常用的一种软件安装包)
yum是使用Python编写的一个rpm包下载安装管理工具
- 自动下载rpm包
- 一键安装rpm包
- 自动解决依赖关系,自动安装软件依赖的软件包
yum源:rpm包的下载路径,包含rpm和相关信息
(1)/etc/yum.repos.d/xxx.repo
(2)备份默认的yum源
(3)配置yum源
#输入vim CentOS-Base.repo
[base] # yum名称
name=CentOS-$releasever – Base #简介
mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=os&infra=$infra
#baseurl=http://mirror.centos.org/centos/$releasever/os/$basearch/
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
enabled=1 #开启当前yum源
磁盘管理
分区:在一块磁盘上可以划分多个分区,每个分区相对独立,可以将系统、软件、数据存放在不同的分区;
格式化:在分区上建立文件系统,inode存储元数据、block存储块数据;
*文件系统:管理磁盘上的文件,文件的操作的底层实现
windows:NTFS
Linux:ext4、xfs
*Indoe:I节点存储元数据,文件的描述,文件名、权限、类型、大小、修改时间、硬链接、数据块地址等信息;
*block:块文件,默认:4k,小文件会占用一个blog块,大文件数据会被拆分到多个块中;
添加新硬盘


磁盘的分区:
fdisk/gdisk
fdisk:只能支持2T及内磁盘分区,只能分4个主分区,可以在某个主分区上建立扩展分区,扩展分区可以划分逻辑分区;
*MBR(Master Boot Record)分区表存在天然瓶颈,这是导致2TB限制的根本原因。
*GPT的优势:GPT(GUID Partition Table)分区表采用64位寻址,理论上支持的磁盘容量可达18EB(1EB=1024PB=1048576TB),完全满足大磁盘需求,同时还支持更多分区(最多128个主分区)。
78.fdisk:对2T以内磁盘的分区
(1)fdisk -l #查看分区信息
(2)fdisk /dev/sdb #对磁盘进行分区
(3)命令(输入m获取帮助):m
(4)命令操作
(5)d 删除分区
(6)l 显示分区的类型
(7)m 显示命令菜单
(8)n 创建新分区
(9)p 打印分区表
(10)q 不保存退出命令
(11)t 根据类型id,设置类型
(12)w 保存分区信息并退出
(13)n 建立分区 p建立主分区 设置磁盘大小
(14)w 保存退出
79.mkfs.格式
(1)mkfs.xfs /dev/sdb1
(2)Mkfs.ext4
(3)mkdir /mnt/data1
(4)挂载磁盘分区到系统:mount /dev/sdb1 /mnt/data1
(5)mkdir /dev/sdb1 /mnt/data1
(6)mout /dev/sdb2 /mnt/data2
(7)umount /dev/sdb1 卸载磁盘
80.mkswap:将分区格式化为交换分区
内存:运行内存,系统与程序运行时占用的存储空间,读写速度非常快;IO(input/output)性能高
硬盘:持久化存储,但是读写的速度相对较慢,容量大;
交换分区:内存不足时,可以临时在磁盘上存储内存的数据,防止系统由于内存不足而崩溃;
(1)#swap格式化磁盘 mkswap /dev/sdb6
(2)开启swap分区(临时开启,重启系统失败) swapon /dev/sdb6
(3)关闭swap swapoff /dev/sdb6
当inode或block被占满时,无法创建新文件;
磁盘容量剩余很多,但是无法创建新文件;inode不足,df -hi查看一下
开机自动挂载

*硬链接:ln 原文件 连接文件 硬链接和原文件本身就是同一个文件,共享同一个inode节点,只是名称或路径不一致;不能跨分区、跨文件系统;
*软链接:ln -s 原文件 软连接 软连接和原文件是两个文件,原文件被删除、移动、改名都会导致软链接失效;可以跨分区和文件系统,没有限制;
81.gdisk:大硬盘分区
- yum install -y gdisk
LVM(Logical Volume Management)
逻辑卷管理技术,物理磁盘pv -> 卷组 -> 逻辑卷lv
实现逻辑卷容量的扩容、缩容;

-
添加物理磁盘
|
功能/命令 |
物理卷管理 |
卷组管理 |
逻辑卷管理 |
|
扫描 |
pvscan |
vgscan |
lvscan |
|
建立 |
pvcreate |
vgcreate |
lvcreate |
|
显示 |
pvdisplay |
vgdisplay |
lvdisplay |
|
删除 |
pvremove |
vgremove |
lvremove |
|
扩展 |
vgextend |
lvextend |
|
|
缩小 |
vgreduce |
lvreduce |
将物理磁盘进行转换为pv(物理卷)
- yum install -y lvm2
-
扫描物理卷
- pvscan
- No matching physical volumes
-
创建物理卷pv
- pvcreate /dev/sdb /dev/sdc /dev/sdd




- 将PV(物理卷)合并成VG(卷组)
- #创建VG
-
86.vgcreate vg1 /dev/sdb /dev/sdc


![]()
4.在VG(卷组)上划分LV(逻辑卷)

5.格式化LV(逻辑卷)

6.挂载LV到系统中

pv -> vg ->lv
lv扩容
lv扩容
(1)卸载lv
umount /dev/vg1/lv1
(2)增加容量
lvextend -L 50G /dev/vg1/lv1
(3)数据完整性检查
#ext4文件系统命令
e2fsck -f /dev/vg1/lv1
#xfs命令
xfs_repair -f /dev/vg1/lva
(4)重置系统
#ext4文件系统命令
resize2fs /dev/vg1/lv1
#xfs命令
xfs_growfs /dev/vg1/lv1
(5)重新挂载
mount /dev/vg1/lv1 /mnt/lvm1
lv缩容:
lv缩容:
(1)卸载磁盘
umount /dev/vg1/lv1
(2)检查文件系统的完整性。
#ext4文件系统命令
e2fsck -f /dev/vg1/lv1
#xfs命令
xfs_repair -f /dev/vg1/lv1
(3)通知系统内核将逻辑卷lv1的容量减小到10G
#ext4文件系统命令
Resize2fs /dev/vg1/lv1 10G
#xfs命令
xfs_growfs /dev/vg1/lv1 10G
(4)将LV逻辑卷的容量修改为10G
lvreduce -L 10G /dev/vg1/lv1
(5)重新挂载
mount /dev/vg1/lv1 /mnt/lvm1/
VG缩容
1.备份数据:缩容操作具有破坏性风险,必须提前备份所有重要数据。
2.检查VG状态:使用`vgdisplay`命令查看卷组的状态,确认VG是`resizeable`且活跃的。同时,使用`pvs -o+pv_used`命令查看物理卷(PV)的使用情况,确定要移除的PV。
3.迁移目标PV数据:使用`pvmove`命令将目标PV上的数据迁移到同VG的其他PV上。例如,要将`/dev/sdb1`上的数据迁移到其他PV上,可以执行`pvmove /dev/sdb1`。在迁移过程中,确保VG中有足够的其他PV容纳迁移的数据,并且目标PV不能包含VG的元数据(可以使用`pvdisplay -m /dev/sdb1`检查)。
4. 从VG移除PV:当目标PV上的数据全部迁移完成后,使用`vgreduce`命令将该PV从卷组中移除。例如,要从名为`vg_name`的卷组中移除`/dev/sdb1`,可以执行`vgreduce vg_name /dev/sdb1`。
5. 检查VG容量变化:再次使用`vgdisplay`命令查看卷组的容量,确认VG已经成功缩容。
6. (可选)彻底删除PV标记:如果确定不再使用该PV,可以使用`pvremove`命令删除PV上的LVM标记。例如,`pvremove /dev/sdb1`,这样该PV就可以重新用于其他用途或被删除。
RAID技术
将数据拆分到多块硬盘中进行存储提升容量和IO性能、数据冗余功能
RAID 0:数据条带化

- 最少需要两块磁盘
- 数据条带式分布
- 没有冗余,性能最佳(不存储镜像、校验信息)
- 不能应用于对数据安全性要求高的场合
- 个人应用、游戏、影音娱乐
RAID 1:数据镜像化

- 最少需要2块磁盘
- 提供数据块冗余
- 性能和一块硬盘无区别
RAID 5/RAID 6:奇偶校验码

- 最少3块磁盘,可以在损坏一块硬盘的时刻,恢复数据
- 数据条带形式分布
- 以奇偶校验作冗余
- 适合多读少写的情景,是性能与数据冗余最佳的折中方案
RAID 10:RAID 1+RAID 0

- 最少需要4块磁盘
- 先按RAID 0分成两组,再分别对两组按RAID 1方式镜像
- 兼顾冗余(提供镜像存储)和性能(数据条带形分布)
- 在实际应用中较为常用
软RAID/硬RAID
- 安装软件RAID工具
数据处理命令
90.grep:通过关键字过滤查找文件的某行
- grep “关键字” file
- 命令 | grep “关键字”
- grep -n 显示行号
- #在目录中查找所有包含关键字的文件
- grep -r “关键字” 目录
- #正则表达式
- . 匹配任意一个字符
- 【0-9】 匹配任意一个数字
- 【a-z】 匹配任意一个小写字母
- 【0-9A-Za-z】 匹配数字字母
- ^ 匹配以xxx开头
- $ 匹配以xxx结尾
- ^$ 匹配空行
- {1,3} 重复次数,1-3次
- * 任意次
- () 分组
- \ 转义字符
- # -E 正则扩展
- grep -Ern ‘([0-9]{1,3}\.){3}[0-9]{1,3}’ /etc
- # -v 反向匹配
- grep -v nologin /etc/passwd
- grep -v ‘^$’
- #显示非注释和非空白内容
- cat /etc/sudoers/grep -Ev “^$^#”
91.sed:流编辑器,按行编辑、查找、替换文件内容
- #文案内容替换
- ##显示替换结果,并不真正修改
- sed ‘s/old/new/’ file #每行第一个关键字被修改
- sed ‘s/old/new/g’ file #全局替换
- ## -i或 -i.bak 修改原文件
- sed -i ‘s/old/new/g’ file
- sed -i.bak ‘s/old/new/g’ file #先备份再删除
- #文件内容删除
- sed -i ‘2d’ file #删除第二行
- sed -i ‘3,10’ file #删除3-10行
- sed -i ‘/Docker/d’ test.txt #通过关键字查找并删除
- ##按行查找
- sed -n ‘/关键字/p’ file #关键字查找
- sed -n ‘5p’ file #查看第n行
- ## 在关键字行上方插入新行
- sed -i ‘/Redis/i AAAA’ test.txt
- ## 在第3行下方添加一行
- sed -i ‘3 a BBB’ test.txt
92.awk:一种强大的数据处理语言
- awk -F “分隔符” ‘{print $1}’ file
- $0 显示一行内容
- $1~$n 显示第n行的内容
- NR 表示行数
- $NF 表示最后一列,$(NF-1)倒数第二列
- Ip a/grep inet/sed -n ‘3p’/awk ‘{print $2}’/awk -F“/” ‘{PRINT $1}’
Linux中的常用符号
- * 代表任意字符串,所有文件
- cp /abc/* /tmp/
- ? 表示一个字符
- cp a?C.txt
- / 表示根目录或目录分隔符
- /usr/local/src
- \ 换行符
- $ 获取变量的值
- $PATH 可执行命令的路径
- $HOME 当前用户的家目录
- $PWD 当前目录
- $SHELL 当前使用的SHELL
- ‘’单引号 字符本身
- “”双引号 普通衣服显示自身,变量会显示变量的值
- ``反引号 获取命令执行后的结果
- $() 获取命令的执行结果
- 命令1 && 命令2 “与运算” 当前一个命令成功执行后,才会执行第二命令
- 命令1 // 命令2 “或运输” 当前一个命令失败时,才会执行第二命令
- 命令1 ; 命令2 “分隔命令” 按顺序执行所有命令
- 命令1 / 命令2 “管道符” 将前一个命令的运行结果交给后一个命令继续执行
- #输出重定向
- 命令 > file.txt #文件不存在,会创建文件,文件存在会被覆盖内容
- 命令 >> file.txt #追加命令的执行结果到文件中,最后一行添加新内容
- 标准输出 stdio 显示上输出的正确的内容
- 命令 i>> file.txt
- 标准错误 stderr
- 命令 2>> file.txt
- 命令的所有执行结果,包括错误结果
- 命令 &>> file.txt
- # & 写在命令执行的最后方时,让命令在后台执行
- #输入重定向
- 命令 < file.txt #将文件中的内容交由命令执行
- 命令 << 键盘输入 #让命令将键盘输入的内容作为文件处理
- cat << EOF
- 1.配置IP地址
- 2.配置yum源
- 3.优化系统设置
- EOF
更多推荐



所有评论(0)