Nrich's blog Nrich's blog
首页
  • Java
  • Golang
  • 深度学习
  • Git
  • Linux
  • DataStructure
  • CloudNative
  • Redis
  • MySQL
  • 路由劫持
GitHub (opens new window)

Nrich

小聪明
首页
  • Java
  • Golang
  • 深度学习
  • Git
  • Linux
  • DataStructure
  • CloudNative
  • Redis
  • MySQL
  • 路由劫持
GitHub (opens new window)
  • Git

  • Linux

    • 韩顺平2021课程笔记

      • Linux 基础篇
      • Linux实操篇(上)
        • 1. Vi 和 Vim 编辑器
        • 2. 开机、重启与用户登录注销
          • 2.1 关机 & 重启命令
          • 2.2 用户登录与注销
        • 3. 用户管理
          • 3.1 添加用户
          • 3.2 指定/修改密码
          • 3.3 删除用户
          • 3.4 查询用户信息
          • 3.5 切换用户
          • 3.6 查看当前登录用户
          • 3.7 用户组
          • 3.8 用户和组相关的文件
        • 4. 实用指令
          • 4.1 运行级别
          • CentOS 7 后运行级别说明
          • 4.2 找回 root 密码
          • 4.3 帮助指令
          • 4.4 时间日期类
          • 4.4.1 date 显示当前日期
          • 4.4.2 cal 显示日历
          • 4.5 搜索查找类
          • 4.5.1 find
          • 4.5.2 locate
          • 4.5.3 which
          • 4.5.4 grep 指令和管道符号 |
          • 4.6 压缩和解压类
          • 4.6.1 gzip 压缩 & gunzip 解压
          • 4.6.2 zip 压缩 & unzip 解压
          • 4.6.3 tar 打包 ⭐️
        • 5. 组管理和权限管理
          • 5.1 所有者
          • 5.1.1 查看文件的所有者
          • 5.1.2 修改文件所有者
          • 5.2 组的创建
          • 5.3 所在组
          • 53.1 查看文件的所在组
          • 5.3.2 修改文件的所在组
          • 5.4 其他组
          • 5.5 改变用户的所在组
          • 5.6 文件的权限
          • 5.6.1 权限的基本介绍
          • 5.6.2 rwx 权限 ⭐️
          • 1)rwx 作用到文件**
          • 2)rwx 作用到目录**
          • 5.6.3 权限的数字表示
          • 5.6.4 chmod 修改权限
          • 1)第一种方式:+ - = 变更权限
          • 2)第二种方式:通过数字变更权限
          • 5.6.5 其他说明
        • 6. 定时任务调度
          • 6.1 crond 任务调度
          • 6.1.1 概述
          • 6.1.2 基本语法
          • 6.1.3 快速入门
          • 任务书写格式:
          • 5 个占位符的说明:
          • 特殊符号的说明
          • 6.2 at 定时任务
          • 6.2.1 at 时间定义的方法
        • 7. 磁盘分区、挂载
          • 7.1 Linux 分区
          • 7.1.1 原理介绍
          • 7.1.2 硬盘说明
          • 7.1.3 查看所有设备挂载情况
          • 7.2 挂载的经典案例 —— 增加一块硬盘
          • 1)虚拟机添加硬盘
          • 2)磁盘分区
          • 3)格式化磁盘
          • 4)挂载
          • 5)设置自动挂载
          • 7.3 磁盘情况查询
          • 7.3.1 查询系统整体磁盘使用情况
          • 7.3.2 查询指定目录的磁盘占用情况
          • 7.4 磁盘情况 - 工作实用指令
          • 1)统计 /opt 文件夹下文件的个数
          • 2)统计 /opt 文件夹下目录的个数
          • 3)统计 /opt 文件夹下文件的个数,包括子文件夹下的
          • 4)统计 /opt 文件夹下目录的个数,包括子文件夹下的
          • 5)以树状显示目录结构
      • Linux实操篇(下)
      • JavaEE与Python定制篇
      • 大数据定制篇-Shell编程
    • From公众号

  • 数据结构

  • 云原生

  • 基础
  • Linux
  • 韩顺平2021课程笔记
Nrich
2022-04-11
目录

Linux实操篇(上)

# 1. Vi 和 Vim 编辑器

要会一些基本的快捷键,一般在 Linux 下不需要特别复杂的操作。

三种模式之间的相互切换

  • 一般模式

  • 编辑模式

  • 命令模式

    :wq(保存退出)

    :q(退出)

    :q!(强制退出,不保存)

# 2. 开机、重启与用户登录注销

# 2.1 关机 & 重启命令

命令 说明
shutdown -h now 立刻进行关机
shutdown -h 2 “hello,2 分钟后会关机了”
shutdown -r now = reboot 现在重启
halt 关机,与上面一样
sync 把内存的数据同步到磁盘
  • 不管是重启还是关机,首先要运行 sync 命令,把内存中的数据写到磁盘中。目前的 shutdown/reboot/halt 等命令均在关机前进行了 sync,但小心驶得万年船。
  • root 才可以关机。

# 2.2 用户登录与注销

登录时尽量少用 root 账号,避免操作失误。使用 su <用户名> 可以切换身份。

logout 命令即可注销用户。这个指令在图形运行级别无效。

# 3. 用户管理

Linux 是一个多用户多任务的操作系统。

# 3.1 添加用户

语法:useradd 用户名

  • 当用户创建成功后,会自动创建与用户同名的家目录(/home/用户名)。
  • 也可以通过 useradd -d 指定目录 用户名 来给新用户指定家目录。

# 3.2 指定/修改密码

passwd tom:给 tom 指定密码

**注:**若不指定用户名,则是修改当前用户的用户名。

# 3.3 删除用户

  • userdel nrich:删除用户 nrich,但要保留家目录
  • userdel -r nrich:删除用户及其家目录

一般情况下,我们建议保留,毕竟他所做的工作放在了里面。

# 3.4 查询用户信息

id 用户名:查询该用户的信息,当用户不存在时返回无此用户。

# 3.5 切换用户

当操作权限不够时,可以通过 su 命令切换到高权限用户。

  • 从高权限到低权限的切换不需要密码,反之需要。
  • 当需要返回到原来用户时,使用 exit/logout 指令。

# 3.6 查看当前登录用户

whoami = who am I:显示第一次登录时的用户。

此处自行尝试时,发现 whoami 显示的是当前切换过来的用户,who am i 显示的是第一次登陆时的用户。

# 3.7 用户组

类似于角色,用户组可以让系统对有共性/权限的多个用户进行统一管理。

  • groupadd 组名:新增组
  • groupdel 组名:删除组

如何将让一个用户加入一个组呢?有以下几种方法:

  1. 增加用户时直接加上组:useradd -g 用户组 用户名
  2. 修改用户的组:usermod -g 用户组 用户名
  3. 若一个用户没有指定加入哪个组,会默认在一个与自己同名的组中

# 3.8 用户和组相关的文件

  • /etc/passwd 文件:用户的配置文件,记录用户的各种信息

    • 每行的含义:用户名:口令:用户标识号(uid):组标识号(gid):注释性描述:主目录(home中相应的目录):登录shell

    • shell 的简单解释:可以把传给 Linux 内核的命令解析(直接把命令传给 Linux 内核是无法被解析的),如下图。我们常用的是 bash。

      image-20220417164321822
  • /etc/shadow 文件:口令的配置文件

    • 每行的含义:登录名:加密口令:最后一次修改时间:最小时间间隔:最大时间间隔:警告时间:不活动时间:失效时间:标志
  • /etc/group 文件:组的配置文件,记录各组的信息

    • 每行的含义:组名:口令:组标识号:组内的用户列表

# 4. 实用指令

# 4.1 运行级别

运行级别 说明
0 关机
1 单用户模式(可以帮助我们找回丢失密码)
2 多用户状态没有网络服务
3 多用户状态有网络服务【工作中常用】
4 系统未使用,保留给用户
5 图形界面
6 系统重启
  • 常见运行级别是 3 和 5,也可以指定默认运行级别。

init <num>:切换到 num 运行级别,如 init 3 将切换到多用户状态有网络服务模式(没有图形界面)。

# CentOS 7 后运行级别说明

  • multi-user.target:相当于 runlevel 3
  • graphical.target:相当于 runlevel 5

查看当前默认运行级别:systemctl get-default

设置默认运行级别:systemctl set-default TARGET.target

当我们在图形化下将默认运行级别设为 multi-user.target 后,重启系统后会默认进入黑框框界面,即 runlevel 3。

# 4.2 找回 root 密码

// TODO

不同版本的系统找回密码具体操作有所区别。

# 4.3 帮助指令

  • man [命令或配置文件]:获得帮助信息,比如 man ls

    • 😄显示不全乎的按空格键继续往下走
    • 在 Linux 下, 隐藏文件是以 . 开头的
    • 选项可以组合使用,无顺序区别,比如 ls -al 或者 ls -la
    • ls 命令还可以指定一个目录,比如 ls -l /root
  • help 命令:获得 shell 内置命令的帮助信息

如果英语不太好,百度更直接。

# 4.4 时间日期类

# 4.4.1 date 显示当前日期

  • date 显示时间:

    • date:显示当前日期
    • date "+format":format 中可以用 %Y(年)、%m(月)、%d111(日)、%H(时)、%M(月)、%S(秒),比如 date "+%Y-%m-%d %H:%M:%S"
  • date 设置时间: date -s "2020-11-03 20:02:10" ,时间为字符串格式

# 4.4.2 cal 显示日历

calendar 的缩写。

cal [选项]
1
  • 默认显示本月日历
  • cal 2020:显示 2020 全年的日历

# 4.5 搜索查找类

# 4.5.1 find

find 指令将从指定目录向下递归地遍历其各个子目录,将满足条件的文件或目录显示出来。

find [搜索范围] [选项]
1
  • -name <查询方式>:按指定的文件名查找模式查找文件,也可以加匹配符 * 等。
  • -user <用户名>:查找属于指定用户名的所有文件
  • -size <文件大小>:按照指定的文件大小查找文件

案例:

  • 根据名称查找 /home 目录下的 hello.txt:find /home -name hello.txt
  • 查找 /opt 下用户 nrich 的文件:find /opt -user nrich
  • 查找整个 linux 系统下大于 200M 的文件(+n 大于, -n 小于,单位有 k, M, G):find / -size +200M

# 4.5.2 locate

locate 可以快速定位文件路径。locate 指令利用事先建立的数据库实现快速定位,它无需遍历整个文件系统因而较快。为了保证查询结果准确性,管理员必须定期更新 locate 时刻:updatedb。

locate [搜索文件]:

  • 第一次使用前,必须使用 updatedb 指令来创建 locate 数据库。

# 4.5.3 which

which 可以查看某个指令在哪个目录下。比如 which ls 查看 ls 指令在哪个目录。

# 4.5.4 grep 指令和管道符号 |

grep 过滤查找。

管道夫 | 表示将前一个命令的处理结果输出传递给后面的命令处理。

grep [选项] 查找内容 源文件
1
  • -n:显示匹配行及行号
  • -i:忽略字母大小写

案例:在 hello.text 文件中查找“yes”所在行,并显示行号

  • 写法1:cat /home/hello.txt | grep -n "yes"
  • 写法2:grep -n "yes" /home/hello.txt

# 4.6 压缩和解压类

# 4.6.1 gzip 压缩 & gunzip 解压

  • gzip 文件:压缩文件为 *.gz 文件

    📝 压缩的同时会把原文件删除!

  • gunzip 文件.gz:解压

​ 📝 解压的同时也会把压缩文件删除

# 4.6.2 zip 压缩 & unzip 解压

  • zip [选项] xxx.zip:压缩文件和目录。-r 递归压缩,即压缩目录。
  • unzip [选项] xxx.zip:解压缩文件。-d <目录> 指定解压后文件的存放目录。

案例:

  • 将 home 本身及 /home 下的所有文件压缩:zip -r myhome.zip /home/
  • 将 myhome.zip 解压到 /opt/tmp 目录下:unzip -d /opt/tmp /home/myhome.zip

# 4.6.3 tar 打包 ⭐️

tar 是打包指令(仅仅打包但不压缩),最后打包后的文件是 xxx.tar.gz 文件。

tar [选项] xxx.tar.gz 打包的内容:打包目录,压缩后的文件格式为 xxx.tar.gz

  • -c:【create】创建一个新的打包文件
  • -v:【verbose】显示详细信息
  • -f:【filename】指定压缩后的文件名
  • -z:【gzip】打包同时用 gzip 算法压缩
  • -x:【extract】解包 .tar 文件

常用的选项组合:

  • 打包并压缩:tar -zcvf xxx.tar.gz [原文件名/目录名]
  • 解压并解包:tar -zxvf xxx.tar.gz [目的地]

案例:

  • 将 pig.txt 和 cat.txt 压缩成 pc.tar.gz:tar -zcvf pc.tar.gz pig.txt cat.txt
  • 将 /home 文件夹压缩成 myhome.tar.gz:tar -zcvf myhome.tar.gz /home/
  • 将 pc.tar.gz 解压到当前目录:tar -zxvf pc.tar.gz
  • 将 pc.tar.gz 解压到 /opt/tmp 目录:tar -zxvf pc.tar.gz -C /opt/tmp

# 5. 组管理和权限管理

Linux 中每个用户必须属于一个组,不能独立于组外。每个文件有所有者、所在组、其他组的概念。

目录也是一种特殊的文件,所以这里的“文件”也包括了目录。

# 5.1 所有者

创建文件的人是所有者,所有者可以更改。

# 5.1.1 查看文件的所有者

ls -ahl
1
image-20220728152647392
  • 最后一列的蓝色表示这是个目录,白色表示是文件

# 5.1.2 修改文件所有者

  • chown 用户名 文件名:【change owner】将文件的所有者改成指定的用户
  • chown newOwner:newGroup 文件名:同时改变所有者和所在组
  • -R:如果是目录,则使其下所有子文件或者目录递归生效

# 5.2 组的创建

groupadd 组名:创建一个组

案例:

  • 创建一个组 monster:groupadd monster

  • 创建一个用户 fox,并放到 monster 组中:

    useradd -g monster fox
    
    1
    • -g 表示 group

# 5.3 所在组

当某个用户创建了一个文件后,这个文件的所在组就是该用户所在的组(默认)。

# 53.1 查看文件的所在组

ls -ahl
1
image-20220728152647392

# 5.3.2 修改文件的所在组

chgrp 组名 文件名:【change group】

# 5.4 其他组

除了文件的所有者和所在组的用户外,系统的其他用户都是文件的其他组。

# 5.5 改变用户的所在组

root 的管理权限可以改变某个用户的所在组。

  • usermod -g 新组名 用户名:修改用户的所在组。

usermod 可以用来修改用户账号的各项设定,具体可查 usermod命令 | 菜鸟教程(opens new window) (opens new window)

# 5.6 文件的权限

# 5.6.1 权限的基本介绍

下图的第一列便是权限:

image-20220728152647392
  • 第 0 位表示文件类型:l 链接,d 目录,c 字符设备文件(如鼠标、光盘),b 块设备(如硬盘),- 普通文件
  • 第 1~3 位表示所有者拥有该文件的权限
  • 第 4~6 位表示所属组拥有该文件的权限
  • 第 7~9 位表示其他用户拥有该文件的权限

# 5.6.2 rwx 权限 ⭐️

# 1)rwx 作用到文件**
  • 【r】可读
  • 【w】可写。可以修改但不代表可以删除该文件,删除一个文件的前提条件是对该文件所在的目录有写权限。
  • 【x】可执行(execute)
# 2)rwx 作用到目录**
  • 【r】可读。ls 可以查看目录内容。
  • 【w】可写。可以对目录内创建 + 删除 + 重命名目录。
  • 【x】可执行。可以进入该目录。此时根据目录中文件的权限,对其该读读,该写写。

# 5.6.3 权限的数字表示

$r=4, w=2, x =1$

因此 rwx = 4+2+1 = 7,rw- = 4+2 = 6 等。

# 5.6.4 chmod 修改权限

chmod 可以修改文件/目录的权限:chmod [变更方式] 文件名

# 1)第一种方式:+ - = 变更权限
  • u —— 所有者,user 的简写
  • g —— 所有组,group 的简写
  • o —— 其他人,other 的简写
  • a —— 所有人(即 u、g、o 的总和),all 的简写

案例:给 foo.txt 的所有者赋予读写执行的权限,增加所在组写的权限,除去其他人读的权限

  • chmod u=rwx,g+w,o-r foo.txt
# 2)第二种方式:通过数字变更权限

$r=4, w=2, x =1$

案例:将 bar.txt 的权限修改为 rwxr-xr-x

  • chmod 755 bar.txt

# 5.6.5 其他说明

  • 权限列后的数字列:文件的硬连接数 | 目录的子目录数(不包含普通文件)。
  • 若要对目录内的文件进行操作,需要先有对该目录的相应权限。

# 6. 定时任务调度

# 6.1 crond 任务调度

crontab 进行定时任务的设置。该命令每分钟会定期检查是否有要执行的工作,如果有要执行的工作便会自动执行该工作。

英语:crond 定时任务,crontab 定时任务

# 6.1.1 概述

任务调度:是指系统在某个时间执行特定的命令或程序。

任务调度分类:

  • 系统工作:系统周期性所要执行的工作,如病毒扫描
  • 个别用户工作:某个用户定期要做的工作,比如对 MySQL 数据库的备份

# 6.1.2 基本语法

crontab [选项]
1
  • -e:使用编辑器来编辑 crontab 定时任务
  • -l:列出目前的时程表
  • -r:删除当前用户的时程表(即删除所有 crontab 任务)

重启任务调度: service crond restart

# 6.1.3 快速入门

设置任务调度文件:/etc/crontab

设置个人任务调度:执行 crontab -e 命令,接着输入任务到调度文件。如输入 */1 * * * * ls -l /etc/ > /tmp/to.txt 表示每个小时的每分钟执行 ls -l /etc/ > /tmp/to.txt 命令。

# 任务书写格式:
f1 f2 f3 f4 f5 program
1
  • program 处为定时执行的命令
  • f1 ~ f5 为指示时间的占位符,具体可见下面
# 5 个占位符的说明:
*    *    *    *    *
-    -    -    -    -
|    |    |    |    |
|    |    |    |    +----- 星期中星期几 (0 - 6) (星期天 为0)
|    |    |    +---------- 月份 (1 - 12) 
|    |    +--------------- 一个月中的第几天 (1 - 31)
|    +-------------------- 小时 (0 - 23)
+------------------------- 分钟 (0 - 59)
1
2
3
4
5
6
7
8
# 特殊符号的说明
特殊符号 含义
* 代表任何时间,比如第一个 * 就代表一个小时中每分钟执行一次的意思。
, 代表不连续的时间,如 0 8,12,16 * * * 命令就代表每天的8点0分、12点0分、16点0分都执行一次命令。
- 代表连续的时间范围,如 0 5 * * 1-6 命令就代表周一到周六的凌晨5点0分执行命令
*/n 代表每隔多久执行一次,如 */10 * * * * 就代表每隔 10 分钟就执行一次命令

案例可见 crontab 命令 | 菜鸟教程 (opens new window)

案例:每隔一分钟,将当前日期和日历都追加到 /home/mycal 文件中:(1) vim /home/my.sh ,写入内容: date >> /home/mycal 和 cal >> /home/mycal (2)给 my.sh 增加执行权限:chmod u+x /home/my.sh (3)crontab -e 增加 */1 * * * * /home/my.sh

# 6.2 at 定时任务

crond 是反复执行的任务,而 at 命令是一次性定时计划任务,其守护进程 atd 会以后台模式运行,检查任务队列来运行。

默认情况下,atd 守护进程每分钟检查一次作业队列,有作业时会检查其运行时间,若匹配则运行此作业。在使用 at 命令时,一定要保证 atd 进程的启动,可以使用 ps -ef | grep atd 来检测 atd 是否在运行。

  • ps -ef | grep atd:查看所有进程并过滤出 atd
image-20220801163618590

如图所示,上面一条表示 atd 进程已经启动,下面一条表示当前查看 atd 是否运行的指令。

启动 atd 进程:sudo service atd start 或 sudo systemctl start atd

命令格式:at [选项] [时间] ,两次 Ctrl + D 结束 at 命令的输入,Ctrl + Backspace 删除

  • -m 当指定的任务被完成之后,将给用户发送邮件,即使没有标准输出
  • -I atq的别名
  • -d atrm的别名(删除已经设置的任务,e.g. atrm 4 表示删除 job 队列中编号为4的 job)
  • -v 显示任务将被执行的时间
  • -c 打印任务的内容到标准输出
  • -V 显示版本信息
  • -q<列队> 使用指定的列队
  • -f<文件> 从指定文件读入任务而不是从标准输入读入
  • -t<时间参数> 以时间参数的形式提交要运行的任务

注: atd 一次只会执行一个任务,从 job 队列中一次检查一个 job 是否该执行了。

# 6.2.1 at 时间定义的方法

  • 接受在当天的 hh:mm(小时:分钟)式的时间指定。假如该时间已过去,那么就放在第二天执行。
  • 使用 midnight(深夜),noon(中午),teatime(饮茶时间,一般是下午4点)等比较模糊的 词语来指定时间。
  • 采用 12 小时计时制,即在时间后面加上 AM(上午)或 PM(下午)来说明是上午还是下午。
  • 指定命令执行的具体日期,指定格式为 month day(月 日)或 mm/dd/yy(月/日/年)或 dd.mm.yy(日.月.年)。指定的日期必须跟在指定时间的后面。
  • 使用相对计时法,指定格式为:now + count time-units ,now 就是当前时间,time-units 是时间单位,这里能够是minutes(分钟)、hours(小时)、days(天)、weeks(星期)。count 是时间的数量,究竟是几天,还是几小时,等等。比如 now + 5 minutes。
  • 直接使用today(今天)、tomorrow(明天)来指定完成命令的时间。

案例:2 天后的下午 5 点执行 /bin/ls /home

image-20220801171045995

先输入 at [选项] [时间] 后回车,再接着输入命令,输入完后按两次 Ctrl D 结束输入

# 7. 磁盘分区、挂载

# 7.1 Linux 分区

🖊 目录只是个目录,目录中的内容在物理上是存放在硬盘的分区中的。

# 7.1.1 原理介绍

Linux 来说无论有几个分区,分给哪一目录使用,它归根结底就只有一个根目录,一个独立且唯一的文件结构,Linux 中每个分区都是用来组成整个文件系统的一部分。

Linux 采用了一种叫“载入”的处理方法,它的整个文件系统中包含了一整套的文件和目录, 且将一个分区和一个目录联系起来。这时要载入的一个分区将使它的存储空间在一个目录下获得。

示意图:image-20220801194401321

# 7.1.2 硬盘说明

Linux 硬盘分 IDE 硬盘和 SCSI 硬盘,目前基本上是 SCSI 硬盘。

  • 对于 IDE 硬盘,驱动器标识符为“hdx~”,“hd”表明分区所在设备的类型,这里是指IDE硬盘。“x”为盘号(a 为基本盘,b 为基本从属盘,c 为辅助主盘,d 为辅助从属盘),“~”代表分区,前四个分区用数字1到4表示,它们是主分区或扩展分区,从5开始就是逻辑分区。比如 hda3 表示为第一个 IDE 硬盘上的第三个主分区或扩展分区,hdb2 表示为第二个 IDE 硬盘上的第二个主分区或扩展分区。
  • 对于 SCSI 硬盘,驱动器标识符为“sdx~”,SCSI 硬盘是用“sd”来表示分区所在设备的类型,其余则和 IDE 硬盘的表示方法一样。

# 7.1.3 查看所有设备挂载情况

命令:lsblk 或者 lsblk -f

  • lsblk:英文是“list block”,即用于列出所有可用块设备的信息
image-20220801195345187

图中的 sr0 是指光驱。

# 7.2 挂载的经典案例 —— 增加一块硬盘

目标:给 Linux 系统增加一块新的硬盘,并且挂载到 /newdisk

主要有以下5个步骤:虚拟机添加硬盘、分区、格式化、挂载、设置可以自动挂载。

# 1)虚拟机添加硬盘

在【虚拟机】菜单中,选择【设置】,然后设备列表里添加硬盘,然后一路【下一步】,中间只有选择磁盘大小的地方需要修改,直到完成。然后重启系统(才能识别)!

# 2)磁盘分区

分区命令:fdisk /dev/sdb

开始对 /sdb 分区:

命令 含义
m 显示命令列表
n 新增分区
d 删除分区
w 写入并退出

做法:开始分区后输入 n,新增分区,然后选择 p,分区类型为主分区,分区号1-4可选,默认为1,1代表为只为磁盘划分一块分区,2代表为磁盘划分两块分区,依次类推。此次案例选择1。两次回车默认剩余全部空间。最后输入 w 写入分区并退出,若不保存退出输入 q。

# 3)格式化磁盘

命令:mkfs -t ext4 /dev/sdb1

  • 其中 ext4 是分区类型

格式化之后才会有上图中的 UUID (唯一标识符)给这个分区,此分区才可以使用。

# 4)挂载

挂载: 将一个分区与一个目录联系起来。

命令:mount 设备名称 挂载目录

  • 此次案例为 mount /dev/sdb1 /newdisk
  • 去除挂载命令为 umount 设备名称或者挂载目录,比如 umount /dev/sdb1 或者 umount /newdisk

# 5)设置自动挂载

用命令行挂载只能实现临时挂载,重启系统后,挂载就会失效。设置自动挂载,即永久挂载,当重启系统,仍然可以挂载到指定目录。

通过修改 /etc/fstab 文件实现永久挂载。

  • 此次案例在文件中增加 /dev/sdb1 /newdisk ext4 defaults 0 0
  • 保存并退出文件后,执行 mount –a 即刻生效

# 7.3 磁盘情况查询

# 7.3.1 查询系统整体磁盘使用情况

命令:df -h

  • df:disk free,显示目前在 Linux 系统上的文件系统磁盘使用情况统计
  • -h:human readable,使用人类可读的格式(预设值是不加这个选项的

可用于查询系统整体磁盘使用情况:

$ df -h
文件系统                 容量  已用  可用 已用% 挂载点
devtmpfs                 974M     0  974M    0% /dev
tmpfs                    991M     0  991M    0% /dev/shm
tmpfs                    991M   11M  980M    2% /run
tmpfs                    991M     0  991M    0% /sys/fs/cgroup
/dev/mapper/centos-root   17G  5.4G   11G   34% /
/dev/sda1                976M  177M  733M   20% /boot
vmhgfs-fuse              400G  317G   84G   80% /mnt/hgfs
tmpfs                    199M   52K  198M    1% /run/user/1000
1
2
3
4
5
6
7
8
9
10
  • 当“已用”超过 80% 后就不正常了,应该想到扩容。

# 7.3.2 查询指定目录的磁盘占用情况

命令:du -h

  • du:disk usage,显示指定的目录或文件所占用的磁盘空间,默认是当前目录。
  • -s:指定目录占用大小汇总
  • -h:带计量单位
  • -a:含文件
  • --max-depth=1:子目录深度为1
  • -c:列出明细的同时,增加汇总值

案例:查看 /opt 目录的磁盘占用情况,深度为 1

$ du -hac --max-depth=1 /opt
163M	/opt/vmware-tools-distrib
4.0K	/opt/rh
54M	    /opt/VMwareTools-10.3.10-13959562.tar.gz
216M	/opt
216M	总用量
1
2
3
4
5
6

# 7.4 磁盘情况 - 工作实用指令

# 1)统计 /opt 文件夹下文件的个数

ls -l /opt | grep "^-" | wc -l

# 2)统计 /opt 文件夹下目录的个数

ls -l /opt | grep "^d" | wc -l

# 3)统计 /opt 文件夹下文件的个数,包括子文件夹下的

ls -lR /opt | grep "^-" | wc -l

# 4)统计 /opt 文件夹下目录的个数,包括子文件夹下的

ls -lR /opt | grep "^d" | wc -l

# 5)以树状显示目录结构

yum install tree 后 tree 指定目录

$ tree .
.
├── aaa
│   └── abc.txt
├── bar.txt
├── foo.txt
1
2
3
4
5
6

补充:wc 命令

wc(Word Count)命令的功能为统计指定文件中的字节数、字数、行数,并将统计结果显示输出。

命令:wc [选项] [文件]

  • -c:统计字节数
  • -l:统计行数
  • -m:统计字符数,这个选项不能与 -c 一起使用
  • -w:统计字数,一个字被定义为由空白、跳格或换行字符分隔的字符串
  • -L:统计最长行的长度
编辑 (opens new window)
上次更新: 2022/08/01, 12:48:16
Linux 基础篇
Linux实操篇(下)

← Linux 基础篇 Linux实操篇(下)→

最近更新
01
YAML、Pod、Job、CronJob、ConfigMap、Secret
06-06
02
Kubernetes 的安装与基本架构
06-04
03
初识容器
05-30
更多文章>
Theme by Vdoing | Copyright © 2022-2023 Nrich | MIT License
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式