标签 磁盘 下的文章

管理分区是一件严肃的事情,尤其是当你不得不删除它们时。我发现自己经常这样做,特别是在使用 U 盘作为实时磁盘和 Linux 安装程序之后,因为它们创建了几个我以后不需要的分区。

在本教程中,我将告诉你如何使用命令行和 GUI 工具在 Linux 中删除分区。

警告!

删除了分区,就会失去你的数据。无论何时,当你在操作分区时,一定要备份你的数据。一个轻微的打字错误或手滑都可能是昂贵的。不要说我们没有警告你!

使用 GParted 删除磁盘分区 (GUI 方法)

作为一个桌面 Linux 用户,你可能会对基于 GUI 的工具感到更舒服,也许更安全。

几个让你在 Linux 上管理分区的工具。根据你的发行版,你的系统上已经安装了一个甚至多个这样的工具。

在本教程中,我将使用 GParted。它是一个流行的开源工具,使用起来非常简单和直观。

第一步是 安装 GParted,如果它还没有在你的系统中。你应该能够在你的发行版的软件中心找到它。

或者,你也可以使用你的发行版的软件包管理器来安装它。在基于 Debian 和 Ubuntu 的 Linux 发行版中,你可以 使用 apt install 命令

sudo apt install gparted

安装完毕后,让我们打开 GParted。由于你正在处理磁盘分区,你需要有 root 权限。它将要求进行认证,打开后,你应该看到一个类似这样的窗口:

在右上角,你可以选择磁盘,在下面选择你想删除的分区。

接下来,从分区菜单中选择 “删除” 选项:

这个过程是没有完整完成的,直到你重写分区表。这是一项安全措施,它让你在确认之前可以选择审查更改。

要完成它,只需点击位于工具栏中的 “应用所有操作” 按钮,然后在要求确认时点击 “应用”。

点击 “应用” 后,你会看到一个进度条和一个结果消息说所有的操作都成功了。你可以关闭该信息和主窗口,并认为你的分区已从磁盘中完全删除。

现在你已经知道了 GUI 的方法,让我们继续使用命令行。

使用 fdisk 命令删除分区(CLI 方法)

几乎每个 Linux 发行版都默认带有 fdisk,我们今天就来使用这个工具。你需要知道的第一件事是,你想删除的分区被分配到哪个设备上了。为此,在终端输入以下内容:

sudo fdisk --list

这将打印出我们系统中所有的驱动器和分区,以及分配的设备。你 需要有 root 权限,以便让它发挥作用。

在本例中,我将使用一个包含两个分区的 USB 驱动器,如下图所示:

系统中分配的设备是 /sdb,它有两个分区:sdb1sdb2。现在你已经确定了哪个设备包含这些分区,你可以通过使用 fdisk 和设备的路径开始操作:

sudo fdisk /dev/sdb

这将在命令模式下启动 fdisk。你可以随时按 m 来查看选项列表。

接下来,输入 p,然后按回车查看分区信息,并确认你正在使用正确的设备。如果使用了错误的设备,你可以使用 q 命令退出 fdisk 并重新开始。

现在输入 d 来删除一个分区,它将立即询问分区编号,这与 “Device” 列中列出的编号相对应,在这个例子中是 1 和 2(在下面的截图中可以看到),但是可以也会根据当前的分区表而有所不同。

让我们通过输入 2 并按下回车来删除第二个分区。你应该看到一条信息:“Partition 2 has been deleted”,但实际上,它还没有被删除。fdisk 还需要一个步骤来重写分区表并应用这些变化。你看,这就是完全网。

你需要输入 w,然后按回车来使这些改变成为永久性的。没有再要求确认。

在这之后,你应该看到下面这样的反馈:

现在,使用 sudo fdisk --list /dev/sdb 查看该设备的当前分区表,你可以看到第二个分区已经完全消失。你已经完成了使用终端和 fdisk 命令来删除你的分区。成功了!

总结

这样,这个关于如何使用终端和 GUI 工具在 Linux 中删除分区的教程就结束了。记住,要始终保持安全,在操作分区之前备份你的文件,并仔细检查你是否使用了正确的设备。删除一个分区将删除其中的所有内容,而几乎没有 恢复 的机会。


via: https://itsfoss.com/delete-partition-linux/

作者:Chris Patrick Carias Stas 选题:lujun9972 译者:geekpi 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出

在 Linux 终端中有两种常用的 检查磁盘使用情况的方法du 命令和 df 命令。du 命令更多的是用来检查目录的使用空间df 命令则是提供文件系统级别的磁盘使用情况。

还有更友好的 用 GNOME “磁盘” 等图形工具在 Linux 中查看磁盘使用情况的方法。如果局限于终端,你可以使用像 ncdu 这样的 TUI 工具,以一种图形化的方式获取磁盘使用信息。

gdu: 在 Linux 终端中检查磁盘使用情况

gdu 就是这样一个用 Go 编写的工具(因此是 gdu 中的 “g”)。gdu 开发者的 基准测试 表明,它的磁盘使用情况检查速度相当快,特别是在 SSD 上。事实上,gdu 主要是针对 SSD 的,尽管它也可以在 HDD 上工作。

如果你在使用 gdu 命令时没有使用任何选项,它就会显示你当前所在目录的磁盘使用情况。

由于它具有文本用户界面(TUI),你可以使用箭头浏览目录和磁盘。你也可以按文件名或大小对结果进行排序。

你可以用它做到:

  • 向上箭头或 k 键将光标向上移动
  • 向下箭头或 j 键将光标向下移动
  • 回车选择目录/设备
  • 左箭头或 h 键转到上级目录
  • 使用 d 键删除所选文件或目录
  • 使用 n 键按名称排序
  • 使用 s 键按大小排序
  • 使用 c 键按项目排序

你会注意到一些条目前的一些符号。这些符号有特定的意义。

  • ! 表示读取目录时发生错误。
  • . 表示在读取子目录时发生错误,大小可能不正确。
  • @ 表示文件是一个符号链接或套接字。
  • H 表示文件已经被计数(硬链接)。
  • e 表示目录为空。

要查看所有挂载磁盘的磁盘利用率和可用空间,使用选项 d

gdu -d

它在一屏中显示所有的细节:

看起来是个方便的工具,对吧?让我们看看如何在你的 Linux 系统上安装它。

在 Linux 上安装 gdu

gdu 是通过 AUR 提供给 Arch 和 Manjaro 用户的。我想,作为一个 Arch 用户,你应该知道如何使用 AUR。

它包含在即将到来的 Ubuntu 21.04 的 universe 仓库中,但有可能你现在还没有使用它。这种情况下,你可以使用 Snap 安装它,这可能看起来有很多条 snap 命令:

snap install gdu-disk-usage-analyzer
snap connect gdu-disk-usage-analyzer:mount-observe :mount-observe
snap connect gdu-disk-usage-analyzer:system-backup :system-backup
snap alias gdu-disk-usage-analyzer.gdu gdu

你也可以在其发布页面找到源代码:

我更习惯于使用 dudf 命令,但我觉得一些 Linux 用户可能会喜欢 gdu。你是其中之一吗?


via: https://itsfoss.com/gdu/

作者:Abhishek Prakash 选题:lujun9972 译者:geekpi 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出

通过使用网络绑定磁盘加密(NBDE),无需手动输入密码即可打开加密磁盘。

从安全的角度来看,对敏感数据进行加密以保护其免受窥探和黑客的攻击是很重要的。 Linux 统一密钥设置 Linux Unified Key Setup LUKS)是一个很好的工具,也是 Linux 磁盘加密的通用标准。因为它将所有相关的设置信息存储在分区头部中,所以它使数据迁移变得简单。

要使用 LUKS 配置加密磁盘或分区,你需要使用 cryptsetup 工具。不幸的是,加密磁盘的一个缺点是,每次系统重启或磁盘重新挂载时,你都必须手动提供密码。

然而, 网络绑定磁盘加密 Network-Bound Disk Encryption (NBDE) 可以在没有任何用户干预的情况下自动安全地解锁加密磁盘。它可以在一些 Linux 发行版中使用,包括从 Red Hat Enterprise Linux 7.4、CentOS 7.4 和 Fedora 24 开始,以及之后的后续版本。

NBDE 采用以下技术实现:

  • Clevis 框架:一个可插拔的框架工具,可自动解密和解锁 LUKS 卷
  • Tang 服务器:用于将加密密钥绑定到网络状态的服务

Tang 向 Clevis 客户端提供加密密钥。据 Tang 的开发人员介绍,这为密钥托管服务提供了一个安全、无状态、匿名的替代方案。

由于 NBDE 使用客户端-服务器架构,你必须同时配置客户端和服务器。你可以在你的本地网络上使用一个虚拟机作为 Tang 服务器。

服务器安装

用 sudo 安装 Tang:

sudo yum install tang -y

启用 Tang 服务器:

sudo systemctl enable tangd.socket --now

Tang 服务器工作在 80 端口,需加入到 firewalld 防火墙。添加相应的 firewalld 规则:

sudo  firewall-cmd --add-port=tcp/80 --perm
sudo firewall-cmd --reload

现在安装好了服务器。

客户端安装

在本例中,假设你已经添加了一个名为 /dev/vdc 的新的 1GB 磁盘到你的系统中。

使用 fdiskparted 创建主分区:

sudo fdisk /dev/vdc

完成以下步骤来安装客户端:

Welcome to fdisk (util-linux 2.23.2).

Changes will remain in memory only, until you decide to write them.
Be careful before using the write command.

Device does not contain a recognized partition table
Building a new DOS disklabel with disk identifier 0x4a6812d4.

Command (m for help):

输入 n 来创建新的分区:

Partition type:
   p   primary (0 primary, 0 extended, 4 free)
   e   extended  
Select (default p):

按下回车键选择主分区:

Using default response p
Partition number (1-4, default 1):

按下回车键选择默认分区号:

First sector (2048-2097151, default 2048):
Using default value 2048
Last sector, +sectors or +size{K,M,G} (2048-2097151, default 2097151):

按回车键选择最后一个扇区:

Using default value 2097151
Partition 1 of type Linux and of size 1023 MiB is set

Command (m for help): wq

输入 wq 保存更改并退出 fdisk

The partition table has been altered!

Calling ioctl() to re-read partition table.
Syncing disks.

运行 partprobe 通知系统分区表的变化:

sudo partprobe

使用 sudo 安装 cryptsetup 软件包:

sudo yum install cryptsetup -y

使用 cryptsetup luksFormat 命令对磁盘进行加密。当提示时,你需要输入大写的 YES,并输入密码来加密磁盘:

sudo cryptsetup luksFormat /dev/vdc1
WARNING!
========
This will overwrite data on /dev/vdc1 irrevocably.

Are you sure? (Type uppercase yes):

Enter passphrase for /dev/vdc1:
Verify passphrase:

使用 cryptsetup luksOpen 命令将加密的分区映射到一个逻辑设备上。例如,使用 encryptedvdc1 作为名称。你还需要再次输入密码:

sudo cryptsetup luksOpen /dev/vdc1 encryptedvdc1
Enter passphrase for /dev/vdc1:

加密分区现在在 /dev/mapper/encryptedvdc1 中可用。

在加密的分区上创建一个 XFS 文件系统:

sudo mkfs.xfs /dev/mapper/encryptedvdc1

创建一个挂载加密分区的目录:

sudo mkdir /encrypted

使用 cryptsetup luksClose 命令锁定分区:

cryptsetup luksClose encryptedvdc1

使用 sudo 安装 Clevis 软件包:

sudo yum install clevis clevis-luks clevis-dracut -y

修改 /etc/crypttab,在启动时打开加密卷:

sudo vim /etc/crypttab

增加以下一行:

encryptedvdc1       /dev/vdc1  none   _netdev

修改 /etc/fstab,在重启时或启动时自动挂载加密卷:

sudo vim /etc/fstab

增加以下一行:

/dev/mapper/encryptedvdc1   /encrypted       xfs    _netdev        1 2

在这个例子中,假设 Tang 服务器的 IP 地址是 192.168.1.20。如果你喜欢,也可以使用主机名或域名。

运行以下 clevis 命令:

sudo clevis bind luks -d /dev/vdc1 tang '{"url":"http://192.168.1.20"}'
The advertisement contains the following signing keys:

rwA2BAITfYLuyNiIeYUMBzkhk7M

Do you wish to trust these keys? [ynYN] Y
Enter existing LUKS password:

输入 Y 接受 Tang 服务器的密钥,并提供现有的 LUKS 密码进行初始设置。

通过 systemctl 启用 clevis-luks-askpass.path,以防止非根分区被提示输入密码。

sudo systemctl enable clevis-luks-askpass.path

客户端已经安装完毕。现在,每当你重启服务器时,加密后的磁盘应该会自动解密,并通过 Tang 服务器取回密钥进行挂载。

如果 Tang 服务器因为任何原因不可用,你需要手动提供密码,才能解密和挂载分区。


via: https://opensource.com/article/20/11/nbde-linux

作者:Curt Warfield 选题:lujun9972 译者:geekpi 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出

我已经使用了多少磁盘空间?

在 Linux 上查找可用磁盘空间的最简单的方法是使用 df 命令df 命令从字面意思上代表着 磁盘可用空间 disk free ,很明显,它将向你显示在 Linux 系统上的可用磁盘空间。

df -h

使用 -h 选项,它将以人类可读的格式(MB 和 GB)来显示磁盘空间。

这里是针对我 Dell XPS 系统的 df 命令的输出,它使用了加密磁盘并且只安装了 Linux:

在 Linux 中使用 df 命令检查可用磁盘空间

如果上面的输出使你感到困惑,不用担心。我将介绍一些关于在 Linux 中检查可用磁盘空间的东西。我也将为桌面 Linux 用户展示 GUI 方法。

方法 1: 使用 df 命令来检查在 Linux 中的可用磁盘空间(并理解它的输出)

当你使用 df 命令来检查磁盘空间时,它将显示一组“文件系统”,包括它们的大小、使用的空间和可用的空间。你实际的磁盘通常应该下面列表中的一个:

  • /dev/sda
  • /dev/sdb
  • /dev/nvme0n1p

这不是硬性的标准,但是它可以给予你一个指示,它可以让你能够很容易地从一堆文字中辨别出真正的磁盘。

你的 Linux 系统在你的磁盘上可能有一些用于引导 分区、EFI 分区、根分区、交换分区、家目录等的分区。在这种情况下,这些分区在“磁盘名称”的结尾处使用一个数字来标示,像 /dev/sda1/dev/nvme0n1p2 等等。

你可以从它们的挂载点来辨认出哪个分区是用于做什么的。根分区挂载在 /、EFI 分区在 /boot/EFI 等等。

就我的情况来说,我已经使用了根分区下磁盘空间(232 GB)的 41% 。如果你有 2 到 3 个大分区(像根分区、家目录分区等等),你将不得不在这里计算一下已使用的磁盘空间。

理解 df 命令输出

  • tmpfstmpfs(临时文件系统)用于在虚拟存储器中保持文件。你可以随意地忽略这个虚拟文件系统。
  • udevudev 文件系统 用于存储插入到你系统的设备(像 USB、网卡、CD ROM 等等)的相关信息。你也可以忽略它。
  • /dev/loop: 它们是环回设备。由于 snap 应用程序,在 Ubuntu 中查看磁盘时,你将看到很多的这样的设备。环回设备是虚拟设备,它们允许普通文件作为块设备文件来访问。使用环回设备,snap 应用程序在它们自己的虚拟磁盘中进行沙盒处理。尽管它们是在根分区下,但是你不需要单独计算它们使用的磁盘空间。

丢失了磁盘空间?检查你是否挂载了所有是磁盘和分区

记住,df 命令仅显示已挂载文件系统的磁盘空间。如果你在同一块磁盘上使用多个 Linux 发行版(或者多个操作系统),或者在你的系统上有多个磁盘,你需要先挂载它们,以便查看在这些分区和磁盘上的可用磁盘空间。

例如,我的 Intel NUC 有两个 SSD 磁盘,并且在其上有 4 个或 5 个 Linux 分区。仅当我明确地挂载它们时,df 命令才会显示更多磁盘。

你可以使用 lsblk 命令来查看在你系统上的所有磁盘和分区。

在你有了磁盘分区名称后,你可以用这种方式来挂载它:

sudo mount /dev/sdb2 /mnt

我希望这种方法能够给你提供一个在 Linux 上检查硬盘驱动器空间的好主意。让我们看看如何在 GUI 下来完成。

方法 2: 在 GUI 下检查可用磁盘使用情况

在 Ubuntu 中使用 “Disk Usage Analyzer” 工具来在 GUI 的方式下检查可用磁盘空间是很容易的。

Disk Usage Analyzer 工具

在这里,你将看到所有实际的磁盘和分区。你可能需要单击一些分区来挂载它们。它显示所有已挂载分区的磁盘使用情况。

磁盘使用情况检查

使用 GNOME 的 Disks 实用程序来检查可用磁盘空间

除此之外,GNOME 的 Disks 实用程序也是非常容易使用的工具。

GNOME 的 Disks 工具

启动工具和选择磁盘。选择一个分区来查看可用磁盘空间。如果没有挂载分区,那么先通过单击 “▶” 图标来挂载它。

检查 Ubuntu 的桌面版本的可用磁盘空间

我认为在 Linux 上的所有主要桌面环境都有某种图形工具来检查磁盘使用情况。你可以在你是桌面 Linux 系统的菜单中搜索它。

结束语

当然,有很多方法和工具来检查磁盘空间。为此,我向你显示了最常用的命令行方法和 GUI 方法。

我也解释一些可能会让你很难理解磁盘使用情况的东西。希望你喜欢它。

如果你有问题或建议,请在评论区告诉我。


via: https://itsfoss.com/check-free-disk-space-linux/

作者:Abhishek Prakash 选题:lujun9972 译者:robsean 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出

你应该已经注意到,在 Linux 中使用 ls 命令 列出的目录内容中,目录的大小仅显示 4KB。这个大小正确吗?如果不正确,那它代表什么,又该如何获取 Linux 中的目录或文件夹大小?这是一个默认的大小,是用来存储磁盘上存储目录的元数据的大小。

Linux 上有一些应用程序可以 获取目录的实际大小。其中,磁盘使用率(du)命令已被 Linux 管理员广泛使用。

我将向您展示如何使用各种选项获取文件夹大小。

什么是 du 命令?

du 命令 表示 磁盘使用率 Disk Usage 。这是一个标准的 Unix 程序,用于估计当前工作目录中的文件空间使用情况。

它使用递归方式总结磁盘使用情况,以获取目录及其子目录的大小。

如同我说的那样, 使用 ls 命令时,目录大小仅显示 4KB。参见下面的输出。

$ ls -lh | grep ^d

drwxr-xr-x  3 daygeek daygeek 4.0K Aug  2 13:57 Bank_Details
drwxr-xr-x  2 daygeek daygeek 4.0K Mar 15  2019 daygeek
drwxr-xr-x  6 daygeek daygeek 4.0K Feb 16  2019 drive-2daygeek
drwxr-xr-x 13 daygeek daygeek 4.0K Jan  6  2019 drive-mageshm
drwxr-xr-x 15 daygeek daygeek 4.0K Sep 29 21:32 Thanu_Photos

1) 在 Linux 上如何只获取父目录的大小

使用以下 du 命令格式获取给定目录的总大小。在该示例中,我们将得到 /home/daygeek/Documents 目录的总大小。

$ du -hs /home/daygeek/Documents
或
$ du -h --max-depth=0 /home/daygeek/Documents/
20G    /home/daygeek/Documents

详细说明:

  • du – 这是一个命令
  • -h – 以易读的格式显示大小 (例如 1K 234M 2G)
  • -s – 仅显示每个参数的总数
  • --max-depth=N – 目录的打印深度

2) 在 Linux 上如何获取每个目录的大小

使用以下 du 命令格式获取每个目录(包括子目录)的总大小。

在该示例中,我们将获得每个 /home/daygeek/Documents 目录及其子目录的总大小。

$ du -h /home/daygeek/Documents/ | sort -rh | head -20

20G    /home/daygeek/Documents/
9.6G    /home/daygeek/Documents/drive-2daygeek
6.3G    /home/daygeek/Documents/Thanu_Photos
5.3G    /home/daygeek/Documents/Thanu_Photos/Camera
5.3G    /home/daygeek/Documents/drive-2daygeek/Thanu-videos
3.2G    /home/daygeek/Documents/drive-mageshm
2.3G    /home/daygeek/Documents/drive-2daygeek/Thanu-Photos
2.2G    /home/daygeek/Documents/drive-2daygeek/Thanu-photos-by-month
916M    /home/daygeek/Documents/drive-mageshm/Tanisha
454M    /home/daygeek/Documents/drive-mageshm/2g-backup
415M    /home/daygeek/Documents/Thanu_Photos/WhatsApp Video
300M    /home/daygeek/Documents/drive-2daygeek/Thanu-photos-by-month/Jan-2017
288M    /home/daygeek/Documents/drive-2daygeek/Thanu-photos-by-month/Oct-2017
226M    /home/daygeek/Documents/drive-2daygeek/Thanu-photos-by-month/Sep-2017
219M    /home/daygeek/Documents/Thanu_Photos/WhatsApp Documents
213M    /home/daygeek/Documents/drive-mageshm/photos
163M    /home/daygeek/Documents/Thanu_Photos/WhatsApp Video/Sent
161M    /home/daygeek/Documents/Thanu_Photos/WhatsApp Images
154M    /home/daygeek/Documents/drive-2daygeek/Thanu-photos-by-month/June-2017
150M    /home/daygeek/Documents/drive-2daygeek/Thanu-photos-by-month/Nov-2016

3) 在 Linux 上如何获取每个目录的摘要

使用如下 du 命令格式仅获取每个目录的摘要。

$ du -hs /home/daygeek/Documents/* | sort -rh | head -10

9.6G    /home/daygeek/Documents/drive-2daygeek
6.3G    /home/daygeek/Documents/Thanu_Photos
3.2G    /home/daygeek/Documents/drive-mageshm
756K    /home/daygeek/Documents/Bank_Details
272K    /home/daygeek/Documents/user-friendly-zorin-os-15-has-been-released-TouchInterface1.png
172K    /home/daygeek/Documents/user-friendly-zorin-os-15-has-been-released-NightLight.png
164K    /home/daygeek/Documents/ConfigServer Security and Firewall (csf) Cheat Sheet.pdf
132K    /home/daygeek/Documents/user-friendly-zorin-os-15-has-been-released-Todo.png
112K    /home/daygeek/Documents/user-friendly-zorin-os-15-has-been-released-ZorinAutoTheme.png
96K    /home/daygeek/Documents/distro-info.xlsx

4) 在 Linux 上如何获取每个目录的不含子目录的大小

使用如下 du 命令格式来展示每个目录的总大小,不包括子目录。

$ du -hS /home/daygeek/Documents/ | sort -rh | head -20

5.3G    /home/daygeek/Documents/Thanu_Photos/Camera
5.3G    /home/daygeek/Documents/drive-2daygeek/Thanu-videos
2.3G    /home/daygeek/Documents/drive-2daygeek/Thanu-Photos
1.5G    /home/daygeek/Documents/drive-mageshm
831M    /home/daygeek/Documents/drive-mageshm/Tanisha
454M    /home/daygeek/Documents/drive-mageshm/2g-backup
300M    /home/daygeek/Documents/drive-2daygeek/Thanu-photos-by-month/Jan-2017
288M    /home/daygeek/Documents/drive-2daygeek/Thanu-photos-by-month/Oct-2017
253M    /home/daygeek/Documents/Thanu_Photos/WhatsApp Video
226M    /home/daygeek/Documents/drive-2daygeek/Thanu-photos-by-month/Sep-2017
219M    /home/daygeek/Documents/Thanu_Photos/WhatsApp Documents
213M    /home/daygeek/Documents/drive-mageshm/photos
163M    /home/daygeek/Documents/Thanu_Photos/WhatsApp Video/Sent
154M    /home/daygeek/Documents/drive-2daygeek/Thanu-photos-by-month/June-2017
150M    /home/daygeek/Documents/drive-2daygeek/Thanu-photos-by-month/Nov-2016
127M    /home/daygeek/Documents/drive-2daygeek/Thanu-photos-by-month/Dec-2016
100M    /home/daygeek/Documents/drive-2daygeek/Thanu-photos-by-month/Oct-2016
94M    /home/daygeek/Documents/drive-2daygeek/Thanu-photos-by-month/Nov-2017
92M    /home/daygeek/Documents/Thanu_Photos/WhatsApp Images
90M    /home/daygeek/Documents/drive-2daygeek/Thanu-photos-by-month/Dec-2017

5) 在 Linux 上如何仅获取一级子目录的大小

如果要获取 Linux 上给定目录的一级子目录(包括其子目录)的大小,请使用以下命令格式。

$ du -h --max-depth=1 /home/daygeek/Documents/

3.2G    /home/daygeek/Documents/drive-mageshm
4.0K    /home/daygeek/Documents/daygeek
756K    /home/daygeek/Documents/Bank_Details
9.6G    /home/daygeek/Documents/drive-2daygeek
6.3G    /home/daygeek/Documents/Thanu_Photos
20G    /home/daygeek/Documents/

6) 如何在 du 命令输出中获得总计

如果要在 du 命令输出中获得总计,请使用以下 du 命令格式。

$ du -hsc /home/daygeek/Documents/* | sort -rh | head -10

20G    total
9.6G    /home/daygeek/Documents/drive-2daygeek
6.3G    /home/daygeek/Documents/Thanu_Photos
3.2G    /home/daygeek/Documents/drive-mageshm
756K    /home/daygeek/Documents/Bank_Details
272K    /home/daygeek/Documents/user-friendly-zorin-os-15-has-been-released-TouchInterface1.png
172K    /home/daygeek/Documents/user-friendly-zorin-os-15-has-been-released-NightLight.png
164K    /home/daygeek/Documents/ConfigServer Security and Firewall (csf) Cheat Sheet.pdf
132K    /home/daygeek/Documents/user-friendly-zorin-os-15-has-been-released-Todo.png
112K    /home/daygeek/Documents/user-friendly-zorin-os-15-has-been-released-ZorinAutoTheme.png

via: https://www.2daygeek.com/find-get-size-of-directory-folder-linux-disk-usage-du-command/

作者:Magesh Maruthamuthu 选题:lujun9972 译者:lnrCoder 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出

Linux 发行版提供了几个度量磁盘活动的有用命令。让我们了解一下其中的几个。

Linux 系统提供了一套方便的命令,帮助你查看磁盘有多忙,而不仅仅是磁盘有多满。在本文中,我们将研究五个非常有用的命令,用于查看磁盘活动。其中两个命令(iostatioping)可能必须添加到你的系统中,这两个命令一样要求你使用 sudo 特权,所有这五个命令都提供了查看磁盘活动的有用方法。

这些命令中最简单、最直观的一个可能是 dstat 了。

dtstat

尽管 dstat 命令以字母 “d” 开头,但它提供的统计信息远远不止磁盘活动。如果你只想查看磁盘活动,可以使用 -d 选项。如下所示,你将得到一个磁盘读/写测量值的连续列表,直到使用 CTRL-c 停止显示为止。注意,在第一个报告信息之后,显示中的每个后续行将在接下来的时间间隔内报告磁盘活动,缺省值仅为一秒。

$ dstat -d
-dsk/total-
 read  writ
 949B   73k
  65k     0    <== first second
   0    24k    <== second second
   0    16k
   0    0 ^C

-d 选项后面包含一个数字将把间隔设置为该秒数。

$ dstat -d 10
-dsk/total-
 read  writ
 949B   73k
  65k   81M    <== first five seconds
   0    21k    <== second five second
   0  9011B ^C

请注意,报告的数据可能以许多不同的单位显示——例如,M(Mb)、K(Kb)和 B(字节)。

如果没有选项,dstat 命令还将显示许多其他信息——指示 CPU 如何使用时间、显示网络和分页活动、报告中断和上下文切换。

$ dstat
You did not select any stats, using -cdngy by default.
--total-cpu-usage-- -dsk/total- -net/total- ---paging-- ---system--
usr sys idl wai stl| read  writ| recv  send|  in   out | int   csw
  0   0 100   0   0| 949B   73k|   0     0 |   0     3B|  38    65
  0   0 100   0   0|   0     0 | 218B  932B|   0     0 |  53    68
  0   1  99   0   0|   0    16k|  64B  468B|   0     0 |  64    81 ^C

dstat 命令提供了关于整个 Linux 系统性能的有价值的见解,几乎可以用它灵活而功能强大的命令来代替 vmstatnetstatiostatifstat 等较旧的工具集合,该命令结合了这些旧工具的功能。要深入了解 dstat 命令可以提供的其它信息,请参阅这篇关于 dstat 命令的文章。

iostat

iostat 命令通过观察设备活动的时间与其平均传输速率之间的关系,帮助监视系统输入/输出设备的加载情况。它有时用于评估磁盘之间的活动平衡。

$ iostat
Linux 4.18.0-041800-generic (butterfly)         12/26/2018      _x86_64_       (2 CPU)

avg-cpu:  %user   %nice %system %iowait  %steal   %idle
           0.07    0.01    0.03    0.05    0.00   99.85

Device             tps    kB_read/s    kB_wrtn/s    kB_read    kB_wrtn
loop0             0.00         0.00         0.00       1048          0
loop1             0.00         0.00         0.00        365          0
loop2             0.00         0.00         0.00       1056          0
loop3             0.00         0.01         0.00      16169          0
loop4             0.00         0.00         0.00        413          0
loop5             0.00         0.00         0.00       1184          0
loop6             0.00         0.00         0.00       1062          0
loop7             0.00         0.00         0.00       5261          0
sda               1.06         0.89        72.66    2837453  232735080
sdb               0.00         0.02         0.00      48669         40
loop8             0.00         0.00         0.00       1053          0
loop9             0.01         0.01         0.00      18949          0
loop10            0.00         0.00         0.00         56          0
loop11            0.00         0.00         0.00       7090          0
loop12            0.00         0.00         0.00       1160          0
loop13            0.00         0.00         0.00        108          0
loop14            0.00         0.00         0.00       3572          0
loop15            0.01         0.01         0.00      20026          0
loop16            0.00         0.00         0.00         24          0

当然,当你只想关注磁盘时,Linux 回环设备上提供的所有统计信息都会使结果显得杂乱无章。不过,该命令也确实提供了 -p 选项,该选项使你可以仅查看磁盘——如以下命令所示。

$ iostat -p sda
Linux 4.18.0-041800-generic (butterfly)         12/26/2018      _x86_64_        (2 CPU)

avg-cpu:  %user   %nice %system %iowait  %steal   %idle
           0.07    0.01    0.03    0.05    0.00   99.85

Device             tps    kB_read/s    kB_wrtn/s    kB_read    kB_wrtn
sda               1.06         0.89        72.54    2843737  232815784
sda1              1.04         0.88        72.54    2821733  232815784

请注意 tps 是指每秒的传输量。

你还可以让 iostat 提供重复的报告。在下面的示例中,我们使用 -d 选项每五秒钟进行一次测量。

$ iostat -p sda -d 5
Linux 4.18.0-041800-generic (butterfly)         12/26/2018      _x86_64_        (2 CPU)

Device             tps    kB_read/s    kB_wrtn/s    kB_read    kB_wrtn
sda               1.06         0.89        72.51    2843749  232834048
sda1              1.04         0.88        72.51    2821745  232834048

Device             tps    kB_read/s    kB_wrtn/s    kB_read    kB_wrtn
sda               0.80         0.00        11.20          0         56
sda1              0.80         0.00        11.20          0         56

如果你希望省略第一个(自启动以来的统计信息)报告,请在命令中添加 -y

$ iostat -p sda -d 5 -y
Linux 4.18.0-041800-generic (butterfly)         12/26/2018      _x86_64_        (2 CPU)

Device             tps    kB_read/s    kB_wrtn/s    kB_read    kB_wrtn
sda               0.80         0.00        11.20          0         56
sda1              0.80         0.00        11.20          0         56

接下来,我们看第二个磁盘驱动器。

$ iostat -p sdb
Linux 4.18.0-041800-generic (butterfly)         12/26/2018      _x86_64_        (2 CPU)

avg-cpu:  %user   %nice %system %iowait  %steal   %idle
           0.07    0.01    0.03    0.05    0.00   99.85

Device             tps    kB_read/s    kB_wrtn/s    kB_read    kB_wrtn
sdb               0.00         0.02         0.00      48669         40
sdb2              0.00         0.00         0.00       4861         40
sdb1              0.00         0.01         0.00      35344          0

iotop

iotop 命令是类似 top 的实用程序,用于查看磁盘 I/O。它收集 Linux 内核提供的 I/O 使用信息,以便你了解哪些进程在磁盘 I/O 方面的要求最高。在下面的示例中,循环时间被设置为 5 秒。显示将自动更新,覆盖前面的输出。

$ sudo iotop -d 5
Total DISK READ:         0.00 B/s | Total DISK WRITE:      1585.31 B/s
Current DISK READ:       0.00 B/s | Current DISK WRITE:      12.39 K/s
  TID  PRIO  USER     DISK READ  DISK WRITE  SWAPIN     IO>    COMMAND
32492 be/4 root        0.00 B/s    0.00 B/s  0.00 %  0.12 % [kworker/u8:1-ev~_power_efficient]
  208 be/3 root        0.00 B/s 1585.31 B/s  0.00 %  0.11 % [jbd2/sda1-8]
    1 be/4 root        0.00 B/s    0.00 B/s  0.00 %  0.00 % init splash
    2 be/4 root        0.00 B/s    0.00 B/s  0.00 %  0.00 % [kthreadd]
    3 be/0 root        0.00 B/s    0.00 B/s  0.00 %  0.00 % [rcu_gp]
    4 be/0 root        0.00 B/s    0.00 B/s  0.00 %  0.00 % [rcu_par_gp]
    8 be/0 root        0.00 B/s    0.00 B/s  0.00 %  0.00 % [mm_percpu_wq]

ioping

ioping 命令是一种完全不同的工具,但是它可以报告磁盘延迟——也就是磁盘响应请求需要多长时间,而这有助于诊断磁盘问题。

$ sudo ioping /dev/sda1
4 KiB <<< /dev/sda1 (block device 111.8 GiB): request=1 time=960.2 us (warmup)
4 KiB <<< /dev/sda1 (block device 111.8 GiB): request=2 time=841.5 us
4 KiB <<< /dev/sda1 (block device 111.8 GiB): request=3 time=831.0 us
4 KiB <<< /dev/sda1 (block device 111.8 GiB): request=4 time=1.17 ms
^C
--- /dev/sda1 (block device 111.8 GiB) ioping statistics ---
3 requests completed in 2.84 ms, 12 KiB read, 1.05 k iops, 4.12 MiB/s
generated 4 requests in 3.37 s, 16 KiB, 1 iops, 4.75 KiB/s
min/avg/max/mdev = 831.0 us / 947.9 us / 1.17 ms / 158.0 us

atop

atop 命令,像 top 一样提供了大量有关系统性能的信息,包括有关磁盘活动的一些统计信息。

ATOP - butterfly      2018/12/26  17:24:19      37d3h13m------ 10ed
PRC | sys    0.03s | user   0.01s | #proc    179 | #zombie    0 | #exit      6 |
CPU | sys       1% | user      0% | irq       0% | idle    199% | wait      0% |
cpu | sys       1% | user      0% | irq       0% | idle     99% | cpu000 w  0% |
CPL | avg1    0.00 | avg5    0.00 | avg15   0.00 | csw      677 | intr     470 |
MEM | tot     5.8G | free  223.4M | cache   4.6G | buff  253.2M | slab  394.4M |
SWP | tot     2.0G | free    2.0G |              | vmcom   1.9G | vmlim   4.9G |
DSK |          sda | busy      0% | read       0 | write      7 | avio 1.14 ms |
NET | transport    | tcpi 4 | tcpo  stall      8 | udpi 1 | udpo 0swout   2255 |
NET | network      | ipi       10 | ipo 7 | ipfrw      0 | deliv      60.67 ms |
NET | enp0s25   0% | pcki      10 | pcko 8 | si    1 Kbps | so    3 Kbp0.73 ms |

  PID SYSCPU  USRCPU  VGROW   RGROW  ST EXC   THR  S CPUNR   CPU  CMD 1/1673e4 |
 3357  0.01s   0.00s   672K    824K  --   -     1  R     0    0%  atop
 3359  0.01s   0.00s     0K      0K  NE   0     0  E     -    0%  <ps>
 3361  0.00s   0.01s     0K      0K  NE   0     0  E     -    0%  <ps>
 3363  0.01s   0.00s     0K      0K  NE   0     0  E     -    0%  <ps>
31357  0.00s   0.00s     0K      0K  --   -     1  S     1    0%  bash
 3364  0.00s   0.00s  8032K    756K  N-   -     1  S     1    0%  sleep
 2931  0.00s   0.00s     0K      0K  --   -     1  I     1    0%  kworker/u8:2-e
 3356  0.00s   0.00s     0K      0K  -E   0     0  E     -    0%  <sleep>
 3360  0.00s   0.00s     0K      0K  NE   0     0  E     -    0%  <sleep>
 3362  0.00s   0.00s     0K      0K  NE   0     0  E     -    0%  <sleep>

如果你想查看磁盘统计信息,则可以使用以下命令轻松进行管理:

$ atop | grep DSK
DSK |          sda | busy      0% | read  122901 | write 3318e3 | avio 0.67 ms |
DSK |          sdb | busy      0% | read    1168 | write    103 | avio 0.73 ms |
DSK |          sda | busy      2% | read       0 | write     92 | avio 2.39 ms |
DSK |          sda | busy      2% | read       0 | write     94 | avio 2.47 ms |
DSK |          sda | busy      2% | read       0 | write     99 | avio 2.26 ms |
DSK |          sda | busy      2% | read       0 | write     94 | avio 2.43 ms |
DSK |          sda | busy      2% | read       0 | write     94 | avio 2.43 ms |
DSK |          sda | busy      2% | read       0 | write     92 | avio 2.43 ms |
^C

了解磁盘 I/O

Linux 提供了足够的命令,可以让你很好地了解磁盘的工作强度,并帮助你关注潜在的问题或减缓。希望这些命令中的一个可以告诉你何时需要质疑磁盘性能。偶尔使用这些命令将有助于确保当你需要检查磁盘,特别是忙碌或缓慢的磁盘时可以显而易见地发现它们。


via: https://www.networkworld.com/article/3330497/linux/linux-commands-for-measuring-disk-activity.html

作者:Sandra Henry-Stocker 选题:lujun9972 译者:laingke 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出