Linux命令大全

175 阅读2分钟

基础命令——第一阶段

  1. 默认解释器:/bin/bash 用户--->解释器--->内核---->硬件 bash是所有解释器里最强大的一个

  2. mount 挂载,光盘——>光驱设备—>访问光盘的内容 删除挂载umount

    1. 光驱设备: /dev/sr0 Redhat更新为cdromsr0的快捷方式

      • 光盘---》光驱设备---》访问光盘的内容

      • 光盘镜像文件---》虚拟的光驱设备-----》访问点(目录)光盘镜像文件放入虚拟机的光驱设备

  3. 添加用户 useradd 他与 mkdir 不一样 前者是创建用户 后者是创建文件夹

    • useradd 用户名
  4. ls 查看目录

    • ls -l 文件地址 显示该文件的详细信息

    • ls -lh 提供易读的容量单位(k m)

    • ls -ld 显示目录本身(而不是内容) 的属性

    • ls -A 显示目录当中隐藏的数据

    • ls -R 递归显示目录的内容

      通配符匹配

    • ls /dev/tty* *号表示多个字符 所有的

    • ```ls /dev/tty?` `` ?只能表示一个字符(单个字符)

  5. 别名的定义:简化复杂的命令

    • 查看已设置的别名
      • -alias [别名名称]
    • 定新的别名
      • alias hn='houstname' 别名名称=‘实际执行的命令’
    • 删除别名
      • unalias 别名
    • 别名文件:
      • /root/.bashrc
  6. mv —— Move移动:源数据会消失

    • 格式:mv 原文件 目标路径
    • 使用mv命令可以实现改名的作用,目标路径最后一个文件名字就是要改的名字
  7. cp—— Copy:源数据不会消失

    • 格式:cp [选项] 源文件 目标路径
    • 常用命令选项
      • -r 当对象是是目录时加上-r
  8. 在文本文件中过滤,包含指定字符串的行

    • grep [选项] ‘字符串’ 文本文件

    • grep root /etc/passwd 这个命令的含义就是 在etc/passwd 文件下含有root的行

      默认情况下不支持通配符

      常用命令

      • -v 取反匹配
      • -i 忽略大小写
      • ^word 以字符串word开头
      • word$ 以字符串word结尾
  9. 常见的压缩格式及命令工具

    1. gz -> gzip (未来用的更多一些)
    2. .bz ->bzip2
    3. .xz ->xz
  10. tar工具的常用选项(只能打包一些静态文件)

  11. 归档压缩包:tar 【选项】 /路径/压缩包名字 /路径/源数据.......

    • ````tar -zcf /root/hahha.tar.bz2 /etc/passwd /home/ /boot/``` 表示将passwd home boot文件归案压缩为hahha文件 文件后面的.tar.bz2专业人命名规范
      • -c 创建归档 进行打包数据
      • -f: 指定包 ,必须是在所有选项的最后
      • -z、-j、-J:调用 .gz .bz2 .xz 格式的工具进行处理
  12. 释放压缩包(解包):tar [选项] /路径/压缩包名字 -C 解压路径 (-C表示解压到哪里)

    • tar -xf /root/hahha.tar.bz2 -C /nsd01/
      • -x: 释放归档
      • -f: 指定包 ,必须是在所有选项的最后
      • -C 指定解压路径
  13. tar集成备份工具

    -c:创建归档 进行打包数据

    -x: 释放归档

    -f: 指定包 ,必须是在所有选项的最后

    -z、-j、-J:调用 .gz .bz2 .xz 格式的工具进行处理

    -C 指定解压路径

  14. > 重定向 并覆盖原有内容;>> 重定向并追加内容

  15. echo 通过这个指令并结合重定向 可以在文档当中输入对应的内容 该命令是属于shell编程当中的输出命令

  16. 管道:| 前后执行条件同时执行

  17. find 精确查找——基本使用

    • -find [目录] [文件]

    • 根目录下的proc是不占用硬盘空间的,表示的是内存数据

    • 常用选项

      • -name pattern 按文件名查找,支持使用通配符*和? find /etc/ -name 'passwd'

      • -type type 按文件类型查找,可以是f (普通文件),d (目录),l(符号链接)等;find /etc/ -type l

      • -size +或- (+号是大于 -号是小于);文件大小(k、M、G);find /boot/ -size +330k

        find /boot/ -size +10k -size +100k

      • -user 查找用户创造的数据;find / -user natasha

      • -mtime 修改时间(所有的时间都是过去时间);find /root/ -mtime _90

      • 案例:find /etc/ -name '*tab' | wc -l 意思是通过在etc文件夹当中查找出来的文件数目进行统计

  18. find 查找——高级使用

    • 操作方法

      -find [范围] [条件] -exec 处理命令 {}

      find /boot/ -size +10M -exec cp {} /mnt \;

vim快捷方式

复制yy; 3yy复制光标处的一行、3行
粘贴p、P粘贴到光标处之后、之前
删除x删除光标处的单个字符
dd、3dd删除光标处的一行、3行
D(大写)从光标处删除到行尾
撤销u撤销上一步操作
文本查找/a向后查找字符串“a”
n、N跳至后/前一个结果
撤销编辑u撤销最近的一次操作
Ctrl+r取消前一次的撤销操作
保存退出ZZ(大写)保存修改屏退出
行内替换:s/root/new替换光标所在行第一个“root”
:/root/new/g替换光标所在行所有的“root”
区域内替换:1,10s/root/new/g替换第1-10行所有的“root”
:%s/root/new/g替换文件类所有的“root”

RPM、Yum软件包

  1. 虚拟机的光驱设备有没有镜像文件

  2. 挂载光驱到/mnt 命令为:mount /dev/cdrom /mnt/

  3. RPM包的一般安装位置(分散)

    文件类别默认安装位置
    普通执行程序/usr/bin /bin/
    服务器程序、管理工具/usr/sbin/、/sbin
    配置文件/etc/
    日志文件/var/log
  4. 查询某个软件是否安装rpm -q firefox

  5. 查看安装的包并统计数目rpm -qa | wc -l

  6. 模糊查询某个软件是否安装rpm -qa | grep mysql

  7. 安装软件yum 安装依赖

    1. 执行思路:运行的命令yum--->配置文件---->软件仓库

    2. 客户端(本机):指定服务端位置

      • 仓库配置:/etc/yum.repos,.d/*.repo 配置文件只能写到这,并且后缀只能是.repo
      • 错误的文件会影响正确的文件:遇到错误的文件,一般不要删除,选择给他移动到当前目录下的其它文件
    3. 将文件放在**/etc/yum.repos,.d/** 该文件下

      [nsd20]
      name=hahaxixi  #仓库的名称
      baseurl=file:///mnt  #指定服务端位置file://表示本地为服务端
      enabled=1            #本文件启用
      gpgcheck=0           #不检测红帽签名信息
      
    4. 容易出现的错误:

      • 没有挂载光驱设备 mount
      • 配置文件路径可能出现问题:查看是否放到了/etc/yum.repos.d/;配置文件一定是repo文件
      • 错误的文件,认真对照序号3的文件
    5. 卸载:yum remove [包名] yum卸载具有很强大的危险性 不要随便卸载

    6. 查询:yum provides [包名]或者yum search [包名]

    7. 如果误删程序,可以使用reinstall再装一遍;只能修复一些简单的失误;

    8. 清空yum缓存:yum clean all

    9. 展示yum相应的配置:yum repolist

    10. 查看历史命令:history 默认记录1000条命令;更改的方式是:vim /etc/profile

    11. 可以使用!加命令!cat的方式执行最近的一次使用cat的命令

    12. du命令是专门查看文件夹大小的命令 加选项-sh表示 这个文件的大小 du -sh /root

    13. 查看时间:date 修改时间:date -s '2008-10-1 12:58:55'

      • date +%Y 显示年
      • date +%m 显示月
      • date +%d 显示日期
      • date +%H 显示时
      • date +%M 显示分
      • date +%S 显示秒
      • date +%F 显示年-月-日
      • date +%R 显示时:分
    14. 软链接:

      • 优势:可以针对目录与文件制作快捷方式,支持跨分析
      • 缺点:源数据消失,快捷方式失效
      • 格式:ln -s [/路径/源数据] [/路径/快捷方式的名称]
    15. 硬链接:

      • 格式:ln [/路径/源数据] [/路径/快捷方式的名称]
      • 优势:源数据消失,快捷方式仍然有效
      • 缺点:只能针对文件制作快捷方式,不支持跨分区
    16. 归档压缩

      • 压缩:zip -r /opt/abc.zip /etc/passwd /home

      • 解压:unzip -t /opt/abc.zip -d /nsd20

用户账号、组账号

  1. 用户账号作用:
    1. 可以登陆操作系统
    2. 唯一标识:uid
    3. 不同得用户具备不同的权限,唯一标识:UID(编号从0开始的编号,默认最大60000)
    4. 管理员账号root的UID:永远为0
    5. 普通用户的UID:默认从1000开始
  2. 组账号的作用
    1. 方便管理用户
    2. 唯一表示:GID(编号从0开始的编号,默认最大60000)
    3. 原则:Linux一个用户必须至少属于一个组
    4. 组账号的分类
      • 基本组:系统创建与用户同名
      • 附加组(从属组):由管理员创建,由管理员进行加入
  3. 如何统计当前一共有多少用户:使用wc查找passwd一共有多少行wc -l passwd
  4. root:x:0:0:root:/root:/bin/bash 7个字段分别表示什么
    • 用户名:密码占位符:UID:基本组GID:用户描述信息:家目录:解释器
  5. /etc/passwd(国家的户口系统) /home/家目录(房子)
  6. 指定uid创建用户:useradd -u 1200 nsd02 指定uid为1200创建用户为nsd02
  7. 指定单独创建在附加组里面: useradd -G stugrp nsd05 指定用户属于附加组stugrp
  8. /sbin/nologin:禁止用户登录操作系统
    • useradd -s /sbin/nologin nsd10 让nsd10用户没有登录权限
  9. usermod命令
    • 修改用户;格式:usermod [选项] 用户名
    • useradd nsd12 创建用户
      • -l 更改用户账号的登录名称 usermod -l hahha12 nsd12
      • -u 用户id usermod -u 1600 hahha12
      • -d 家目录路径 usermod -d /etc/abc hahha12 只是更改配置文件(passwd)的内容
      • -s 登录解释器 usermod -s /sbin/nologin hahha12
      • -G 附加组 usermod -d /etc/abc hahha12
  10. 创建用户可以更改密码passwd [用户名]
  • 非交互式:echo 123 | passwd --stdin nsd01 在root账户下 使用该命令进行对nsd01用户设置密码
  • 该文件下:查看是否设置了密码grep hahha /etc/shadow shadow是存贮用户的管理信息
  1. /etc/skel 目录下 一般是创建用户时 home/[用户名]目录下的文件是由/etc/skel 这个文件而来
  2. 用户的删除:userdel [-r] 用户名
    • -r 宿主目录/用户邮件文件也一并删除
    • /var/spool/mail
    • useradd做了那些事情
      • /etc/passwd 增加一行信息
      • /etc/shadow 增加一行信息
      • 创建家目录
      • 创建用户的邮件文件
      • /etc/group 增加一行信息
      • /etc/gshadow 增加一行信息
  3. /etc/group,保存组账号的基本信息
    • stugrp:x:1504:nsd067
    • 组名:组密码占位符:组的GIP:组成员列表
    • 查看组:只有grep 组名 /etc/group
  4. 组管理组成员的命令gpasswd
    • 格式:gpasswd [选项] 组名
    • -a 添加组成员,每次只能加一个
    • -d 删除组成员,每次只能删除一个
    • -M 定义
    • -A 定义组管理员 gpasswd -A zhangsan tarena 该A一定是大写的A
    • 案例:gpasswd 选项 组名 组名
    • /etc/graoup是组得基本信息文件;/etc/gshadow是组的管理信息

权限管理

  1. 对于目录:

    • r读取权限:查看目录内容
    • w写入权限:修改目录的内容(可以创建、删除、改名目录的内容)
    • x执行权限:能否进入此目录里(能否访问此目录)
  2. 归属关系

    • 所有者(属主):拥有此文件/目录的用户-user
    • 所属组(属组):拥有此文件/目录的组-group
    • 其他用户:除所有者、所属组以外的用户-other
    • lrwxrwxrwx. 1 root root 3 May 3 13:42 /dev/cdrom -> sr0 第一个root表示所有者,第二个是所属组 rwxrwxrwx分为三组,第一组表示所有者权限 第二组表示所属组 第三组表示权限 第一个字母表示文件类型
  3. linux当中如何判断用户具有的权限

    • 首先判断用户针对该数据所处的身份
    • 查看相应身份的权限位
  4. 修改权限

    • chmod命令

      • 格式:chmod [ugoa] [+-=] [rwx] 文件...

      • 常用命令选项

        --R:递归修改权限

    • chmod u-w /nsd10 所有者去掉w权限

    • chmod u+w /nsd10 所有者加上w权限

    • chmod g+w /nsd10 所属组加上w权限

    • chmod g=r /nsd10 所属组重新定义权限

    • chmod a=rwx /nsd10 a表示所有人

    • chmod u=---,g=rx,o=rwx /nsd10

  5. 修改归属关系

    • chown命令
    • chown zhangsan:stugrp /nsd13 修改所属于zhangsan 所属组名为stugrp
    • chown zhangsan:stugrp /nsd13 仅修改所属人
    • chown zhangsan:stugrp /nsd13 修改所属组
  6. acl策略的作用

    • 文档归属的局限性

      • 任何人只属于三种角色 属组、属主、其他人
      • 无法是实现更精细的控制
    • acl访问策略

      • 能够对个别用户、个别组设置独立的权限
      • 大多数挂载的EXT3/4、XFS文件系统默认已支持
    • 使用setfacl单独赋予用户权限 setfacl -m u:dc:rx /nsd19

      • 格式:setfacl [选型] u:用户名:权限 文件

        setfacl [选项] g:组名:权限 文件

      • -m:修改ACL策略

      • -x:清楚指定的ACL策略

      • -b:清楚所有已设置的ACl策略

      • -R:递归设置ACL策略

    • getfacl查看acl策略 getfacl /nsd19

  7. Set GID 概述

    • 权限
      • chmod g+s 目录文件
      • 占用属组(Group) 的x(执行)位
      • 显示为s或S,取决于属组是否有 x 权限
      • 对目录有效
      • 在一个具有SGID权限的目录下,新建的文档会自动继承此目录的属组身份
  8. 附加权限(特殊权限)

    • 粘滞位,Sticky Bit权限
    • chmod o+t /home/public
    • 占用其他人(Other) 的 x(执行)位
    • 显示为t或T,取决于其他人是否有x 权限
    • 适用于目录,用来限制用户滥用写入权
    • 在设置了t权限的文件下,即使用户有写入权限,也不能删除或改名其他用户文档
  9. 计划任务(周期性)

    • 用途:按照设置的时间间隔为用户反复执行某一项固定的系统任务(夜晚备份日志或数据等)

    • 软件包:cronie、crontabs(默认安装)

    • 系统服务:crond

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

    • 使用命令

      • 编辑:crontab -e [-u 用户名] #### 重要
      • 查看:crontab -l [-u 用户名]
      • 清楚:crontab -r [-u 用户名]
    • 计划书书写格式

      • 分 时 日 月 周 任务命令行(绝对路径——指的就是脚本)

        30 8 * * *          #每天早上8:30执行一次
        30 23 * * *            #每天晚上23:30执行一次
        30 23 * * 5            # 每周周五晚上11:30分执行一次
        30 23 * * 1-5           # 每周1到周五晚上11:30 执行一次
        30 23 * * 1,3,6         # 每周星期1,3,6晚上11:30执行一次
        30 23 1 * 1             # 每月的1 号或每周一晚上11:30执行一次
        * * * * *               # 每分钟执行一次
        */5 * * * *             # 每个5分钟执行一次
        1 */2 * * *             # 每两个小时执行一次
        
    • 计划任务记录文件 /var/spool/cron/

磁盘空间的管理

  1. 识别硬盘 => 分区规划 => 格式化 => 挂载使用

    • 分区规划:MBR/msdos分区模式
      • 最大支持容量为2.2TB 的磁盘
      • 扩展分区不能格式化
      • 分区类型:主分区扩展分区占用所有剩余空间)、逻辑分区
      • 最多只能由4个主分区
      • 扩展分区可以没有,至多有一个
      • 1~4个主分区,或者0~3个主分区+1个扩展分区n个逻辑分区) (企业主要应用)
      • 扩展分区不能格式化,空间不能直接存储数据 扩展分区存在的意义在于产生逻辑分区
      • 可以用于存储数据的分区:主分区与逻辑分区
    • 格式化:赋予空间文件系统的过程
      • 文件系统:数据在空间中存放的规则
      • windows常见的文件系统:NTFS FAT(兼容性强)
      • linux常见的文件系统:ext4(RHEL6)xfs(RHEL7) FAT
      • 命令:mkfs. (tab)(tab)点后面对应是文件系统类型——格式化
        • mkfs.ext4 /dev/sdb1
        • mkfs.xfs /dev/sdb2
    • 挂载使用:mount /dev/sdb2 /mypart2 # 临时挂载
    • 查看分区是否被格式化:blkid /dev/分区名
    • df -h 查看自己挂载的
    • lsblk查看磁盘情况
    • fdisk常用交互指令(创建分区)——分区规划
      • m列出指令帮助
      • p查看现有的分区表(存放分区信息的表格)
      • n新建分区
      • d删除分区 (对硬盘有影响)
      • q放弃更改并退出
      • w保存更改并退出
    • blkid /dev/sdb1 # 查看文件系统类型
    • partprobe 刷新分区表
    • 开机自动挂载 /etc/fstab ——非常珍贵 写错就开不了机
      • 书写格式:设备路径 挂载点 文件系统类型 参数 备份标记 检测顺序
      • vim /etc/fstab 修改fstab命令 文件格式为上述
      • mount -a如果没有任何输出 上述文件没有问题 每次修改完fstab文件后必须使用该命令检测一次
  2. GPT分区模式

    1. GPT,GUID Partition Table

    2. 全局唯一标识分区表

    3. 突破固定大小64字节的分区表限制

    4. 最多可支持128个主分区,最大支持18EB容量

      ** 1EB = 1024PB =1024 * 1024TB

    5. parted 常用分区指令

      • help //查看指令帮助

      • mktable gpt //建立指定模式分区表

      • mkpart 分区的名称 文件系统类型 start end //指定大小或百分比%作为起始、结束位置 —— 这个命令会恢复所有的数据 在他之前一定要提前查看该硬盘

      • print //查看分区表

      • rm 序号 //删除指定的分区

      • quit //退出交互环境

      • 案例:

        image-20230510233032254转存失败,建议直接上传图片文件

    6. 交换空间(虚拟内存)

      1. 利用硬盘的空间,充当内存的空间
      2. CPU------->内存---------->硬盘
    7. swapon命令查看当前计算机的交换空间

    8. free -m 目前交换空间一共有多大 m表示已mb显示

    9. 利用硬盘分区制作交换空间——流程

      ls /dev/sdc2

      mkswap /dev/sdc2 # 格式化交换文件系统

      blkid /dev/sdc2 #查看文件系统类型

      swapon #查看交换空间组成的成员信息

      swapon /dev/sdc2 #启用交换分区

      swapon # 查看交换空间组成的成员信息

      free -m #查看交换空间的大小

      swapoff /dev/sdc2 #停用交换分区

      swapon #查看交换空间组成的成员信息

      free -m #查看交换空间的大小

  3. LVM(逻辑卷)管理工具集

    功能物理卷(physics volume)管理卷组(volume group)管理逻辑卷(logic volum)管理
    Scan扫描pvsvgslvsca
    Create创建pvcreatevgcreatelvcreate
    Display显示pvdisplayvgdisplaylvdisplay
    Remove 删除pvremovevgremovelvremove
    Extend扩展/vgextendlvextend
    # 创建卷组
    [root@localhost ~]# vgcreate systemvg /dev/sdb[1-2]  # 创建卷组 做了两个动作 创建了物理卷 之后再次建立的卷组
      Physical volume "/dev/sdb1" successfully created.
      Physical volume "/dev/sdb2" successfully created.
      Volume group "systemvg" successfully created
    [root@localhost ~]# vgs  #查看卷组
      VG       #PV #LV #SN Attr   VSize  VFree 
      centos     1   4   0 wz--n- 16.00g  4.00m
      systemvg   2   0   0 wz--n- 19.99g 19.99g
    [root@localhost ~]# pvs #查看物理卷
      PV         VG       Fmt  Attr PSize   PFree  
      /dev/sda2  centos   lvm2 a--   16.00g   4.00m
      /dev/sdb1  systemvg lvm2 a--  <10.00g <10.00g
      /dev/sdb2  systemvg lvm2 a--  <10.00g <10.00g
    [root@localhost ~]# lvs  #查看逻辑卷
      LV   VG     Attr       LSize  Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert
      home centos -wi-ao----  1.00g                                                    
      root centos -wi-ao---- 10.00g                                                    
      swap centos -wi-ao----  1.00g                                                    
      var  centos -wi-ao----  4.00g                                                    
    [root@localhost ~]# 
    
    #创建一个逻辑卷
    [root@localhost ~]# lvcreate -L 16G -n vo systemvg
      Logical volume "vo" created.
    [root@localhost ~]# lvs
      LV   VG       Attr       LSize  Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert
      home centos   -wi-ao----  1.00g                                                    
      root centos   -wi-ao---- 10.00g                                                    
      swap centos   -wi-ao----  1.00g                                                    
      var  centos   -wi-ao----  4.00g                                                    
      vo   systemvg -wi-a----- 16.00g     #多出了一个vo的逻辑卷 16G
      
     #查看卷组
     [root@localhost ~]# ls -l /dev/systemvg
    总用量 0
    lrwxrwxrwx. 1 root root 7 5月  15 22:50 vo -> ../dm-4
    [root@localhost ~]# ls /dev/systemvg/vo 
    /dev/systemvg/vo
    [root@localhost ~]# ls /dev/mapper/systemvg-vo 
    /dev/mapper/systemvg-vo
    [root@localhost ~]# 
    
    #格式化卷组
    [root@localhost ~]# mkfs.xfs /dev/systemvg/vo  #格式化文件
    meta-data=/dev/systemvg/vo       isize=512    agcount=4, agsize=1048576 blks
             =                       sectsz=512   attr=2, projid32bit=1
             =                       crc=1        finobt=0, sparse=0
    data     =                       bsize=4096   blocks=4194304, imaxpct=25
             =                       sunit=0      swidth=0 blks
    naming   =version 2              bsize=4096   ascii-ci=0 ftype=1
    log      =internal log           bsize=4096   blocks=2560, version=2
             =                       sectsz=512   sunit=0 blks, lazy-count=1
    realtime =none                   extsz=4096   blocks=0, rtextents=0
    [root@localhost ~]# blkid  #查看文件类型
    /dev/sr0: UUID="2020-04-22-00-54-00-00" LABEL="CentOS 7 x86_64" TYPE="iso9660" PTTYPE="dos" 
    /dev/sda1: UUID="f1470cdc-79a1-496a-bc17-fd7d9d4a2fd1" TYPE="xfs" 
    /dev/sda2: UUID="ZRr9rD-qUQS-9zZK-kYRG-XvNi-AaPW-oY4fRA" TYPE="LVM2_member" 
    /dev/sdb1: UUID="XO2vlT-bG3N-9c5Q-4PTf-2Bbj-dieq-wdxztf" TYPE="LVM2_member" 
    /dev/sdb2: UUID="qTOvA7-EZND-dm5B-oI2d-mDWw-8qif-gDu59M" TYPE="LVM2_member" 
    /dev/mapper/centos-root: UUID="869e286f-6732-4a4e-a664-efb563ecaa8c" TYPE="xfs" 
    /dev/mapper/centos-swap: UUID="f8966c28-d795-46cd-9e4f-4b98e0efb02f" TYPE="swap" 
    /dev/mapper/centos-var: UUID="8822f008-e2c3-49a0-9f27-f3e58daa4ced" TYPE="xfs" 
    /dev/mapper/centos-home: UUID="e8e6cdb8-f998-40a2-9590-5e4ca10598c5" TYPE="xfs" 
    /dev/mapper/systemvg-vo: UUID="826abd22-7760-4dd8-96d3-cb37dcdf4cd9" TYPE="xfs" 
    
    #开机自动挂载
    [root@localhost ~]# vim /etc/fstab  修改fstab文件进行开机自动挂载
    # 该文件编辑格式:/dev/systemvg/vo /mylv xfs defaults 0 0
    
    #扩展vo逻辑卷
    [root@localhost ~]# lvs
      LV   VG       Attr       LSize  Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert
      home centos   -wi-ao----  1.00g                                                    
      root centos   -wi-ao---- 10.00g                                                    
      swap centos   -wi-ao----  1.00g                                                    
      var  centos   -wi-ao----  4.00g                                                    
      vo   systemvg -wi-ao---- 16.00g      
    [root@localhost ~]# lvextend -L 18G /dev/systemvg/vo #扩展逻辑卷
      Size of logical volume systemvg/vo changed from 16.00 GiB (4096 extents) to 18.00 GiB (4608 extents).
      Logical volume systemvg/vo successfully resized.
    [root@localhost ~]# lvs #查看逻辑卷
      LV   VG       Attr       LSize  Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert
      home centos   -wi-ao----  1.00g                                                    
      root centos   -wi-ao---- 10.00g                                                    
      swap centos   -wi-ao----  1.00g                                                    
      var  centos   -wi-ao----  4.00g                                                    
      vo   systemvg -wi-ao---- 18.00g                                                    
    
    #刷新文件系统
    [root@localhost ~]# xfs_growfs /dev/systemvg/vo #在卷组有足够的空间下(查看卷组是否有足够的空间——vgs) 扩展逻辑卷后  刷新vo这个逻辑卷
    meta-data=/dev/mapper/systemvg-vo isize=512    agcount=4, agsize=1048576 blks
             =                       sectsz=512   attr=2, projid32bit=1
             =                       crc=1        finobt=0 spinodes=0
    data     =                       bsize=4096   blocks=4194304, imaxpct=25
             =                       sunit=0      swidth=0 blks
    naming   =version 2              bsize=4096   ascii-ci=0 ftype=1
    log      =internal               bsize=4096   blocks=2560, version=2
             =                       sectsz=512   sunit=0 blks, lazy-count=1
    realtime =none                   extsz=4096   blocks=0, rtextents=0
    data blocks changed from 4194304 to 4718592
    [root@localhost ~]# df -h  | grep vo
    /dev/mapper/systemvg-vo   18G   33M   18G    1% /mylv
    
    #扩展卷组 之后再次扩展逻辑卷
    [root@localhost ~]# vgextend systemvg /dev/sdb{3,5,6}
      Physical volume "/dev/sdb3" successfully created.
      Physical volume "/dev/sdb5" successfully created.
      Physical volume "/dev/sdb6" successfully created.
      Volume group "systemvg" successfully extended
    [root@localhost ~]# vgs
      VG       #PV #LV #SN Attr   VSize  VFree 
      centos     1   4   0 wz--n- 16.00g  4.00m
      systemvg   5   1   0 wz--n- 72.00g 54.00g
    [root@localhost ~]# lvextend -L 25G /dev/systemvg/vo 
      Size of logical volume systemvg/vo changed from 18.00 GiB (4608 extents) to 25.00 GiB (6400 extents).
      Logical volume systemvg/vo successfully resized.
    [root@localhost ~]# lvs
      LV   VG       Attr       LSize  Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert
      home centos   -wi-ao----  1.00g                                                    
      root centos   -wi-ao---- 10.00g                                                    
      swap centos   -wi-ao----  1.00g                                                    
      var  centos   -wi-ao----  4.00g                                                    
      vo   systemvg -wi-ao---- 25.00g                                                    
    [root@localhost ~]# xfs_growfs /dev/systemvg/vo #刷新逻辑卷文件系统
    meta-data=/dev/mapper/systemvg-vo isize=512    agcount=5, agsize=1048576 blks
             =                       sectsz=512   attr=2, projid32bit=1
             =                       crc=1        finobt=0 spinodes=0
    data     =                       bsize=4096   blocks=4718592, imaxpct=25
             =                       sunit=0      swidth=0 blks
    naming   =version 2              bsize=4096   ascii-ci=0 ftype=1
    log      =internal               bsize=4096   blocks=2560, version=2
             =                       sectsz=512   sunit=0 blks, lazy-count=1
    realtime =none                   extsz=4096   blocks=0, rtextents=0
    data blocks changed from 4718592 to 6553600
    [root@localhost ~]# df -h /dev/systemvg/vo #查看是否动态格式化成功
    文件系统                 容量  已用  可用 已用% 挂载点
    /dev/mapper/systemvg-vo   25G   33M   25G    1% /mylv
    
    
    1. 逻辑卷支持缩减

      1. xfs文件系统:不支持缩减
      2. ext4文件系统:支持缩减
    2. vgdisplay systemvg 显示该卷组 PE Size 4.00MiB

    3. 请创建一个大小为250M的逻辑卷名字为lvredhat(工作当中不会使用 但是在考试当中就有可能会考到)

      • 注意:创建逻辑卷是会根据PE Size来整除 若不能整除 则需要向上加直到整除(默认为4M)

        ​ 查看使用 lvdisplay systemlv

        ​ 可以使用 lvchange -L 1M systemlv

      
      [root@localhost test]# vgdisplay systemvg 
        --- Volume group ---
        VG Name               systemvg
        System ID             
        Format                lvm2
        Metadata Areas        5
        Metadata Sequence No  6
        VG Access             read/write
        VG Status             resizable
        MAX LV                0
        Cur LV                2
        Open LV               1
        Max PV                0
        Cur PV                5
        Act PV                5
        VG Size               72.00 GiB
        PE Size               4.00 MiB   #修改前
        Total PE              18433
        Alloc PE / Size       6463 / <25.25 GiB
        Free  PE / Size       11970 / <46.76 GiB
        VG UUID               DcR8By-KKz7-q9CV-wG3j-Dv1E-VOYP-Qr3E5Z
         
      [root@localhost test]# vgchange -s 1M systemvg  #修改逻辑卷单一大小
        Volume group "systemvg" successfully changed
      [root@localhost test]# vgdisplay systemvg 
        --- Volume group ---
        VG Name               systemvg
        System ID             
        Format                lvm2
        Metadata Areas        5
        Metadata Sequence No  7
        VG Access             read/write
        VG Status             resizable
        MAX LV                0
        Cur LV                2
        Open LV               1
        Max PV                0
        Cur PV                5
        Act PV                5
        VG Size               72.00 GiB
        PE Size               1.00 MiB   #修改后
        Total PE              73732
        Alloc PE / Size       25852 / <25.25 GiB
        Free  PE / Size       47880 / <46.76 GiB
        VG UUID               DcR8By-KKz7-q9CV-wG3j-Dv1E-VOYP-Qr3E5Z
         
      [root@localhost test]# 
      
      
    4. 删除逻辑卷

    • 删除卷组的前提:基于此卷组创建的所有逻辑卷,要全部删除
    • 删除逻辑卷的前提:不能删除正在挂载使用的逻辑卷
    [root@localhost test]# lvremove /dev/systemvg/vo #移除vo逻辑卷
      Logical volume systemvg/vo contains a filesystem in use.  #显示正在使用当中
    [root@localhost test]# umount /mylv   #删除vo逻辑卷的挂载
    [root@localhost test]# lvremove /dev/systemvg/vo   #再次删除
    Do you really want to remove active logical volume systemvg/vo? [y/n]: y
      Logical volume "vo" successfully removed
    [root@localhost test]# 
    
  4. 进程管理

    • 程序:静态没有执行的代码 硬盘空间

    • 进程:动态执行的代码 CPU与内存资源

    • 父进程与子进程 树形结构

    • 进程编号:PID

    1. pstree 查看各种进程 systemd所有进程的父进程
    [root@localhost test]# pstree lisi  #lisi是新建用户  新开标签页
    bash───vim
    [root@localhost test]# pstree -p  lisi
    bash(5005)───vim(5140)
    [root@localhost test]# pstree -a  lisi
    bash
      └─vim aaa.txt
    [root@localhost test]# pstree -ap  lisi
    bash,5005
      └─vim,5140 aaa.txt
    [root@localhost test]# 
    
    
    1. ps aux操作

      列出正在运行的所有进程,显示进程信息非常详细

    2. ps -elf

      列出正在运行的所有进程,显示父进程信息

      PPID为父进程的PID

      # 统计当前进程总数
      [root@localhost test]# ps aux | wc -l
      239
      [root@localhost test]# ps -elf | wc -l
      239
      
    3. top交互式工具

      [root@localhost test]# top -d 1 # 1秒刷新
      
      
    4. pgrep -------Process Grep

      • 用途:pgrep [选项]... 查询条件

      • 常用命令选项

        -l:输出进程名,而不仅仅是PID

        -u:检索指定用户的进程

        -x:精确匹配完整的进程名

      [root@localhost test]# pgrep -l a
      2 kthreadd
      7 migration/0
      10 lru-add-drain
      11 watchdog/0
      12 watchdog/1
      13 migration/1
      
      
      [root@localhost test]#jobs # 查看后台进程信息
      [root@localhost test]#bg 1 # 让后台编号为1的进程继续运行
      [root@localhost test]#fg 1 # 让后台编号为1 的进程恢复的前台
      [root@localhost test]#killall xeyes #杀死所有的大眼睛进程
      
      
  5. 杀死进程的方式 [-9]加上以后强制

    1. kill [-9] 命令 一般按照进程的PID进行杀死
    2. killall [-9]命令 一般按照进程的名字进行杀死
    3. pkill [-9] 命令 按照进程的名字(包含就算)进行杀死 ——不太建议用这个命令

配置Linux网络

  1. root@localhost test]# hostnamectl set-hostname svr7.tedu.cn配置主机名为svr7.tedu

  2. 三种方式配置地址:

    1. nmtui——了解

    2. nmcli

      1. 缺点:必须使用自己的命名(为网卡(eth0)起一个自己的名字)——行业规定:起一个和网卡本名一样的名字;

        [root@svr7 ~]# nmcli connection show  #查看nmcli
        NAME        UUID                                  TYPE      DEVICE 
        有线连接 1  2f07983e-66fc-364e-a89c-85c94d596c9c  ethernet  eth0   
        virbr0      1808ef67-47bb-4dbc-a970-00375fc30713  bridge    virbr0 
        ens33       dc49894b-1a3e-40e8-8037-bec8cd865716  ethernet  -- 
        [root@svr7 ~]# nmcli connection delete ens33 
        成功删除连接 "ens33" (dc49894b-1a3e-40e8-8037-bec8cd865716)。
        [root@svr7 ~]# nmcli connection show 
        NAME        UUID                                  TYPE      DEVICE 
        有线连接 1  2f07983e-66fc-364e-a89c-85c94d596c9c  ethernet  eth0   
        virbr0      1808ef67-47bb-4dbc-a970-00375fc30713  bridge    virbr0 
        [root@svr7 ~]# nmcli connection delete '有线连接 1' #删除对应网卡
        成功删除连接 "有线连接 1" (2f07983e-66fc-364e-a89c-85c94d596c9c)。
        [root@svr7 ~]# nmcli connection show
        NAME    UUID                                  TYPE    DEVICE 
        virbr0  1808ef67-47bb-4dbc-a970-00375fc30713  bridge  virbr0 
        
        
        #新添加网卡
        # 类型为以太网网卡  con-name之后的是代号 ifname是原本的网卡名
        [root@svr7 ~]# nmcli connection add type ethernet  con-name eth0 ifname eth0
        连接 "eth0" (623c2c69-a088-4fcf-890b-69f7e8b5e252) 已成功添加。
        [root@svr7 ~]# nmcli connection show
        NAME    UUID                                  TYPE      DEVICE 
        eth0    623c2c69-a088-4fcf-890b-69f7e8b5e252  ethernet  eth0   
        virbr0  1808ef67-47bb-4dbc-a970-00375fc30713  bridge    virbr0 
        
        
        #修改ipv4的地址
        # 修改ipv4的地址为192.168.4.7 ,且子网掩码为255.255.255.0也就是24位 ;manual表示手工配置 ;网关为192.168.4.254 并且开机自动启用connection.autoconnect yes
        
        # ipv4.method manual  手动配置
        # ipv4.addresses 修改ip地址
        #ipv4.gatway 修改网关
        [root@svr7 ~]# nmcli connection modify eth0 ipv4.method manual ipv4.addresses 192.168.4.7/24 ipv4.gateway 192.168.4.254 connection.autoconnect yes
        #配置成功后并且激活 投入使用
        [root@svr7 ~]# nmcli connection up eth0 
        连接已成功激活(D-Bus 活动路径:/org/freedesktop/NetworkManager/ActiveConnection/5)
        
        
        #查看网关
        [root@svr7 ~]# route -n
        Kernel IP routing table
        Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
        0.0.0.0         192.168.4.254   0.0.0.0         UG    100    0        0 eth0
        192.168.4.0     0.0.0.0         255.255.255.0   U     100    0        0 eth0
        192.168.122.0   0.0.0.0         255.255.255.0   U     0      0        0 virbr0
        
        
    3. 修改配置文件

      # 修改配置文件
      [root@svr7 ~]# vim /etc/sysconfig/network-scripts/ifcfg-eth0 
      
    4. 远程控制其他linux系统:

      [root@svr7 ~]# ssh root@192.168.4.207 
      [root@svr7 ~]# cat /root/.ssh/known_hosts # 查看远程记录
      
    5. 安全复制工具 scp=ssh+cp

      1. scp [-r] 用户名@服务器:路径 本地路径 对方的文件下载到自己的目录下
      2. scp [-r] 本地路径 用户名@服务器:路径 把自己的文件给别人
    6. 采用公钥私钥的方式进行无密码验证

      1. 文件在 /usr/.ssh当中
      2. [root@svr7 ~]# ssh-keygen 生成私钥
      3. [root@svr7 ~]# ssh-copy-id root@192.168.4.207 将生成的私钥传递给对应的服务器
    7. ip命令

      1. 查看ip地址 ip address show
      2. 临时添加ip地址 ip address add 192.168.10.1
    8. ping命令

      1. [root@svr7 ~]# ping -c 2 192.168.4.207 只发送两个包
    9. 指定本机dns服务器

      1. 作用:负责域名解析的服务器,将域名解析为IP地址
      2. image-20230524105443915转存失败,建议直接上传图片文件
      3. dns文件: [root@svr7 ~]# cat /etc/resolv.conf
      4. 写dns服务器:[root@svr7 ~]# echo nameserver 88.99.100.200 > /etc/resolv.conf

内核及系统日志

  1. 由系统服务rsyslog统一记录/管理

    1. 日志消息采用文本格式
    2. 主要记录事件发生的时间、主机、进程、内容
  2. 常见的日志文件——必须背下来

    日志文件主要用途
    /var/log/messages记录内核消息、各种服务的公共消息
    /var/log/dmesg记录系统启动过程的各种消息
    /var/log/cron记录与cron计划任务相关的消息
    /var/log/maillog记录邮件收发相关的消息
    /var/log/secure记录与访问限制相关的安全消息
  3. 用户日志——不用背、背命令

    日志文件主要用途
    /var/log/lastlog记录最近的用户登录事件
    /var/log/wtmp记录成功的用户登录/注销事件
    /var/log/btmp记录失败的用户登录事件
    /var/log/utmp记录当前登录的每个用户的相关事件
  4. 查看文本日志消息

    1. 通用分析工具
      1. tail、tailf、less、grep等文本浏览/检索命令
      2. awk、sed等格式化过滤工具
    2. 专用分析工具
      1. webmin系统管理工具
      2. webalizer、AWStats等日志统计套件
  5. 用户登录分析

    1. users、who、w命令
      1. 查看已登录的用户信息,详细度不同
      2. last、lastb命令
        1. 查看最近登录/失败的用户信息
        2. last查询最近登录的信息
        3. lastb查询登录失败的日志信息
  6. 日志信息的优先级

    1. linux内核定义的事件紧急程度

      — 分为0~7共八种优先级别

      — 其数字越小,表示对应事件越紧急/重要

      image-20230524113542858转存失败,建议直接上传图片文件

云计算应用管理

  1. SELinux安全机制

    1. 保护内部安全的机制,一套增强Linux系统安全的强制访问控制体系

    2. 集成到Linux内核中运行

    3. RHE7基于SELinux体系针对用户、进程、目录和文件提供了预设的保护策略,以及管理工具

    4. SELinux的运行模式

      — enforcing (强制)

      — permissive (宽松)

      — disabled (彻底禁用)

      [root@svr7 ~]# getenforce #查看当前运行模式
      Enforcing
      [root@svr7 ~]# setenforce 0 #修改当前运行的模式
      [root@svr7 ~]# getenforce 
      Permissive
      [root@svr7 ~]# vim /etc/selinux/config 
      [root@svr7 ~]# getenforce 
      Permissive
      [root@svr7 ~]# 
      
  2. 破解root密码思路

    1. 前提:必须是服务器的管理者、涉及重启服务器
    2. 物理安全 网络安全

WEB基础服务、nfs服务基础

1. 独立Web主机

—基于B/S(Browser/Server)架构的网页服务

​ — 服务端提供网页

​ — 浏览器下载并显示网页

​ — HTML 超文本标记语言

​ — HTTP 超文本传输协议

image-20230526194158802转存失败,建议直接上传图片文件

  1. 搭建服务器

    1. 安装软件包: [root@svr7 ~]# yum -y install httpd
    2. 在默认文件当中创建一个index文件: [root@svr7 ~]# echo NSD2203 Web server > /var/www/html/index.html
    3. 启动httpd进程: [root@svr7 ~]# systemctl restart httpd
    4. 测试访问:[root@svr7 ~]# curl 192.168.4.7
  2. httpd的相关配置

    1. 主配置文件:/etc/httpd/conf/httpd.conf

    2. 重启服务的命令: systemctl restart httpd

    3. 软件包:httpd

    4. 系统服务:httpd

    5. 提供的默认位置

      — Listen:监听地址:端口(80)

      — Servername:本站点注册的DNS名称

      — DocumentRoot:网页根目录(/var/www/html)

      — DirectoryIndex:起始页/首页文件名(index.html)

    6. 访问控制:基于网页文件目录,进行访问控制规则

      — 当子目录没有规则,默认继承上一级目录规则

      — 针对此目录有单独配置,则不继承上一级目录规则

  3. 实验

    #更改配置文件
    [root@svr7 ~]# vim /etc/httpd/conf/httpd.conf 
    DocumentRoot "/webroot"
    <Directory "/webroot">
        AllowOverride None
        # Allow open access:
        Require all granted
    </Directory>
    
    #根据配置添加文件夹及文件
    [root@svr7 ~]# mkdir /webroot
    [root@svr7 ~]# echo webroot > /webroot/index.html
    
    
    #重启服务
    [root@svr7 ~]# systemctl restart httpd
    
    
    #测试服务
    [root@svr7 ~]# curl 192.168.4.7
    webroot
    
    
  4. 虚拟Web主机的含义及类型

    • 虚拟Web主机

      — 有一台服务器提供多个不同的Web站点

    • 区分方式

      — 基于域名的虚拟主机

      — 基于端口的虚拟主机

      — 基于IP地址的虚拟主机

    • 配置文件路径

      /etc/httpd/conf/httpd.conf 主配置文件

      /etc/httpd/conf.d/*.conf 调用配置文件——后读取后应用

      [root@svr7 ~]# vim /etc/httpd/conf.d/haha.conf  #haha.conf为新文件 后缀名必须为conf
      #以下格式需要记忆
      <VirtualHost *:80>  #在所有IP地址监听80端口
        ServerName www.qq.com  #网站的域名
        DocumentRoot /var/www/qq  #网页文件路径
      </VirtualHost>
      <VirtualHost *:80>
        ServerName www.lol.com
        DocumentRoot /var/www/lol
      </VirtualHost>
      
      
    • 一旦使用虚拟Web主机功能,所有的网站都必须使用虚拟Web主机来访问

      #根据端口来区别虚拟主机
      [root@svr7 ~]# vim /etc/httpd/conf.d/haha.conf 
      <VirtualHost *:80>
        ServerName www.qq.com
        DocumentRoot /var/www/qq
      </VirtualHost>
      Listen 8080
      <VirtualHost *:8080>
        ServerName www.qq.com
        DocumentRoot /var/www/lol
      </VirtualHost>                         
      
  5. NFS服务基础

    1. Network File System

      —用途:为客户机提供共享使用的文件夹

      — 协议:NFS(TCP?UDP 2049)、RPC(TCP/UDP 111)

    2. 所需软件包:nfs-utils

    3. 系统服务:nfs-server

    [root@svr7 ~]# vim /etc/exports #修改文件
    /public    *(ro)    #表示根目录下的public文件夹对所有客户端提供只读的共享
    [root@pc208 ~]# systemctl restart rpcbind   #nfs所依赖的服务
    [root@pc208 ~]# systemctl restart nfs-server
    
    
    
    #从共享的主机上挂载文件到本地
    [root@pc208 ~]# mount 192.168.4.7:/public    /mnt
    

    image-20230528185440641转存失败,建议直接上传图片文件

    #开机自动挂载nfs服务器上的共享文件
    # defaults后面的参数,_netdev表示在能发现ip网络之后请求
    [root@pc208 ~]# vim /etc/fstab 
    192.168.4.7:/public      /mnt                  nfs    defaults,_netdev    0 0                                                                                          
    

DNS服务

  1. DNS服务器的功能

    — 正向解析:根据注册的域名查找其对应的IP地址

    — 反向解析:根据IP地址查找对应的注册域名,不常用

  2. DNS服务器分类

    1. 一级DNS服务器:.com .net .edu .cn .org

    2. 二级DNS服务器:.net.cn .com.cn .edu.cn

    3. 三级DNS服务器:sina.com.cn .tedu.com.cn

      image-20230530142614989转存失败,建议直接上传图片文件

  3. DNS的分布式结构

    1. Full Qualified Domain Name,完全合格主机名(FQDN)

      1. — =站点名.域名后缀

        — =站点名. .. .. . 二级域.一级域

    2. 常见的顶级/一级域名

      • 国家/地区域:.cn、.us、.kr、.hk、.tw、
      • 组织域:.com、.net、.edu、.org、.gov、.mil、
  4. BIND(伯克利大学开发的Linux软件)

    1. 装包:[root@svr7 ~]# yum -y install bind bind-chroot 主要起作用是 bind; 而 bind-chroot起到bind软件崩溃时,锁住他

    2. BIND服务器端程序

      — 主要执行程序:/usr/sbin/named

      — 系统服务:named

      — 默认端口:TCP/UDP 53端口

      — 运行时的虚拟根环境:/var/named/chroot

    3. 主配置文件:/etc/named.conf #设置负责解析的域名

    4. 地址库文件:/var/named #完全合格的主机名与IP地址对应关系

    #拷贝一份配置文件到/opt下 以免出错
    [root@svr7 ~]# cp  /etc/named.conf  /opt/
    #修改主配置文件
    [root@svr7 ~]# vim /etc/named.conf 
    options {:
            directory       "/var/named"; #放在哪个文件下下面
    
    };
    
    zone "tedu.cn" IN {
            type master;
            //type slave;
            file "tedu.cn.zone";  #文件名字叫什么
    };
    
    #模板文件拷贝到/var/named下进行修改
    [root@svr7 ~]# cp -p  /var/named/named.localhost /var/named/tedu.cn.zone  #拷贝模板文件 并改名为tedu.cn.zone
    [root@svr7 ~]# vim /var/named/tedu.cn.zone 
    $TTL 1D
    @       IN SOA  @ rname.invalid. (
                                            0       ; serial
                                            1D      ; refresh
                                            1H      ; retry
                                            1W      ; expire
                                            3H )    ; minimum
    tedu.cn.        NS      svr7.tedu.cn.   #tedu.cn的服务器是svr7.tedu.cn. 
    svr7.tedu.cn.   A       192.168.4.7     #svr7.tedu.cn. 的ip地址是 192.168.4.7
    #书写完后重启DNS服务
    [root@svr7 ~]# systemctl restart named
    
    #验证DNS服务的命令
    [root@svr7 ~]# nslookup www.tedu.cn
    Server:		127.0.0.1
    Address:	127.0.0.1#53
    
    Name:	www.tedu.cn
    Address: 1.1.1.1
    
  5. 指定DNS服务是谁的文件

    [root@svr7 ~]# cat /etc/resolv.conf 
    # Generated by NetworkManager
    search tedu.cn
    [root@svr7 ~]# echo nameserver 192.168.4.7 > /etc/resolv.conf 
    [root@svr7 ~]# cat /etc/resolv.conf 
    nameserver 192.168.4.7