NSD2005班第一次串讲笔记

NSD2005班第一次串讲笔记

命令基础

  • 命令的执行依赖于解释器(默认的解释器:/bin/bash)

    • 用户—》解释器—》内核—》硬件
     [root@localhost ~]# cat /etc/shells     #查看当前系统有哪些解释器
    
  • 命令行的一般格式基本用法

    • 命令字 [选项]… [参数1] [参数2]…
  • Linux执行大多数命令,都要找到对应的执行程序

    • which 查看命令对应的执行程序
      • 大多数命令是有对应的执行程序的
  • 命令行的快捷键

    • Ctrl+C 废弃当前编辑的命令行、结束当前正在运行的命令
    • Ctrl+L 清空屏幕
    • ALT/ESC+. 粘贴上一条命令的最后一个参数
    • Ctrl+U 清楚光标前的内容
    • Ctrl+W 以空格为界定,删除一个参数或命令
    • Tab 自动补全

一、文件和目录管理

1.1、Linux系统的目录结构

  • Linux系统的目录结构:树形结构
    • 哲学理念:一切皆文件。
    • 根目录:用 **“ / ”**表示
      • Linux系统的起点

  • /root:管理员用户的家目录
  • /bin :存放二进制可执行文件
  • /boot:存放启动系统所需要的引导文件
  • /etc :存放的是系统管理所用到的配置文件
  • /home:存放普通用户家目录的
  • /dev :存放硬件设备的目录
  • /var :常态性变动的文件,包括日志文件以及某些软件运作所产生的文件

1.2、文件和目录的管理命令

1.2.1、pwd

  • (Print Working Directory)显示出完整的当前工作目录的名称
[root@localhost ~]# pwd
/root

1.2.2、cd

  • (Change Directory)切换目录

  • 命令格式:cd [目标文件夹位置]

[root@localhost ~]# cd /opt/
[root@localhost opt]# pwd
/opt
  • cd 命令常用的几种方式

    1. 直接使用 cd 会切换到当前登录用户的家目录、
    [root@localhost opt]# cd 
    [root@localhost ~]# pwd
    /root
    
    1. cd … 切换到当前目录的父目录
    [root@localhost ~]# cd ..
    [root@localhost /]# pwd
    /
    
    1. cd ~用户名 切换到目标用户的家目录
    [root@localhost ~]# useradd nsd2005
    [root@localhost ~]# cd ~nsd2005
    [root@localhost nsd2005]# pwd
    /home/nsd2005
    
  • 绝对路径和相对路径

    • 绝对路径:以根目录开始的完整路径
    • 相对路径:以当前所在的目录为参照物的路径

1.2.3、ls

  • (list)显示指定目录下的内容(列出当前工作目录所含文件及子目录)

  • 命令格式:ls [选项] [目录或文件名]…

[root@localhost ~]# ls
anaconda-ks.cfg       公共  视频  文档  音乐
initial-setup-ks.cfg  模板  图片  下载  桌面
  • 常用的选项

    • -l 长格式显示文件的详细属性
    [root@localhost ~]# ls -l /etc/passwd
    -rw-r--r--. 1 root root 2727 6月   8 10:24 /etc/passwd
    
    - -A  显示目标目录下所有的文件和目录,包括隐藏文件
    
    [root@localhost ~]# ls -A /root/
    
    • -d 显示目录本身的属性
    [root@localhost ~]# ls -ld /etc
    
    • -h 提供一个易读的单位
    [root@localhost ~]# ls -lh /etc/passwd
    
    • -R 递归显示内容
    [root@localhost ~]# ls -R /etc/
    

1.2.4、du

  • 统计文件或者目录使用硬盘空间的大小

  • 命令格式 : du [选项] 文件或目录

  • 常用选项

    • -s 显示文件或目录的大小
    • -h 加一个易读的单位
    [root@localhost ~]# du -sh /etc/passwd
    

1.2.5、cat

  • 将[文件]或标准输入组合输出到标准输出。

  • 命令格式:cat [选项]… [文件]…

[root@localhost ~]# cat /etc/passwd
  • 常用的选项

    • -n 对输出的所有行编号
    [root@localhost ~]# cat -n /etc/passwd
    

1.2.6、head和tail

  • 查看部分内容的命令

  • head命令格式:head [-n] 数字 文件名

    • 默认查看文件前10行
    [root@localhost ~]# head /etc/passwd		//显示前十行内容
    
    [root@localhost ~]# head -2 /etc/passwd		//显示前两行内容
    
  • tail命令格式: tail [-n] 数字 文件名

    • 默认查看文件后10行
    [root@localhost ~]# tail /etc/passwd		//显示后十行内容
    
    [root@localhost ~]# tail -2 /etc/passwd		//显示后两行内容
    

1.2.7、grep工具

  • 输出包含指定字符串的行
  • 命令格式: grep 查找条件 目标文件
[root@localhost ~]# grep ^root /etc/passwd		//查询以root开头的行

[root@localhost ~]# grep bash$ /etc/passwd		//查询以bash结尾的行
  • 常用选项

    • -v 结果取反
    • -i 忽略大小写
    [root@localhost ~]# grep -v ^root /etc/passwd   //查询不以root开头的行
    
    [root@localhost ~]# grep -v bash$ /etc/passwd   //查询不以bash结尾的行
    

1.2.8、mkdir

  • 创建目录

  • 命令格式:mkdir [选项]… 目录…

[root@localhost ~]# mkdir /opt/nsd2005
[root@localhost ~]# cd /opt/nsd2005
[root@localhost nsd2005]# pwd
/opt/nsd2005
  • 常用的选项

    • -p 创建一个目录并将它的父目录也创建出来(创建一个连续的目录)
    [root@localhost nsd2005]# mkdir -p /opt/nsd2005/aa/bb/cc/dd/ee
    [root@localhost nsd2005]# cd /opt/nsd2005/aa/bb/cc/dd/ee
    [root@localhost ee]# pwd
    /opt/nsd2005/aa/bb/cc/dd/ee
    
    • -m 创建目录时指定权限
    [root@localhost ~]# mkdir -m 444 /opt/nsd05
    [root@localhost ~]# ls -ld /opt/nsd05
    dr--r--r--. 2 root root 6 6月   8 10:50 /opt/nsd05
    

1.2.9、touch

  • 创建文件
  • 命令格式: touch 文件名
[root@localhost ~]# touch 1.txt   //在当前目录下创建文件1.txt
[root@localhost ~]# touch /opt/1.txt   //在指定目录下创建文件1.txt

1.2.10、rm

  • 删除目录或文件

  • 命令格式:rm [选项]… 文件…

  • 常用的选项

    • -r :递归删除(删除目录必须要有)
    • -f : 强制删除
    [root@localhost ~]# rm -rf /opt/1.txt 
    [root@localhost ~]# rm -rf /opt/nsd05/
    [root@localhost ~]# ls /opt/
    

1.2.11、mv

  • (move)移动文件或目录

  • 路径不变的移动(重命名)

  • 命令格式:mv 原文件… 目标路径

    [root@localhost ~]# touch 1.txt
    [root@localhost ~]# mv 1.txt  /opt/1.txt
    
  • 重命名

    [root@localhost ~]# mv  /opt/1.txt /opt/2.txt
    [root@localhost ~]# ls /opt/
    

1.2.12、cp

  • (copy)复制

  • 命令格式:cp [选项]… 原文件1、原文件2… 目标路径

  • 常用选项

    • -r 递归复制,复制目录时必须有的选项
    [root@localhost ~]# cp /etc/passwd /opt/passwd
    [root@localhost ~]# ls /opt/
    
    [root@localhost ~]# cp /etc/passwd /opt/pass
    [root@localhost ~]# ls /opt/
    

1.3、归档及压缩

  • 归档:将多个文件或目录整理为一个文件,文件总大小不会改变。

  • 压缩:按照某种算法减小文件占用空间的大小

  • Linux系统中常见的压缩格式

    • .gz ==》 gzip
    • .bz2 ==》 bzip2
    • .xz ==》 xz

1.3.1、tar 集成备份工具

  • 创建压缩包

    • 命令格式1: tar 选项 /路径/压缩包的名字 /路径/被压缩归档的数据…
  • 释放压缩包:

    • 命令格式2: tar 选项 /路径/压缩包的名字 -C(大写) /路径/
  • 常用选项

    • -c 创建归档
    • -x 释放归档
    • -f 指定归档文件名称,必须要有的选项,必须放在所有选项后面。
    • -z 、 -j 、-J : 分别表示gz、bz2、xz
    • -t : 显示归档文件中的清单。不执行解压缩的操作
    • -C : 指定释放路径
[root@localhost ~]# tar -zcf /root/tarfile.tar.gz  /boot  /opt/
tar: 从成员名中删除开头的“/”
[root@localhost ~]# tar -tf /root/tarfile.tar.gz
[root@localhost ~]# mkdir /opt/tarfiles
        
[root@localhost ~]# tar -xf /root/tarfile.tar.gz -C  /opt/tarfiles/
[root@localhost ~]# ls /opt/tarfiles/
boot  opt

1.3.2、zip

  • zip归档工具:可跨平台的

    • 归档+压缩
    • zip -r 备份文件.zip 被归档的文件或目录
    [root@localhost ~]# zip -r /root/zipfiles.zip /home /boot
    
    • 释放+解压

    • unzip 备份文件.zip -d [目标文件夹]

[root@localhost ~]# mkdir /zipfiles
[root@localhost ~]# unzip /root/zipfiles.zip -d /zipfiles
[root@localhost ~]# ls /zipfiles
boot home
```

1.4、管道和重定向

  • 管道 | 将前面命令的输出结果,传递给后面的命令作为参数

  • 重定向 > 将前面命令的输出作为内容,写入到目标文件中

    • (不存在会自动创建)
    • 覆盖重定向: >
    • 追加重定向: >>

1.5、find命令

  • 命令格式: find [目录] [条件1] [条件2]

  • 常用的条件

    • -type 类型 (f 文本文件、 d 目录、 L快捷方式)
    • -name “文件名称”
    • -size + | - 文件大小(k、M、G、TB、PB、EB)
    • -user 用户名
    • -mtime 修改时间
    [root@localhost ~]# find /boot/ -type f
    
  • 高级使用:处理查找的内容

  • 命令格式:find [范围] [条件] -exec 处理命令 {} ;

    • -exec
    • 示例
    [root@localhost ~]# find /boot/ -type f  -exec cp {} /opt/ \;
    
    [root@localhost ~]# find /opt/ -type f  -exec rm -rf  {}  \;
    [root@localhost ~]# ls /opt/
    

二、Linux软件包管理

  • 常见的软件包
    • Red Hat系列 : rpm软件包
    • Debian系列 : deb软件包
    • 源代码软件包 :通常以 .tar.gz、.tar.bz2 格式的压缩包提供,包含程序的原始代码文件
    • 绿色版软件 :免安装

2.1、rpm 命令

2.1.1、查询已软件的软件

  • 命令格式: rpm -q[子选项] [软件名称]

  • 常用的子选项

    • -qa:列出已安装的所有软件包
    • -qi :查看指定软件的详细信息
    • -ql:查看指定软件的文件安装清单
    [root@localhost ~]# rpm -q firefox
    [root@localhost ~]# rpm -qi firefox
    [root@localhost ~]# rpm -ql firefox
    

2.1.2、查询目录或文件是由那个RPM包产生的

  • 命令格式 :rpm -qf [文件路径]…

    • 即使目标被删除也可以查询
    [root@localhost ~]# rpm -qf /etc/passwd
    

2.1.3、查询未安装的软件包信息

  • 命令格式:rpm -q[子选项] [RPM包文件路径]

  • 常用的子选项

    • -qpi:查看指定软件的详细信息
    • -qpl:查看指定软件的文件安装清单
    [root@localhost ~]# rpm -qpi /mydvd/Packages/httpd-2.4.6-80.el7.centos.x86_64.rpm 
    
    [root@localhost ~]# rpm -qpl /mydvd/Packages/httpd-2.4.6-80.el7.centos.x86_64.rpm 
    

2.1.4、安装rpm包

  • 命令格式: rpm -i RPM软件包路径

  • 辅助选项

    • -v : 显示安装细节信息
    • -h : 显示安装进度
    • –force : 强制安装、覆盖安装
    • –test : 测试安装,不做真实安装动作
    [root@localhost ~]# rpm -q httpd			//查询是否安装
    
    [root@localhost ~]# rpm -ivh  /mydvd/Packages/httpd-2.4.6-80.el7.centos.x86_64.rpm
    
  • 恢复被删除的程序

[root@localhost ~]# which hostname
/usr/bin/hostname
[root@localhost ~]# rm -rf /usr/bin/hostname
[root@localhost ~]# rpm -qf /usr/bin/hostname
hostname-3.13-3.el7.x86_64
[root@localhost ~]# rpm -ivh --force /mydvd/Packages/hostname-3.13-3.el7.x86_64.rpm 

2.1.5、卸载软件

  • 命令格式: rpm -e 软件名
[root@localhost ~]# rpm -e httpd
[root@localhost ~]# rpm -q httpd
未安装软件包 httpd 

2.1.6、导入红帽签名信息

  • 命令格式: rpm --import 签名信息文件存放路径
[root@localhost ~]# rpm --import /mydvd/RPM-GPG-KEY-CentOS-7

2.2、yum仓库

  • 基于RPM包构建的软件更新机制

  • 自动解决软件包依赖关系

  • 所有软件包由集中的YUM软件仓库提供

2.2.1、构建本地的yum仓库

[root@localhost ~]# mkdir /etc/yum.repos.d/repo_bak
[root@localhost ~]# mv /etc/yum.repos.d/*.repo /etc/yum.repos.d/repo_bak
[root@localhost ~]# vim /etc/yum.repos.d/dvd.repo
[root@localhost ~]# cat /etc/yum.repos.d/dvd.repo
[dvd]                       //仓库的标识
name=dvd.repo               //仓库的描述信息
baseurl=file:///dvd         //仓库在哪里,file://代表本机
enabled=1                   //是否启用本文件
gpgcheck=0 					//是否检测红帽签名
#gpgkey= 签名文件路径         //gpgcheck=0 gpgkey不需要写
    
[root@localhost ~]# yum repolist

2.2.2、使用yum安装软件

[root@localhost ~]# yum -y install httpd

2.2.3、使用yum卸载软件

[root@localhost ~]# yum -y remove httpd

2.2.4、yum 常用操作

  • yum 查询
[root@localhost ~]# yum list ftp		//查询软件

[root@localhost ~]# yum provides ftp	
//查询提供ftp命令的软件包,也可以查询文件由那个软件包提供

[root@localhost ~]# yum search ftp		//查询与ftp有关的软件包
  • yum 缓存
[root@localhost ~]# yum makecache 		//手动建立缓存

[root@localhost ~]# yum clean all		//清楚缓存

2.2.5、mount挂载操作

  • 让目录成为设备的访问点

  • 以光驱设备为例。

[root@localhost ~]# ls -l /dev/cdrom 
lrwxrwxrwx. 1 root root 3 6月   8 15:17 /dev/cdrom -> sr0
	
[root@localhost ~]# mkdir /dvd				//创建挂载点
[root@localhost ~]# mount /dev/cdrom /dvd	

[root@localhost ~]# df -ah | grep dvd
/dev/sr0                 8.8G  8.8G     0  100% /dvd
  • 卸载操作
[root@localhost ~]# umount /dvd/
[root@localhost ~]# df -ah | grep dvd

三、用户和组管理

3.1、用户管理

  • 用户的标识: UID

  • 管理员用户 root 的UID 为0 ; 普通用户的UID从1000开始。

  • 一个用户必须属于一个组,在创建用户的用时,也会创建一个与这个用户相对应得基本组。

  • /etc/passwd,保存用户帐号的基本信息

    • 每个用户记录一行,以:分割为7个字段
    [root@localhost ~]# head -1 /etc/passwd
    root:x:0:0:root:/root:/bin/bash
    

    用户名:密码占位符:用户的UID:基本组的GID:描述信息:家目录:解释器

  • /etc/passwd,保存用户密码/有效期等信息

    • 每个用户记录一行,以:分割为9个字段
    [root@localhost ~]# grep root /etc/shadow
    root:$6$Jw6.2w9W$NSXSyOBuR.afacfARXMyylkpvhb1X847sSmeeP15pAZo8JhGbBlaaYCBWh9U/SIHoTvUctpOqK2deERW8R/Sh.:18421:0:99999:7:::
    

    字段1:用户帐号的名称
    字段2:加密后的密码字符串
    字段3:上次修改密码的时间(上一次修改密码的时间:从1970-1-1到达上一次修改密码的时间经历的天数)
    字段4:密码的最短有效天数,默认0
    字段5:密码的最长有效天数,默认99999
    字段6:密码过期前的警告天数,默认7
    字段7:密码过期后多少天禁用此用户账号
    字段8:帐号失效时间,默认值为空
    字段9:保留字段(未使用)

  • 用户初始配置文件

    • 新建用户时,根据 /etc/skel 模板目录复制

3.1.1、创建用户

  • useradd 命令

    • 命令格式: useradd [选项]… 用户名

    • 常用选项

      • -u:指定 UID 标记号
      [root@localhost ~]# useradd -u 2005 nsd01
      [root@localhost ~]# id nsd01
      uid=2005(nsd01) gid=2005(nsd01)=2005(nsd01)
      
      • -d:指定宿主目录(家目录),缺省为 /home/用户名
      [root@localhost ~]# useradd -d /opt/nsd02 nsd02
      [root@localhost ~]# ls -ld /opt/nsd02/
      drwx------. 3 nsd02 nsd02 78 6月   8 15:56 /opt/nsd02/
      
      • -G:指定所属的附加组
      [root@localhost ~]# useradd -G nsd2005 nsd03
      [root@localhost ~]# id nsd03
      uid=2007(nsd03) gid=2008(nsd03)=2008(nsd03),2007(nsd2005)
      
      • -s:指定用户的登录解释器
      [root@localhost ~]# useradd -s /sbin/nologin nsd04
      [root@localhost ~]# su - nsd04
      This account is currently not available.		//次账户目前不可用
      

3.1.2、修改用户属性

  • usermod 命令

    • 命令格式: usermod [选项]… 用户名

    • 常用的选线:

      • -u:用户id
      [root@localhost ~]# id nsd01
      uid=2005(nsd01) gid=2005(nsd01)=2005(nsd01)
          
      [root@localhost ~]# usermod -u 3000 nsd01
      [root@localhost ~]# id nsd01
      uid=3000(nsd01) gid=2005(nsd01)=2005(nsd01)
      
      • -s:登录解释器
      [root@localhost ~]# cat /etc/passwd | grep nsd04
      nsd04:x:2008:2009::/home/nsd04:/sbin/nologin
      
      [root@localhost ~]# usermod -s /bin/bash nsd04
      [root@localhost ~]# cat /etc/passwd | grep nsd04
      nsd04:x:2008:2009::/home/nsd04:/bin/bash
      
      • -l:更改用户帐号的登录名称
      [root@localhost ~]# id nsd100
      id: nsd100: no such user
      
      [root@localhost ~]# usermod -l nsd100 nsd01
      
      [root@localhost ~]# id nsd01
      id: nsd01: no such user
      [root@localhost ~]# id nsd100
      uid=3000(nsd100) gid=2005(nsd01)=2005(nsd01)
      
      • -G:附加组 //重置附加组
      [root@localhost ~]# id nsd100
      uid=3000(nsd100) gid=2005(nsd01)=2005(nsd01)
      [root@localhost ~]# groupadd test1
      groupadd:“test1”组已存在
      
      [root@localhost ~]# usermod -G test1 nsd100
      [root@localhost ~]# id nsd100
      uid=3000(nsd100) gid=2005(nsd01)=2005(nsd01),1000(test1)
      
      • -d:家目录路径
      [root@localhost ~]# cd ~nsd100
      [root@localhost nsd01]# pwd
      /home/nsd01
      
      [root@localhost nsd01]# usermod -d /opt/nsd100 nsd100
      
      [root@localhost nsd01]# cd ~nsd100
      -bash: cd: /opt/nsd100: 没有那个文件或目录
      
      [root@localhost nsd01]# mkdir /opt/nsd100
      [root@localhost nsd01]# cd ~nsd100
      [root@localhost nsd100]# pwd
      /opt/nsd100
      [root@localhost nsd100]# ls -ld /opt/nsd100
      drwxr-xr-x. 2 root root 6 6月   8 16:08 /opt/nsd100
      

3.1.3、给用户设置密码

  • passwd 命令
    • 命令格式: passwd [选项]… 用户名
[root@localhost ~]# passwd 				//直接使用passwd可修改当前登录用户的密码
更改用户 root 的密码 。
新的 密码:
无效的密码: 密码少于 8 个字符
重新输入新的 密码:
passwd:所有的身份验证令牌已经成功更新。
  • 取消交互式设置密码
[root@localhost ~]# echo 123456 | passwd --stdin root
更改用户 root 的密码 。
passwd:所有的身份验证令牌已经成功更新。

3.1.4、删除用户

  • userdel 命令

    • 命令格式: userdel [-r] 用户名

    • 常用选项

      • -r 连同家目录/用户邮件一起删除
      [root@localhost ~]# userdel -r nsd02
      [root@localhost ~]# userdel -r nsd03
      [root@localhost ~]# userdel -r nsd100
      userdel:/opt/nsd100 并不属于 nsd100,所以不会删除
      

3.2、组管理

  • /etc/group,保存组帐号的基本信息

    • 每个组记录一行,以:分割为4个字段
    [root@localhost ~]# groupadd nsd2005
    groupadd:“nsd2005”组已存在
    [root@localhost ~]# grep nsd2005 /etc/group
    nsd2005:x:2007:
    

    组名:组的密码占位符:GID:组的成员列表

3.2.1、创建组

  • groupadd 命令

    • 命令格式: groupadd [选项] 组
    [root@localhost ~]# groupadd nsd2005
    

3.2.2、管理组成员

  • gpasswd 命令

    • 命令格式: gpasswd [选项]… 组名

    • 常用选项

      • -a 添加组成员,一次一个
      [root@localhost ~]# useradd haha
      [root@localhost ~]# gpasswd -a haha nsd2005
      
      • -d 删除组成员,一次一个
      [root@localhost ~]# gpasswd -d haha nsd2005
      正在将用户“haha”从“nsd2005”组中删除
      
      • -M 定义组成员用户列表,可设置多个
    • 覆盖之前,重定义

      [root@localhost ~]# gpasswd -M haha,xixi,hehe nsd2005
      [root@localhost ~]# grep nsd2005 /etc/group
      nsd2005:x:2007:haha,xixi,hehe
      
    
- -A    定义组管理员列表,可定义多个
      - 覆盖之前,重定义
    
    ```shell
    [root@localhost ~]# gpasswd -A www1 nsd2005
    
    [root@localhost ~]# su - haha
    上一次登录:一 6月  8 16:40:36 CST 2020pts/0 上
    [haha@localhost ~]$ gpasswd -d haha nsd2005
    gpasswd:没有权限。
    
    [root@localhost ~]# su - www1
    [www1@localhost ~]$ gpasswd -d hah nsd2005
    正在将用户“hah”从“nsd2005”组中删除
    gpasswd:用户“hah”不是“nsd2005”的成员
    ```

### 3.2.3、删除组

- groupdel   命令

  - 命令格式: groupdel   组名
  - 删除的组不能是用户的基本组

  ```shell
  [root@localhost ~]# groupdel nsd2005
  [root@localhost ~]# grep nsd2005 /etc/group

四、权限管理

4.1、基本权限和归属

  • 基本权限:

    • 读 : r (read)
    • 写 : w (write)
    • 执行 : x (excute)
  • 归属关系:

    • 所有者 : u (user)
    • 所属组 : g (group)
    • 其他用户 : o (other)
    [root@localhost ~]# ls -l /etc/passwd
    -rw-r--r--. 1 root root 2635 6月   5 19:04 /etc/passwd
    权限  硬链接数  属主  属组   大小   最后修改时间   文件名
    
    • -rw-r–r--
      • 最前面的 - 表示 文件类型是普通文件(d,表示目录,l,表示链接文件)
      • 第二到第四个字符 rw- 表示属主(所有者)具有可读可写的权限
      • 第五到第七个字符 r– 表示属组(所属组)具有可读的权限
      • 第八到第十个字符 r– 表示其他人具有可读的权限

4.2、修改权限

  • chmod命令
    • 命令格式1:chmod [ugoa] [±=] 文件
    • 命令格式2: chmod [nnn] 文件
    • 常用选项
      • -R 递归修改权限
    • 权限的8进制数表示
      • r = 4
      • w = 2
      • x = 1
[root@localhost ~]# touch 1.txt
[root@localhost ~]# ls -l 1.txt
-rw-r--r--. 1 root root 0 6月   8 16:51 1.txt
[root@localhost ~]# chmod a+x 1.txt
[root@localhost ~]# ls -l 1.txt
-rwxr-xr-x. 1 root root 0 6月   8 16:51 1.txt

[root@localhost ~]# chmod 777 1.txt
[root@localhost ~]# ls -l 1.txt
-rwxrwxrwx. 1 root root 0 6月   8 16:51 1.txt

4.3、修改归属关系

  • chown 命令
    • 命令格式1: chown 属主 文件
    • 命令格式2: chown 属主:属组 文件
    • 命令格式3: chown :属组 文件
    • 常用的选项
    • -R : 递归修改归属关系
[root@localhost ~]# useradd test1
[root@localhost ~]# mkdir -p /opt/aa/bb/cc

[root@localhost ~]# chown test1 /opt/aa/
[root@localhost ~]# ls -ld /opt/aa/
drwxr-xr-x. 3 test1 root 16 6月   8 16:59 /opt/aa/

[root@localhost ~]# chown -R test1:test1 /opt/aa/
[root@localhost ~]# ls -lR /opt/aa/

4.4、ACL策略

  • 针对个别用户,个别组设置独立的权限

  • setfacl 命令

    • 命令格式1: setfacl [选项] u:用户名:权限 文件

    • 命令格式2: setfacl [选项] g:组名:权限 文件

    • 常用选项

      • -m:定义一条ACL策略
      [root@localhost ~]# useradd dc
      [root@localhost ~]# setfacl -m u:dc:rw /opt/aa/
      
      • -x:清除指定的ACL策略
      [root@localhost ~]# setfacl -x u:dc /opt/aa/
      [root@localhost ~]# getfacl /opt/aa/
      
      • -b: 清楚所有已设置的ACL策略
      [root@localhost ~]# setfacl -b /opt/aa/
      
      • -R:递归设置ACL策略
      [root@localhost ~]# setfacl -Rm u:dc:rwx /opt/aa/
      [root@localhost ~]# getfacl /opt/aa/
      [root@localhost ~]# getfacl /opt/aa/bb/
      

4.5、附加权限

  • Set GID权限(s权限)

    • 使用方式:chmod g+s 目标目录
      • 占用属组(Group)的 x 位
      • 显示为 s 或 S,取决于属组是否有 x 权限
      • 对目录有效
      • 在一个具有SGID权限的目录下,新建的文档会自动继承此目录的属组身份
  • Set UID

    • 使用方式:chmod u+s 目标目录
    • 占用属主的x位
      • 显示为s或S,取决于属主是否有x权限(有x权限,就是s。没有就是S)
      • 仅对可执行的程序有意义
      • 当其他用户执行带SUID标记的程序时,具有此程序属主的身份和相应权限
  • 粘滞位,sticky Bit权限(t权限)

    • 使用方式:chmod o+t 目标目录
    • 占用其他人的x位
    • 显示为t或T,取决于其他人是否有x权限(有x权限,就是s。没有就是S)
    • 适用于目录,用来限制用户滥用写入权限、

•Set GID权限
–占用属组(Group)的 x 位
–显示为 s 或 S,取决于属组是否有 x 权限
–对目录有效
–在一个具有SGID权限的目录下,新建的文档会自动继承此目录的属组身份

五、磁盘管理

磁盘是任何系统中存储文件和数据的重要载体。是必不可缺的。无论是Windows还是Linux在安装系统时,必须先有分区来做这个载体。

在Linux系统中主要使用的磁盘工具是fdisk和parted两种。

[root@localhost ~]# lsblk 			//列出当前系统识别到的硬盘
NAME            MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sda               8:0    0   20G  0 disk 
├─sda1            8:1    0    1G  0 part /boot
└─sda2            8:2    0   19G  0 part 
  ├─centos-root 253:0    0   17G  0 lvm  /
  └─centos-swap 253:1    0    2G  0 lvm  [SWAP]
sdb               8:16   0   20G  0 disk 
  • 分区模式:MBR和GPT

    • MBR/msdos分区模式

      • 分区类型:主分区、扩展分区、逻辑分区
    • 最多只能有4个主分区

    • 扩展分区可以没有,至多有一个

    • 1~4个主分区,或者 3个主分区+1个扩展分区(n个逻辑分区)

    • 最大支持容量为 2.2TB 的磁盘

    • 扩展分区不能格式化,空间不能直接存储数据

    • 可以用于存储数据的分区:主分区与逻辑分区

  • GPT分区模式

    • 全局唯一标识分区表
    • 突破固定大小64字节的分区表限制
      • 最多可支持128个主分区,最大支持18EB容量
    • 1 EB = 1024 PB = 1024 x 1024 TB

5.1、fdisk 分区工具

  • 命令格式1:fdisk [选项] <磁盘> //更改分区表
  • 命令格式2:fdisk [选项] -l <磁盘> //列出分区表
[root@localhost ~]# fdisk /dev/sdb
  • 进入fdisk交互模式
    • 常用的交互指令
      • m 列出指令帮助
      • p 查看现有的分区表(存放分区信息的表格)
      • n 新建分区
      • d 删除分区
      • q 放弃更改并退出
      • w 保存更改并退出
命令(输入 m 获取帮助):n			//新建分区
Partition type:
   p   primary (0 primary, 0 extended, 4 free)		//主分区
   e   extended										//扩展分区
Select (default p): 
Using default response p
分区号 (1-4,默认 1):
起始 扇区 (2048-41943039,默认为 2048):
将使用默认值 2048
Last 扇区, +扇区 or +size{K,M,G} (2048-41943039,默认为 41943039):+1G
分区 1 已设置为 Linux 类型,大小设为 1 GiB

命令(输入 m 获取帮助):n
Partition type:
   p   primary (1 primary, 0 extended, 3 free)
   e   extended
Select (default p): 
Using default response p
分区号 (2-4,默认 2):
起始 扇区 (2099200-41943039,默认为 2099200):
将使用默认值 2099200
Last 扇区, +扇区 or +size{K,M,G} (2099200-41943039,默认为 41943039):+5G
分区 2 已设置为 Linux 类型,大小设为 5 GiB

命令(输入 m 获取帮助):p

磁盘 /dev/sdb:21.5 GB, 21474836480 字节,41943040 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:dos
磁盘标识符:0x2b679b16

   设备 Boot      Start         End      Blocks   Id  System
/dev/sdb1            2048     2099199     1048576   83  Linux
/dev/sdb2         2099200    12584959     5242880   83  Linux

5.2、格式化

  • 格式化:赋予空间文件系统的过程

    • 文件系统:数据在空间中存放的规则

    [root@localhost ~]# mkfs.
    mkfs.btrfs mkfs.ext2 mkfs.ext4 mkfs.minix mkfs.vfat
    mkfs.cramfs mkfs.ext3 mkfs.fat mkfs.msdos mkfs.xfs

    
    ```shell
    [root@localhost ~]# mkfs -t 
    btrfs   ext2    ext4    minix   vfat    
    cramfs  ext3    fat     msdos   xfs 
    
  • 格式化分区

[root@localhost ~]# mkfs.ext4 /dev/sdb1

[root@localhost ~]# mkfs -t ext4 /dev/sdb1

[root@localhost ~]# blkid /dev/sdb1
/dev/sdb1: UUID="ae37b440-69ec-47ef-b617-02807f48496f" TYPE="ext4"
  • 刷新分区表
[root@localhost ~]# partprobe

5.3、挂载使用分区

  • 开机自动挂载/etc/fstab
[root@localhost ~]# mkdir /mypart1
[root@localhost ~]# vim /etc/fstab
/dev/sdb1 /mypart1  ext4  defaults 0 0 
[root@localhost ~]# mount -a
[root@localhost ~]# df -h  | grep mypart1
/dev/sdb1                976M  2.6M  907M    1% /mypart1
  • /etc/fstab

/dev/sdb1 /mypart1 ext4 defaults 0 0

设备名称 挂载点 文件系统 参数 备份标记 检测顺序

  • 参数
Async/sync 设置是否为同步方式运行,默认为async
auto/noauto 当下载mount -a 的命令时,此文件系统是否被主动挂载。默认为auto
rw/ro 是否以以只读或者读写模式挂载
exec/noexec 限制此文件系统内是否能够进行"执行"的操作
user/nouser 是否允许用户使用mount命令挂载
suid/nosuid 是否允许SUID的存在
Usrquota 启动文件系统支持磁盘配额模式
Grpquota 启动文件系统对群组磁盘配额模式的支持
Defaults 同时具有rw,suid,dev,exec,auto,nouser,async等默认参数的设置
  • 备份标记

    • 能否被dump备份命令作用
    • 但是现在有比dump更好的备份方式
  • 是否检验扇区

    • 开机的过程中,系统默认会以fsck检验我们系统是否为完整
    0 不要检验
    1 最早检验(一般根目录会选择)
    2 1级别检验完成之后进行检验

5.4、parted 分区工具

  • parted交互模式管理分区
[root@localhost ~]# parted /dev/sdb
(parted) mktable gpt			//指定分区模式
警告: The existing disk label on /dev/sdb will be destroyed and all
data on this disk will be lost. Do you want to continue?
//重新建立磁盘标签,磁盘中原来的数据会丢失,是否继续。      
    
是/Yes/否/No? yes

(parted) mkpart 				//建立分区
分区名称?  []? sdb1				//名称随意
文件系统类型?  [ext2]? ext4		//这里不会格式化	
起始点? 0						
结束点? 2G
警告: The resulting partition is not properly aligned for best performance.
//得到的分区没有正确对齐以获得最佳性能。                                         
    
忽略/Ignore/放弃/Cancel? Ignore

(parted) print 				//查看分区表信息
Model: VMware, VMware Virtual S (scsi)
Disk /dev/sdb: 21.5GB
Sector size (logical/physical): 512B/512B
Partition Table: gpt
Disk Flags: 

Number  Start   End     Size    File system  Name  标志
 1      17.4kB  2000MB  2000MB               sdb1

(parted) resizepart 
分区编号? 1
结束点?  [2000MB]? 4G
(parted) print
Number  Start   End     Size    File system  Name  标志
 1      17.4kB  4000MB  4000MB               sdb1

(parted) rm 1				//删除分区

5.5、交换空间

5.5.1、使用分区做交换空间

  • 在Linux系统下除了存放文件的分区以外,还需要一个Swap(交换分区)用来充当虚拟内存。

  • SWAP分区是Linux暂时存储数据的交换分区,主要用于保存物理内存上暂时不用的数据,在需要的时候调进内存。一般情况下SWAP分区应该大于或者等于物理内存大小。

  • 虚拟内存

    • 当物理内存占满了,CPU可以将内存的中数据,暂时放入交换空间中,缓解真实物理内存的压力
[root@localhost ~]# ls /dev/sdb2
/dev/sdb2
[root@localhost ~]# mkswap /dev/sdb2		//格式化交换文件
正在设置交换空间版本 1,大小 = 3905532 KiB
无标签,UUID=3802ca2f-3f92-4e8f-8092-950f163de988
[root@localhost ~]# blkid /dev/sdb2			//查看文件系统类型
/dev/sdb2: UUID="3802ca2f-3f92-4e8f-8092-950f163de988" TYPE="swap" PARTLABEL="sdb2" PARTUUID="ea9e855a-0857-4c79-826d-1f351c6da31d" 
    
[root@localhost ~]# swapon 					//查看交换空间组成
NAME      TYPE      SIZE USED PRIO
/dev/dm-1 partition   2G   0B   -1
[root@localhost ~]# swapon /dev/sdb2		//启用交换空间
[root@localhost ~]# swapon 					//查看交换空间组成
NAME      TYPE      SIZE USED PRIO
/dev/dm-1 partition   2G   0B   -1
/dev/sdb2 partition 3.7G   0B   -2

    
[root@localhost ~]# free -m 				//查看交换空间大小
              total        used        free      shared  buff/cache
Mem:            974         403         192           8         379
Swap:          5861           0        5861

[root@localhost ~]# swapoff /dev/sdb2		//停用交换分区
[root@localhost ~]# swapon 					//查看交换空间组成
NAME      TYPE      SIZE USED PRIO
/dev/dm-1 partition   2G   0B   -1
[root@localhost ~]# free - m			
              total        used        free      shared  buff/cache   available
Mem:         997956      409692      199724        8636      388540      385896
Swap:       2097148           0     2097148
  • 开机启用交换分区
[root@localhost ~]# vim /etc/fstab 
[root@localhost ~]# tail -1 /etc/fstab
/dev/sdb2 swap  swap defaults 0 0
[root@localhost ~]# swapon -a
[root@localhost ~]# swapon 
NAME      TYPE      SIZE USED PRIO
/dev/dm-1 partition   2G   0B   -1
/dev/sdb2 partition 3.7G   0B   -2

5.5.2、使用文件所占用的硬盘空间,充当交换空间

  • Linux中的虚拟设备

    • /dev/zero 设备产生无意义数据
      • “零”设备,可以无限的提供空字符(0x00,ASCII代码NUL)。
      • 常用来生成一个特定大小的文件。
    • /dev/null
      • “空”设备,也有人称它为黑洞。任何输入到这个“设备”的数据都将被直接丢弃。
      • 最常用的用法是把不需要的输出重定向到这个文件
    • /dev/random和/dev/urandom
      • 随机数设备,提供不间断的随机字节流。
      • 二者的区别是/dev/random产生随机数据依赖系统中断,当系统中断不足时,/dev/random设备会“挂起”,因而产生数据速度较慢,但随机性好;
  • 建立一个大文件

    • dd命令
      • 命令格式: if=输入文件名 of=输出文件名 bs=块大小 count=块数
[root@localhost ~]# dd if=/dev/zero of=/opt/swap.txt bs=1M  count=2048
记录了2048+0 的读入
记录了2048+0 的写出
2147483648字节(2.1 GB)已复制,13.3674 秒,161 MB/秒

[root@localhost ~]# du -sh /opt/swap.txt 
2.0G	/opt/swap.txt
  • 利用文件制作交换空间
[root@localhost ~]# mkswap /opt/swap.txt 
正在设置交换空间版本 1,大小 = 2097148 KiB
无标签,UUID=ca89ca53-13c1-418a-b04d-2fbeba7ea408
[root@localhost ~]# swapon /opt/swap.txt
swapon: /opt/swap.txt:不安全的权限 0644,建议使用 0600。
[root@localhost ~]# swapon
NAME          TYPE      SIZE  USED PRIO
/dev/dm-1     partition   2G 66.3M   -1
/opt/swap.txt file        2G    0B   -2

5.6、逻辑卷管理

LVM是Linux操作系统中对磁盘分区进行管理的一种机制。

是建立在磁盘和分区之上的一个逻辑层,可以提高磁盘分区管理的灵活性。

最重要的三个概念

  • 物理卷(PV,physical Volume)
  • 卷组(VG,Volume group)
  • 逻辑卷(LV,logical Volumes)

环境准备

  • 新添加两块磁盘
  • 使用fdisk分区工具创建几个分区
[root@localhost ~]# lsblk 
NAME            MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sda               8:0    0   20G  0 disk 
├─sda1            8:1    0    1G  0 part /boot
└─sda2            8:2    0   19G  0 part 
  ├─centos-root 253:0    0   17G  0 lvm  /
  └─centos-swap 253:1    0    2G  0 lvm  [SWAP]
sdb               8:16   0   20G  0 disk 
├─sdb1            8:17   0   10G  0 part 
├─sdb2            8:18   0    5G  0 part 
├─sdb3            8:19   0    3G  0 part 
└─sdb4            8:20   0    2G  0 part 
sdc               8:32   0   20G  0 disk 
├─sdc1            8:33   0   10G  0 part 
└─sdc2            8:34   0   10G  0 part 

5.6.1、物理卷管理

物理卷就是指磁盘,磁盘分区或从逻辑上和磁盘分区具有同样功能的设备(如RAID),是LVM的基本存储逻辑块,但和基本的物理存储介质(如分区、磁盘等)比较,却包含有和LVM相关的管理参数。

每一个物理卷被划分为若干个PE(physical Extents)。PE的大小默认是4MB。

(创建卷组的时候就会直接将对应的分区创建为物理卷)

5.6.1.1、添加物理卷

[root@localhost ~]# pvcreate /dev/sdb1  /dev/sdc1
  Physical volume "/dev/sdb1" successfully created.
  Physical volume "/dev/sdc1" successfully created.

5.6.1.2、查看物理卷

可以看到刚刚被创建完成的物理卷/dev/sdb1 和/dev/sdc1以及安装系统是自动创建的/dev/sda2

[root@localhost ~]# pvdisplay 
  --- Physical volume ---
  PV Name               /dev/sda2
  VG Name               centos
  PV Size               <19.00 GiB / not usable 3.00 MiB
  Allocatable           yes (but full)
  PE Size               4.00 MiB
  Total PE              4863
  Free PE               0
  Allocated PE          4863
  PV UUID               ETpx0V-4iUA-ZzXt-BceZ-ZmSM-DQAN-5F0VAG
   
  "/dev/sdb1" is a new physical volume of "10.00 GiB"
  --- NEW Physical volume ---
  PV Name               /dev/sdb1
  VG Name               
  PV Size               10.00 GiB
  Allocatable           NO
  PE Size               0   
  Total PE              0
  Free PE               0
  Allocated PE          0
  PV UUID               fphv7f-5zXj-NYdk-0e3e-1JXP-d8jR-kwRCi0
   
  "/dev/sdc1" is a new physical volume of "10.00 GiB"
  --- NEW Physical volume ---
  PV Name               /dev/sdc1
  VG Name               
  PV Size               10.00 GiB
  Allocatable           NO
  PE Size               0   
  Total PE              0
  Free PE               0
  Allocated PE          0
  PV UUID               8ljhmv-sH3W-OZIT-G9y3-AEKf-mSkT-eOeBbI

5.6.1.3、删除物理卷

不需要的物理卷可以删除,但是已经属于某个卷组的物理卷删除会报错

[root@localhost ~]# pvremove /dev/sdc1
  Labels on physical volume "/dev/sdc1" successfully wiped.
[root@localhost ~]# pvdisplay 

5.6.2、卷组管理

卷组可以由一个或者多个物理卷组成,一个卷组可以创建多个逻辑卷。当卷组空间不足时,可以往卷组中添加新的物理卷。

(创建卷组的时候就会直接将对应的分区创建为物理卷)

5.6.2.1、添加卷组vg0

创建一个名字叫做vg0的卷组

[root@localhost ~]# vgcreate vg0  /dev/sdb1
  Volume group "vg0" successfully created

5.6.2.2、扩展卷组vg0的容量

[root@localhost ~]# vgextend vg0 /dev/sdb2
  Physical volume "/dev/sdb2" successfully created.		//往卷组中添加新的物理卷时,会将它自动创建为物理卷。
  Volume group "vg0" successfully extended

5.6.2.3、查看卷组

[root@localhost ~]# vgdisplay 	//不指定卷组名字则查看全部
  --- Volume group ---
  VG Name               centos
  System ID             
  Format                lvm2
  Metadata Areas        1
  Metadata Sequence No  3
  VG Access             read/write
  VG Status             resizable
  MAX LV                0
  Cur LV                2
  Open LV               2
  Max PV                0
  Cur PV                1
  Act PV                1
  VG Size               <19.00 GiB
  PE Size               4.00 MiB
  Total PE              4863
  Alloc PE / Size       4863 / <19.00 GiB
  Free  PE / Size       0 / 0   
  VG UUID               DfeNcj-tPls-WVXD-UUCH-9Rej-b7ai-sAhF2a

  --- Volume group ---
  VG Name               vg0
  System ID             
  Format                lvm2
  Metadata Areas        2
  Metadata Sequence No  2
  VG Access             read/write
  VG Status             resizable
  MAX LV                0
  Cur LV                0
  Open LV               0
  Max PV                0
  Cur PV                2
  Act PV                2
  VG Size               14.99 GiB
  PE Size               4.00 MiB
  Total PE              3838
  Alloc PE / Size       0 / 0   
  Free  PE / Size       3838 / 14.99 GiB
  VG UUID               3ODNGU-R4Qj-4pF0-FBag-9EGc-7mgi-2g4jAr
  
  
[root@localhost ~]# vgs

5.6.2.4、从卷组中删除物理卷

[root@localhost ~]# vgreduce vg0 /dev/sdb2
  Removed "/dev/sdb2" from volume group "vg0"
[root@localhost ~]# vgdisplay vg0
  --- Volume group ---
  VG Name               vg0
  System ID             
  Format                lvm2
  Metadata Areas        1
  Metadata Sequence No  3
  VG Access             read/write
  VG Status             resizable
  MAX LV                0
  Cur LV                0
  Open LV               0
  Max PV                0
  Cur PV                1
  Act PV                1
  VG Size               <10.00 GiB
  PE Size               4.00 MiB
  Total PE              2559
  Alloc PE / Size       0 / 0   
  Free  PE / Size       2559 / <10.00 GiB
  VG UUID               3ODNGU-R4Qj-4pF0-FBag-9EGc-7mgi-2g4jAr

5.6.2.5、删除卷组

[root@localhost ~]# vgremove vg0 
  Volume group "vg0" successfully removed
[root@localhost ~]# vgdisplay vg0
  Volume group "vg0" not found
  Cannot process volume group vg0

5.6.3、逻辑卷管理

逻辑卷基于卷组。

逻辑卷和普通的磁盘分区非常的类似,在逻辑卷上也同样可以建立文件系统。

逻辑卷被划分为LE(logical Extents)的基本单位。在同一个卷组中LE和PE的大小是相同的,并且一 一对应。

环境准备

  • 新建卷组vg0
  • 将磁盘分区分区/dev/sdb1、/dev/sdb2、/dev/sdb3、/dev/sdb4都加入到vg0里面。
[root@localhost ~]# vgcreate vg0 /dev/sdb1 /dev/sdb2 /dev/sdb3 /dev/sdb4
  Volume group "vg0" successfully created
[root@localhost ~]# vgdisplay vg0
  --- Volume group ---
  VG Name               vg0
  System ID             
  Format                lvm2
  Metadata Areas        4
  Metadata Sequence No  1
  VG Access             read/write
  VG Status             resizable
  MAX LV                0
  Cur LV                0
  Open LV               0
  Max PV                0
  Cur PV                4
  Act PV                4
  VG Size               19.98 GiB
  PE Size               4.00 MiB
  Total PE              5116
  Alloc PE / Size       0 / 0   
  Free  PE / Size       5116 / 19.98 GiB
  VG UUID               CvjdYK-0ZOB-9nQS-sWzk-5twJ-6fdi-E8Tv2G

5.6.3.1、添加逻辑卷

在卷组vg0中,创建逻辑卷lv0,大小为1111MB。

[root@localhost ~]# lvcreate -L 1111M -n lv0  vg0
  Rounding up size to full physical extent <1.09 GiB
  Logical volume "lv0" created.

在卷组vg0中,创建逻辑卷lv1,大小为1000个PE。

[root@localhost ~]# lvcreate -l 1000 -n lv1  vg0
  Logical volume "lv1" created.

在卷组和逻辑卷创建完成后,会在/dev目录下创建于其名字对应的目录。

[root@localhost ~]# ls -l /dev/vg0
total 0
lrwxrwxrwx. 1 root root 7 Apr 24 16:14 lv0 -> ../dm-2
lrwxrwxrwx. 1 root root 7 Apr 24 16:16 lv1 -> ../dm-3

5.6.3.2、查看逻辑卷

[root@localhost ~]# lvdisplay /dev/vg0/lv0		//不指定逻辑卷名称,则查看全部
  --- Logical volume ---
  LV Path                /dev/vg0/lv0
  LV Name                lv0
  VG Name                vg0
  LV UUID                vNdfVn-6ktv-dOwq-lTpq-yJUg-r8du-hMMtdO
  LV Write Access        read/write
  LV Creation host, time localhost.localdomain, 2020-04-24 16:14:04 -0400
  LV Status              available
  # open                 0
  LV Size                <1.09 GiB
  Current LE             278
  Segments               1
  Allocation             inherit
  Read ahead sectors     auto
  - currently set to     8192
  Block device           253:2
  
[root@localhost ~]# lvs

5.6.3.3、更改逻辑卷大小

不建议减少逻辑卷的空间,因为可能会导致逻辑卷上的文件系统中的数据丢失。

将lv0的大小增加为1500MB。

[root@localhost ~]# lvresize -L 1500M /dev/vg0/lv0
  Size of logical volume vg0/lv0 changed from <1.09 GiB (278 extents) to 1.46 GiB (375 extents).
  Logical volume vg0/lv0 successfully resized.
[root@localhost ~]# lvdisplay /dev/vg0/lv0
  --- Logical volume ---
  LV Path                /dev/vg0/lv0
  LV Name                lv0
  VG Name                vg0
  LV UUID                vNdfVn-6ktv-dOwq-lTpq-yJUg-r8du-hMMtdO
  LV Write Access        read/write
  LV Creation host, time localhost.localdomain, 2020-04-24 16:14:04 -0400
  LV Status              available
  # open                 0
  LV Size                1.46 GiB
  Current LE             375
  Segments               2
  Allocation             inherit
  Read ahead sectors     auto
  - currently set to     8192
  Block device           253:2
  • 刷新文件系统

​ xfs_growfs:扩展xfs文件系统

​ resize2fs:扩展ext4文件系统

[root@localhost ~]# xfs_growfs   逻辑卷设备

[root@localhost ~]# resize2fs	逻辑卷设备

5.6.3.4、删除逻辑卷

删除逻辑卷lv1

[root@localhost ~]# lvremove /dev/vg0/lv1
Do you really want to remove active logical volume vg0/lv1? [y/n]: y
  Logical volume "lv1" successfully removed
[root@localhost ~]# lvdisplay /dev/vg0/lv1
  Failed to find logical volume "vg0/lv1"

5.7、RAID磁盘阵列

硬RAID:通过RAID卡管理

软RAID:通过软件来管理

  • Redundant Array of Independent Disks 独立磁盘冗余阵列

  • 其实就是用多个独立的磁盘组成在一起形成一个大的磁盘系统,从而实现比单块磁盘更好的存储性能和更高的可靠性。

  • 常见的RAID方案

    • RAID0(最少两块)

      • 最早出现的RAID模式,数据分条技术(Data Striping)
      • RAID 0最简单的实现方式就是将N块硬盘(最好容量相同)串联在一起形成一个大的硬盘组,在写入数据时,数据会被分为一定大小的多个区块,依次写入到磁盘中。
      • 优点:
        • 磁盘利用率是100%。
        • 较高的读写性能。
      • 缺点:
        • 一块盘坏掉,数据就会丢失。没有冗余。
    • RAID1(最少两块)

      • 磁盘镜像模式

      • 原理在一个硬盘上写入数据时会在闲置硬盘上也同时写入,生成镜像文件,在不影响性能的情况下尽可能保证可靠性。

      • 优点:

        • 高度冗余
      • 缺点:

        • 磁盘利用率50%
        • 读写性能一般
    • RAID10(最少四块)

      • 镜像加条带(先镜像,再分条)
      • 优点:
        • 高度冗余
        • 读写性能较高
      • 缺点:
        • 磁盘利用率50%
    • RAID5(最少三块)

      • 分布式独立磁盘阵列。
      • RAID 5将数据以块为单位分布在各个硬盘上。RAID 5不对数据进行备份,而是把数据和对应的奇偶校验信息存储在组成磁盘阵列的各个磁盘上,并且奇偶校验信息和与其相对应的信息存放在不同的硬盘上。
      • 当一个硬盘损坏时,系统可以根据在另一块硬盘上存放的该损坏数据相对应的奇偶校验信息来恢复数据。
      • 磁盘利用率是 n-1/n
      • 优点:
        • 读写性能比较高
      • 缺点:
        • 只允许同时损坏一块盘
    • RAID6(最少四块)

      • RAID 6除了每个硬盘上都有同级数据(也就是硬盘级)的XOR校验区外,还有一个针对每个数据块的XOR校验区,而且同样是交错存储。
      • 磁盘利用率是 n-2/n
      • 优点:
        • 冗余性能更好
        • 最多可坏两块盘
      • 缺点:
        • 写入性能降低
        • 多了一个校验区,减少了有效的存储空间

六、进程管理

  • 每个执行的任务都被称为进程(process)。

  • Linux系统中每运行一个程序都会创建一个进程。

  • 进程就是一个正在运行的程序实例。

  • 进程是一个动态的概念,可以与操作系统、其他进程以及用户进行数据交互。

  • 每个进程启动后,系统都会自动为它分配一个唯一的数值,用于标识该进程,这个数值就被称为进程号(Process ID,PID)。进程号是这个进程的唯一标识,系统也是通过进程号来管理的。

6.1、查看进程

6.1.1、查看进程树

  • pstree 命令(Processes Tree)
    • 命令格式: pstree [选项] [PID或用户名]
    • 常用命令选项
      • -a 显示完整的命令行
      • -p 列出对应的PID编号
[root@localhost ~]# pstree  
[root@localhost ~]# pstree  -p
[root@localhost ~]# pstree -a

[root@localhost ~]# pstree  lisi
bash
[root@localhost ~]# pstree  -p lisi
bash(17546)
  • systemd 上帝进程(所有进程的父进程)

6.1.2、查看进程快照

  • ps 命令 (Processes Snapshot)

    • 命令格式: ps [选项]

    • 常用选项

      • aux:
        • a 显示当前终端所有进程
        • x 当前用户在所有终端下的进程
        • u 以用户格式输出
      [root@localhost ~]# ps aux
      

      用户 进程ID 占用CPU 占用内存 虚拟内存 固定内存 终端 状态 起始状态 CPU时间 程序指令

      • -elf:
        • e 显示当前终端所有进程
        • l 以长格式显示
        • f 最完整的进程信息
      [root@localhost ~]# ps -elf
      

      输出内容中会显示PPID(父进程ID)

6.1.3、进程动态排名

  • top交互式工具
    • 命令格式: top [-d 刷新秒数] [-U 用户名]
[root@localhost ~]# top -d5
  • P 按照占用CPU进行排序
  • M 按照占用内存进行排序

6.1.4、检索进程

  • pgrep (Process Grep)

    • 命令格式 : pgrep [选项] 查询条件

    • 常用命令:

      • -l 输出进程名
      [root@localhost ~]# pgrep -l bash			//查找进程名中带有bash的
      17012 bash
      17476 bash
      17546 bash
      
      • -U 检索指定用户的进程
      [root@localhost ~]# pgrep -lU lisi			//查找用户lisi的进程
      17546 bash
      
      • -x 精确匹配完整的进程名
      [root@localhost ~]# pgrep -lx   crond		//查找进程名叫crond的
      1145 crond
      

6.2、控制进程

6.2.1、进程的前后台调度

  • 前台启动

    • 输入命令后,会占用当前的终端
  • 后台启动

    • 在命令行后加“&”,不占用当前终端
  • Ctrl+z 挂起当前进程(暂停运行转入后台)

  • jobs 命令

    • 查看后台任务列表
[root@localhost ~]# sleep 100 &
[1] 21162
[root@localhost ~]# jobs
[1]+  运行中               sleep 100 &
  • fg 命令
    • 将后台任务恢复到前台运行
[root@localhost ~]# fg 1
sleep 100

  • bg 命令
    • 激活后台被挂起任务
[root@localhost ~]# fg 1
sleep 100
^Z
[1]+  已停止               sleep 100

[root@localhost ~]# jobs
[1]+  已停止               sleep 100
[root@localhost ~]# bg 1
[1]+ sleep 100 &
[root@localhost ~]# jobs
[1]+  运行中               sleep 100 &

6.2.2、杀死进程

普通用户只能终止自己运行的进程,root用户可以终止所有。

  • Ctrl+C 结束前台进程

  • kill 命令

    • 命令格式1: kill [-9] PID
    • 命令格式2: kill [-9] %后台任务编号
    • -9 表示强制杀死
    [root@localhost ~]# sleep 100000 &
    [1] 23123
    [root@localhost ~]# jobs
    [1]+  运行中               sleep 100000 &
    [root@localhost ~]# kill 23123
    [root@localhost ~]# jobs
    [1]+  已终止               sleep 100000
    
    [root@localhost ~]# sleep 100000 &
    [1] 23168
    [root@localhost ~]# jobs
    [1]+  运行中               sleep 100000 &
    [root@localhost ~]# kill %1
    [root@localhost ~]# jobs
    [1]+  已终止               sleep 100000
    
  • killall 命令

    • 命令格式: killall [-9] 进程名
    • 命令格式: killall [-9] -u 用户名
    [root@localhost ~]# sleep 100000 &
    [1] 23300
    [root@localhost ~]# jobs
    [1]+  运行中               sleep 100000 &
    [root@localhost ~]# killall sleep
    [1]+  已终止               sleep 100000
    
  • pkill 命令

    • 命令格式: pkill 查找条件
    [root@localhost ~]# sleep 100000 &
    [1] 23363
    [root@localhost ~]# jobs
    [1]+  运行中               sleep 100000 &
    [root@localhost ~]# pkill -9 sleep
    [1]+  已杀死               sleep 100000
    

七、计划任务

  • 按照设定的时间周期性的执行某一项任务

  • 使用的软件包:cronie 、 crontabs

  • 系统服务: crond

  • 日志文件: /var/log/cron

  • crontab 命令

    • 命令格式: crontab [选项] -u 用户名
    • 常用选项
      • -e 编辑
      • -l 查看
      • -r 清除
[root@svr7 ~]# crontab -e -u root
[root@svr7 ~]# crontab -l -u root
* * * * *   date >> /opt/time.txt
[root@svr7 ~]# crontab -r -u root
[root@svr7 ~]# crontab -l -u root
no crontab for root
  • 计划任务的记录格式

    分 时 日 月 周 命令

八、Linux系统中的网络管理

8.1、修改网卡的命名规则

8.1.1、修改配置文件

  • 修改前
[root@svr7 ~]# cat -n /etc/default/grub
     1	GRUB_TIMEOUT=5
     2	GRUB_DISTRIBUTOR="$(sed 's, release .*$,,g' /etc/system-release)"
     3	GRUB_DEFAULT=saved
     4	GRUB_DISABLE_SUBMENU=true
     5	GRUB_TERMINAL_OUTPUT="console"
     6	GRUB_CMDLINE_LINUX="crashkernel=auto rd.lvm.lv=centos/root rd.lvm.lv=centos/swap rhgb quiet"
     7	GRUB_DISABLE_RECOVERY="true"

[root@svr7 ~]# nmcli connection add ifname eth0 con-name eth0 type ethernet  
连接“eth0”(b953b30d-6881-4ef4-a21f-8a572a6939ff) 已成功添加。
[root@svr7 ~]# nmcli connection show 
NAME    UUID                                  TYPE      DEVICE 
eth0    b953b30d-6881-4ef4-a21f-8a572a6939ff  ethernet  eth0   
virbr0  06a11f3d-6132-43a6-8142-92d9716e924b  bridge    virbr0 
  • 修改后
    • ​ 在第六行的末尾添加 net.ifnames=0 biosdevname=0
[root@svr7 ~]# cat -n /etc/default/grub    //grub是引导内核的程序
     1	GRUB_TIMEOUT=5
     2	GRUB_DISTRIBUTOR="$(sed 's, release .*$,,g' /etc/system-release)"
     3	GRUB_DEFAULT=saved
     4	GRUB_DISABLE_SUBMENU=true
     5	GRUB_TERMINAL_OUTPUT="console"
     6	GRUB_CMDLINE_LINUX="crashkernel=auto rd.lvm.lv=centos/root rd.lvm.lv=centos/swap rhgb quiet net.ifnames=0 biosdevname=0"
     7	GRUB_DISABLE_RECOVERY="true"
     
[root@svr7 ~]# ifconfig | head -2
eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
  • 重新生成grub配置文件
[root@svr7 ~]# grub2-mkconfig -o /boot/grub2/grub.cfg   //重新生成grub配置文件
Generating grub configuration file ...
Found linux image: /boot/vmlinuz-3.10.0-862.el7.x86_64
Found initrd image: /boot/initramfs-3.10.0-862.el7.x86_64.img
Found linux image: /boot/vmlinuz-0-rescue-e7698cd933f74608881ae839d102df88
Found initrd image: /boot/initramfs-0-rescue-e7698cd933f74608881ae839d102df88.img
done

8.1.2、删除识别错误的网络配置

[root@svr7 ~]# nmcli connection show
NAME        UUID                                  TYPE      DEVICE 
virbr0      06a11f3d-6132-43a6-8142-92d9716e924b  bridge    virbr0 
有线连接 1  cdb69c51-bfa2-315e-bbe6-099bb3e41cfe  ethernet  eth0   
ens33       d154e33c-0886-4129-808a-def0196782c5  ethernet  --   

[root@svr7 ~]# nmcli connection delete ens33 
成功删除连接 'ens33'(d154e33c-0886-4129-808a-def0196782c5)。
[root@svr7 ~]# nmcli connection delete 有线连接\ 1 
成功删除连接 '有线连接 1'(cdb69c51-bfa2-315e-bbe6-099bb3e41cfe)。

[root@svr7 ~]# nmcli connection show 
NAME    UUID                                  TYPE    DEVICE 
virbr0  06a11f3d-6132-43a6-8142-92d9716e924b  bridge  virbr0 

8.1.3、添加新的网卡名

[root@svr7 ~]# nmcli connection add ifname eth0 con-name eth0 type ethernet  
连接“eth0”(b953b30d-6881-4ef4-a21f-8a572a6939ff) 已成功添加。
[root@svr7 ~]# nmcli connection show 
NAME    UUID                                  TYPE      DEVICE 
eth0    b953b30d-6881-4ef4-a21f-8a572a6939ff  ethernet  eth0   
virbr0  06a11f3d-6132-43a6-8142-92d9716e924b  bridge    virbr0 

8.2、修改网络连接配置

[root@svr7 ~]# nmcli connection modify eth0 ipv4.method manual ipv4.addresses 192.168.1.100/24 autoconnect yes 
[root@svr7 ~]# nmcli connection up eth0 		//激活网卡

8.3、SSH

  • 默认端口是 TCP 22

  • openssh

  • 服务名称:sshd

  • 主程序: /usr/sbin/sshd (服务端)、/usr/bin/ssh (客户端)

  • 配置文件:/etc/ssh/sshd_config

    ​ /etc/ssh/ssh_config

  • SSH 无密码验证

    • 生成公钥和私钥
    • 将公钥传递给对方主机
    [root@svra ~]# ssh-keygen 				//一路回车
    Generating public/private rsa key pair.
    Enter file in which to save the key (/root/.ssh/id_rsa): 
    Created directory '/root/.ssh'.
    Enter passphrase (empty for no passphrase): 
    Enter same passphrase again: 
    Your identification has been saved in /root/.ssh/id_rsa.
    Your public key has been saved in /root/.ssh/id_rsa.pub.
    The key fingerprint is:
    SHA256:Th88OtWziD2xfQ5LERowcVaZfDlB+MKIPv9+jWpujYw [email protected]
    The key's randomart image is:
    +---[RSA 2048]----+
    |        +.oo.=oo |
    |         =  = +  |
    |         ..o.o . |
    |        ...+o..  |
    |       .S B +.   |
    |       oo* B +   |
    |        =o*o=o.o |
    |         .Eo==+ .|
    |           **o.  |
    +----[SHA256]-----+
    
    
    [root@svra ~]# ssh-copy-id [email protected]
    

8.4、scp

  • 安全复制工具

  • 基于ssh协议

  • 命令格式:scp [-r] 用户名@服务器:路径 本地路径

    ​ scp [-r] 本地路径 用户名@服务器:路径

与cp命令用法相同

九、vim编辑器

  • 命令模式
    • 行间跳转: gg 跳转到首行、G跳转到尾行
      • 扩展: ngg (n表示行号) 跳转到指定行
    • 列间跳转: ^ 跳转到行首 、 $ 跳转到行尾
      • 扩展: n| (n表示列号)
    • 复制: yy 复制一行 nyy 复制多行
    • 粘贴: p 复制到光标下面的一行, P 复制到光标的上一行
    • 删除 : dd 删除光标所在行
      • C 删除光标后的内容,与d$相同
      • d^ 删除光标前的内容
    • 文本查找:
      • /word 向后查找字符串
      • n 向下 N 向上
    • 撤销编辑
      • u 撤销最近的一次修改。长摁就相当于多次u,返回到最开始的状态
      • U 撤销对当前行的修改
      • CTRL+R 撤销前一次的撤销操作
    • 保存退出
      • ZZ
  • 末行模式
    • 保存 :w
    • 退出 :q! 放弃更改退出
    • 保存并退出 :wq
    • 另存为 :w /目标文件路径
    • 读入其它文件内容 :r 目标文件
    • 字符串替换
      • 行内替换
        • 😒/old/new 替换当前行第一个“old”
        • 😒/old/new/g 替换当前行所有的“old”
      • 区域内替换
        • :n,m s/old/new/g 替换n到m行所有的old
        • :% s/old/new/g 替换文件内所有的old
    • 显示行号:
      • :set nu | nonu 显示和不显示行号
      • :set ai|noai 启用和关闭自动缩进

十、补充的命令

  • 通配符

    • “ * ” : 任意多个字符

    • “ ? ” :任意单个字符

    • [a-z] : 连续范围内的一个

    • {a,min,max}:多个不连续的字符串,全匹配

  • less 分屏阅读工具

    • 命令格式:less 文件名…
    • 优势:支持上下键滚动
    [root@localhost ~]# less /etc/passwd     //按q可以退出
    
  • 列出CPU处理器信息

[root@localhost ~]# lscpu
  • 列出内存信息
[root@localhost ~]# cat /proc/meminfo
  • 列出当前系统的主机名称
[root@localhost ~]# hostname
  • 列出网卡信息
[root@localhost ~]# ifconfig
  • 关机:poweroff

  • 重启:reboot

  • 别名: 复杂的命令简单化

    • 查看已设置的别名

    • alias [别名名称]

    • 定义新的别名

    • alias 别名名称= ‘实际执行的命令行’

    • 取消已设置的别名

    • unalias [别名名称]

VDO

虚拟数据优化器

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章