分类 分享 下的文章

对于 Linux 图形界面用户和 Windows 用户来说获取系统硬件信息都不算问题,但是对命令行用户来说想要获取这些细节时有点儿麻烦。

甚至我们中的大多数都不知道获取这些信息最好的命令是什么。Linux 中有许多可用的工具集来获取诸如制造商、型号和序列号等硬件信息。

在这里我尝试写下获取这些细节的可能的方式,你可以挑选一种最好用的。

你必须知道所有这些信息,因为当你向硬件制造商提交任何硬件问题时,你会需要它们。

这可以通过 6 种方法来实现,下面我来演示一下怎么做。

方法一:使用 dmidecode 命令

dmidecode 是一个读取电脑 DMI( 桌面管理接口 Desktop Management Interface )表内容并且以人类可读的格式显示系统硬件信息的工具。(也有人说是读取 SMBIOS —— 系统管理 BIOS System Management BIOS

这个表包含系统硬件组件的说明,也包含如序列号、制造商、发布日期以及 BIOS 修订版本号等其它有用的信息。

DMI 表不仅描述了当前的系统构成,还可以报告可能的升级信息(比如可以支持的最快的 CPU 或者最大的内存容量)。

这将有助于分析你的硬件兼容性,比如是否支持最新版本的程序。

# dmidecode -t system

# dmidecode 2.12
# SMBIOS entry point at 0x7e7bf000
SMBIOS 2.7 present.

Handle 0x0024, DMI type 1, 27 bytes
System Information
 Manufacturer: IBM
 Product Name: System x2530 M4: -[1214AC1]-
 Version: 0B
 Serial Number: MK2RL11
 UUID: 762A99BF-6916-450F-80A6-B2E9E78FC9A1
 Wake-up Type: Power Switch
 SKU Number: Not Specified
 Family: System X

Handle 0x004B, DMI type 12, 5 bytes
System Configuration Options
 Option 1: JP20 pin1-2: TPM PP Disable, pin2-3: TPM PP Enable

Handle 0x004D, DMI type 32, 20 bytes
System Boot Information
 Status: No errors detected

推荐阅读: Dmidecode –– 获取 Linux 系统硬件信息的简单方式

方法二:使用 inxi 命令

inxi 是 Linux 上查看硬件信息的一个灵巧的小工具,它提供了大量的选项来获取所有硬件信息,这是我在现有的其它 Linux 工具集里所没见到过的。它是从 locsmif 编写的古老的但至今看来都异常灵活的 infobash fork 出来的。

inxi 是一个可以快速显示系统硬件、CPU、驱动、Xorg、桌面、内核、GCC 版本、进程、内存使用以及大量其它有用信息的脚本,也可以用来做技术支持和调试工具。

# inxi -M
Machine: Device: server System: IBM product: N/A v: 0B serial: MK2RL11
 Mobo: IBM model: 00Y8494 serial: 37M17D UEFI: IBM v: -[VVE134MUS-1.50]- date: 08/30/2013

推荐阅读: inxi —— 一个很棒的查看 Linux 硬件信息的工具

方法三:使用 lshw 命令

lshw(指 硬件监听器 Hardware Lister )是一个小巧灵活的工具,可以生成如内存配置、固件版本、主板配置、CPU 版本和速度、缓存配置、USB、网卡、显卡、多媒体、打印机以及总线速度等机器中各种硬件组件的详细报告。

它通过读取 /proc 目录下各种文件的内容和 DMI 表来生成硬件信息。

lshw 必须以超级用户的权限运行来检测完整的硬件信息,否则它只汇报部分信息。lshw 里有一个叫做 class 的特殊选项,它可以以详细的模式显示特定的硬件信息。

# lshw -C system
enal-dbo01t
 description: Blade
 product: System x2530 M4: -[1214AC1]-
 vendor: IBM
 version: 0B
 serial: MK2RL11
 width: 64 bits
 capabilities: smbios-2.7 dmi-2.7 vsyscall32
 configuration: boot=normal chassis=enclosure family=System X uuid=762A99BF-6916-450F-80A6-B2E9E78FC9A1

推荐阅读: LSHW (Hardware Lister) –– 获取 Linux 硬件信息的灵巧的小工具

方法四:使用 /sys 文件系统

内核在 /sys 目录下的文件中公开了一些 DMI 信息。因此,我们可以通过如下方式运行 grep 命令来轻易地获取机器类型。

# grep "" /sys/class/dmi/id/[pbs]*

或者,可以使用 cat 命令仅打印出特定的详细信息。

# cat /sys/class/dmi/id/board_vendor
IBM

# cat /sys/class/dmi/id/product_name
System x2530 M4: -[1214AC1]-

# cat /sys/class/dmi/id/product_serial
MK2RL11

# cat /sys/class/dmi/id/bios_version
-[VVE134MUS-1.50]-

方法五:使用 dmesg 命令

dmesg 命令是在 Linux 上 syslogdklogd 启动前用来记录内核消息(启动阶段的消息)的。它通过读取内核的环形缓冲区来获取数据。在排查问题或只是尝试获取系统硬件信息时,dmesg 非常有用。

# dmesg | grep -i DMI
DMI: System x2530 M4: -[1214AC1]-/00Y8494, BIOS -[VVE134MUS-1.50]- 08/30/2013

方法六:使用 hwinfo 命令

hwinfo 硬件信息 hardware information )是另一个很棒的工具,用于检测当前系统存的硬件,并以人类可读的方式显示各种硬件模块的详细信息。

它报告关于 CPU、内存、键盘、鼠标、显卡、声卡、存储、网络接口、磁盘、分区、BIOS 以及桥接器等信息。它可以比其它像 lshwdmidecodeinxi 等工具显示更为详细的信息。

hwinfo 使用 libhd 库 libhd.so 来收集系统上的硬件信息。该工具是为 openSuse 特别设计的,后来其它发行版也将它包含在其官方仓库中。

# hwinfo | egrep "system.hardware.vendor|system.hardware.product"
 system.hardware.vendor = 'IBM'
 system.hardware.product = 'System x2530 M4: -[1214AC1]-'

推荐阅读: hwinfo (Hardware Info) –– 一款灵活的检测 Linux 系统硬件信息的工具


via: https://www.2daygeek.com/how-to-check-system-hardware-manufacturer-model-and-serial-number-in-linux/

作者:VINOTH KUMAR 选题:lujun9972 译者:icecoobe 校对:pityonline

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

Arch 用户你们好!今天,我偶然发现了一个叫做 “ArchI0” 的实用工具,它是基于命令行菜单的 Arch Linux 应用自动安装脚本。使用此脚本是为基于 Arch 的发行版安装所有必要的应用最简易的方式。请注意此脚本仅适用于菜鸟级使用者。中高级使用者可以轻松掌握如何使用 pacman来完成这件事。如果你想学习如何使用 Arch Linux,我建议你一个个手动安装所有的软件。对那些仍是菜鸟并且希望为自己基于 Arch 的系统快速安装所有必要应用的用户,可以使用此脚本。

ArchI0 – Arch Linux 应用自动安装脚本

此脚本的开发者已经制作了 ArchI0liveArchI0 两个脚本。你可以通过 ArchI0live 测试应用,无需安装。这可能有助于在将脚本安装到系统之前了解其实际内容。

安装 ArchI0

要安装此脚本,使用如下命令通过 Git 克隆 ArchI0 脚本仓库:

$ git clone https://github.com/SifoHamlaoui/ArchI0.git

上面的命令会克隆 ArchI0 的 Github 仓库内容,在你当前目录的一个名为 ArchI0 的文件夹里。使用如下命令进入此目录:

$ cd ArchI0/

使用如下命令赋予脚本可执行权限:

$ chmod +x ArchI0live.sh

使用如下命令执行脚本:

$ sudo ./ArchI0live.sh

此脚本需要以 root 或 sudo 用户身份执行,因为安装应用需要 root 权限。

注意: 有些人想知道此脚本中开头的那些命令是做什么的,第一个命令是下载 figlet,因为此脚本的 logo 是使用 figlet 显示的。第二个命令是安装用来打开并查看许可协议文件的 Leafpad。第三个命令是安装用于从 sourceforge 下载文件的 wget。第四和第五个命令是下载许可协议文件并用 leafpad 打开。此外,最后的第 6 条命令是在阅读许可协议文件之后关闭它。

输入你的 Arch Linux 系统架构然后按回车键。当其请求安装此脚本时,键入 y 然后按回车键。

一旦开始安装,将会重定向至主菜单。

正如前面的截图, ArchI0 包含有 13 类、90 个容易安装的程序。这 90 个程序刚好足够配置一个完整的 Arch Linux 桌面,可执行日常活动。键入 a 可查看关于此脚本的信息,键入 q 可退出此脚本。

安装后无需执行 ArchI0live 脚本。可以直接使用如下命令启动:

$ sudo ArchI0

它会每次询问你选择 Arch Linux 发行版的架构。

This script Is under GPLv3 License

Preparing To Run Script
 Checking For ROOT: PASSED
 What Is Your OS Architecture? {32/64} 64

从现在开始,你可以从主菜单列出的类别选择要安装的程序。要查看特定类别下的可用程序列表,输入类别号即可。举个例子,要查看文本编辑器分类下的可用程序列表,输入 1 然后按回车键。

This script Is under GPLv3 License

[ R00T MENU ]
Make A Choice
 1) Text Editors
 2) FTP/Torrent Applications
 3) Download Managers
 4) Network managers
 5) VPN clients
 6) Chat Applications
 7) Image Editors
 8) Video editors/Record
 9) Archive Handlers
 10) Audio Applications
 11) Other Applications
 12) Development Environments
 13) Browser/Web Plugins
 14) Dotfiles
 15) Usefull Links
 ------------------------
 a) About ArchI0 Script
 q) Leave ArchI0 Script

Choose An Option: 1

接下来,选择你想安装的程序。要返回至主菜单,输入 q 然后按回车键。

我想安装 Emacs,所以我输入 3

This script Is under GPLv3 License

[ TEXT EDITORS ]
 [ Option ] [ Description ]
 1) GEdit
 2) Geany
 3) Emacs
 4) VIM
 5) Kate
 ---------------------------
 q) Return To Main Menu

Choose An Option: 3

现在,Emacs 将会安装至你的 Arch Linux 系统。

所选择的应用安装完成后,你可以按回车键返回主菜单。

结论

毫无疑问,此脚本让 Arch Linux 用户使用起来更加容易,特别是刚开始使用的人。如果你正寻找快速简单无需使用 pacman 安装应用的方法,此脚本是一个不错的选择。试用一下并在下面的评论区让我们知道你对此脚本的看法。

就这些。希望这个工具能帮到你。我们每天都会推送实用的指南。如果你觉得我们的指南挺实用,请分享至你的社交网络,专业圈子并支持我们。

干杯!


via: https://www.ostechnix.com/archi0-arch-linux-applications-automatic-installation-script/

作者:SK 选题:lujun9972 译者:fuowang 校对:wxy

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

前略:Yaourt 曾是最流行的 AUR 助手,但现已停止开发。在这篇文章中,我们会为 Arch 衍生发行版们列出 Yaourt 最佳的替代品。

Arch User Repository (常被称作 AUR),是一个为 Arch 用户而生的社区驱动软件仓库。Debian/Ubuntu 用户的对应类比是 PPA。

AUR 包含了不直接被 Arch Linux 官方所背书的软件。如果有人想在 Arch 上发布软件或者包,它可以通过这个社区仓库提供。这让最终用户们可以使用到比默认仓库里更多的软件。

所以你该如何使用 AUR 呢?简单来说,你需要另外的工具以从 AUR 中安装软件。Arch 的包管理器 pacman 不直接支持 AUR。那些支持 AUR 的“特殊工具”我们称之为 AUR 助手

Yaourt (Yet AnOther User Repository Tool)(曾经)是 pacman 的一个封装,便于用户在 Arch Linux 上安装 AUR 软件。它基本上采用和 pacman 一样的语法。Yaourt 对于 AUR 的搜索、安装,乃至冲突解决和包依赖关系维护都有着良好的支持。

然而,Yaourt 的开发进度近来十分缓慢,甚至在 Arch Wiki 上已经被列为“停止或有问题”。许多 Arch 用户认为它不安全 进而开始寻找其它的 AUR 助手。

Yaourt 以外的 AUR Helpers

在这篇文章中,我们会介绍 Yaourt 最佳的替代品以便于你从 AUR 安装软件。

最好的 AUR 助手

我刻意忽略掉了例如 Trizen 和 Packer 这样的流行的选择,因为它们也被列为“停止或有问题”的了。

1、 aurman

aurman 是最好的 AUR 助手之一,也能胜任 Yaourt 替代品的地位。它有非常类似于 pacman 的语法,可以支持所有的 pacman 操作。你可以搜索 AUR、解决包依赖,在构建 AUR 包前检查 PKGBUILD 的内容等等。

aurman 的特性:

  • aurman 支持所有 pacman 操作,并且引入了可靠的包依赖解决方案、冲突判定和 分包 split package 支持
  • 线程化的 sudo 循环会在后台运行,所以你每次安装只需要输入一次管理员密码
  • 提供开发包支持,并且可以区分显性安装和隐性安装的包
  • 支持搜索 AUR 包和仓库
  • 在构建 AUR 包之前,你可以检视并编辑 PKGBUILD 的内容
  • 可以用作单独的 包依赖解决工具

安装 aurman:

git clone https://aur.archlinux.org/aurman.git
cd aurman
makepkg -si

使用 aurman:

用名字搜索:

aurman -Ss <package-name>

安装:

aurman -S &lt;package-name>

2、 yay

yay 是下一个最好的 AUR 助手。它使用 Go 语言写成,宗旨是提供最少化用户输入的 pacman 界面、yaourt 式的搜索,而几乎没有任何依赖软件。

yay 的特性:

  • yay 提供 AUR 表格补全,并且从 ABS 或 AUR 下载 PKGBUILD
  • 支持收窄搜索,并且不需要引用 PKGBUILD 源
  • yay 的二进制文件除了 pacman 以外别无依赖
  • 提供先进的包依赖解决方案,以及在编译安装之后移除编译时的依赖
  • 当在 /etc/pacman.conf 文件配置中启用了色彩时支持色彩输出
  • yay 可被配置成只支持 AUR 或者 repo 里的软件包

安装 yay:

你可以从 git 克隆并编译安装。

git clone https://aur.archlinux.org/yay.git
cd yay
makepkg -si

使用 yay:

搜索:

yay -Ss <package-name>

安装:

yay -S <package-name>

3、 pakku

Pakku 是另一个还处于开发早期的 pacman 封装,虽然它还处于开放早期,但这不说明它逊于其它任何 AUR 助手。Pakku 能很好地支持从 AUR 搜索和安装,并且也可以在安装后移除不必要的编译依赖。

pakku 的特性:

  • 从 AUR 搜索和安装软件
  • 检视不同构建之间的文件和变化
  • 从官方仓库编译,并事后移除编译依赖
  • 获取 PKGBUILD 以及 pacman 整合
  • 类 pacman 的用户界面和选项支持
  • 支持pacman 配置文件以及无需 PKGBUILD 源

安装 pakku:

git clone https://aur.archlinux.org/pakku.git
cd pakku
makepkg -si

使用 pakku:

搜索:

pakku -Ss spotify

安装:

pakku -S spotify

4、 aurutils

aurutils 本质上是一堆使用 AUR 的自动化脚本的集合。它可以搜索 AUR、检查更新,并且解决包依赖。

aurutils 的特性:

  • aurutils 使用本地仓库以支持 pacman 文件,所有的包都支持 –asdeps
  • 不同的任务可以有多个仓库
  • aursync -u 一键同步本地代码库
  • aursearch 搜索提供 pkgbase、长格式和 raw 支持
  • 能忽略指定包

安装 aurutils:

git clone https://aur.archlinux.org/aurutils.git
cd aurutils
makepkg -si

使用 aurutils:

搜索:

aurutils -Ss <package-name>

安装:

aurutils -S <package-name>

所有这些包,在有 Yaourt 或者其它 AUR 助手的情况下都可以直接安装。

写在最后

Arch Linux 有着很多 AUR 助手 可以自动完成 AUR 各方面的日常任务。很多用户依然使用 Yaourt 来完成 AUR 相关任务,每个人都有自己不一样的偏好,欢迎留言告诉我们你在 Arch 里使用什么,又有什么心得?


via: https://itsfoss.com/best-aur-helpers/

作者:Ambarish Kumar 选题:lujun9972 译者:Moelf 校对:wxy

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

EduBlocks 提供了 Scratch 式的图形界面来编写 Python 3 代码。

如果你正在寻找一种方法将你的学生(或你自己)从使用 Scratch 编程转移到学习 Python,我建议你了解一下 EduBlocks。它为 Python 3 编程带来了熟悉的拖放式图形用户界面(GUI)。

从 Scratch 过渡到 Python 的一个障碍是缺少拖放式 GUI,而正是这种拖放式 GUI 使得 Scratch 成为 K-12 学校的首选程序。EduBlocks 的拖放版的 Python 3 改变了这种范式。它的目的是“帮助教师在较早的时候向儿童介绍基于文本的编程语言,如 Python。”

EduBlocks 的硬件要求非常适中 —— 一个树莓派和一条互联网连接 —— 应该可以在许多教室中使用。

EduBlocks 是由来自英国的 14 岁 Python 开发人员 Joshua Lowe 开发的。我看到 Joshua 在 2018 年 5 月的 PyCon 2018 上展示了他的项目。

入门

安装 EduBlocks 很容易。该网站提供了清晰的安装说明,你可以在项目的 GitHub 仓库中找到详细的截图。

使用以下命令在 Raspberry Pi 命令行安装 EduBlocks:

curl -sSL get.edublocks.org | bash

在 EduBlocks 中编程

安装完成后,从桌面快捷方式或 Raspberry Pi 上的“编程”菜单启动 EduBlocks。

启动程序后,你可以使用 EduBlocks 的拖放界面开始创建 Python 3 代码。它的菜单有清晰的标签。你可以通过单击 Samples 菜单按钮使用示例代码。你还可以通过单击 Theme 为你的编程界面选择不同的配色方案。使用 Save 菜单,你可以保存你的作品,然后 Download 你的 Python 代码。单击 Run 来执行并测试你的代码。

你可以通过单击最右侧的 Blockly 按钮来查看代码。它让你在 ”Blockly” 界面和普通的 Python 代码视图之间切换(正如你在任何其他 Python 编辑器中看到的那样)。

EduBlocks 附带了一系列代码库,包括 EduPythonMinecraftSonic PiGPIO ZeroSense Hat

学习和支持

该项目维护了一个学习门户网站,其中包含教程和其他资源,可以轻松地 hack 树莓派版本的 Minecraft,编写 GPIOZero 和 Sonic Pi,并使用 Micro:bit 代码编辑器控制 LED。可以在 Twitter @edu\_blocks@allaboutcode 以及 email 提供对 EduBlocks 的支持。

为了更深入的了解,你可以在 GitHub 上访问 EduBlocks 的源代码。该程序在 GNU Affero Public License v3.0 下许可。EduBlocks 的创建者(项目负责人 Joshua Lowe 和开发人员 Chris DellLes Pounder)希望它成为一个社区项目,并邀请人们提出问题,提供反馈,以及提交 pull request 以向项目添加功能或修复。


via: https://opensource.com/article/18/8/edublocks

作者:Don Watkins 选题:lujun9972 译者:geekpi 校对:wxy

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

相识 Mu —— 一个可以使学生学习 Python 更轻松的开源编辑器。

Mu 是一个给初学者的 Python 编辑器,它旨在使学习体验更加愉快。它使学生​​能够在早期体验成功,这在你学习任何新知识的时候都很重要。

如果你曾试图教年轻人如何编程,你会立即把握到 Mu 的重要性。大多数编程工具都是由开发人员为开发人员编写的,不管他们的年龄如何,它们并不适合初学者。然而,Mu 是由老师为学生写的。

Mu 的起源

Mu 是 Nicholas Tollervey 的心血结晶(我听过他 5 月份在 PyCon2018 上发言)。Nicholas 是一位受过古典音乐训练的音乐家,在担任音乐老师期间,他在职业生涯早期就开始对 Python 和开发感兴趣。他还写了 Python in Education,这是一本可以从 O'Reilly 下载的免费书。

Nicholas 曾经寻找过一个更简单的 Python 编程界面。他想要一些没有其他编辑器(甚至是 Python 附带的 IDLE3 编辑器 )复杂性的东西,所以他与 Raspberry Pi 基金会(赞助他的工作)的教育总监 Carrie Ann Philbin 合作开发了 Mu 。

Mu 是一个用 Python 编写的开源程序(在 GNU GPLv3 许可证下)。它最初是为 Micro:bit 迷你计算机开发的,但是其他老师的反馈和请求促使他将 Mu 重写为通用的 Python 编辑器。

受音乐启发

Nicholas 对 Mu 的启发来自于他教授音乐的方法。他想知道如果我们按照教授音乐的方式教授编程会如何,并立即看出了差别。与编程不同,我们没有音乐训练营,我们也不会书上学习如何演奏乐器,比如说如何演奏长笛。

Nicholas 说,Mu “旨在成为真实的东西”,因为没有人可以在 30 分钟内学习 Python。当他开发 Mu 时,他与老师一起工作,观察编程俱乐部,并观看中学生使用 Python。他发现少即多,保持简单可以改善成品的功能。Nicholas 说,Mu 只有大约 3,000 行代码。

使用 Mu

要尝试它,下载 Mu 并按照 Linux、Windows 和 Mac OS的简易安装说明进行操作。如果像我一样,你想在 Raspberry Pi 上安装,请在终端中输入以下内容:

$ sudo apt-get update
$ sudo apt-get install mu

从编程菜单启动 Mu。然后你就可以选择如何使用 Mu。

我选择了Python 3,它启动了编写代码的环境。Python shell 直接在下面,它允许你查看代码执行。

菜单使用和理解非常简单,这实现了 Mu 的目标 —— 让编写代码对初学者简单。

在 Mu 用户的网站上可找到教程和其他资源。在网站上,你还可以看到一些帮助开发 Mu 的志愿者的名字。如果你想成为其中之一并为 Mu 的发展做出贡献,我们非常欢迎您。


via: https://opensource.com/article/18/8/getting-started-mu-python-editor-beginners

作者:Don Watkins 选题:lujun9972 译者:geekpi 校对:wxy

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

Fio(Flexible I/O Tester) 是一款由 Jens Axboe 开发的用于测评和压力/硬件验证的自由开源的软件。

它支持 19 种不同类型的 I/O 引擎 (sync、mmap、libaio、posixaio、SG v3、splice、null、network、 syslet、guasi、solarisaio,以及更多), I/O 优先级(针对较新的 Linux 内核),I/O 速度,fork 的任务或线程任务等等。它能够在块设备和文件上工作。

Fio 接受一种非常简单易于理解的文本格式的任务描述。软件默认包含了几个示例任务文件。 Fio 展示了所有类型的 I/O 性能信息,包括完整的 IO 延迟和百分比。

它被广泛的应用在非常多的地方,包括测评、QA,以及验证用途。它支持 Linux 、FreeBSD 、NetBSD、 OpenBSD、 OS X、 OpenSolaris、 AIX、 HP-UX、 Android 以及 Windows。

在这个教程,我们将使用 Ubuntu 16 ,你需要拥有这台电脑的 sudo 或 root 权限。我们将完整的进行安装和 Fio 的使用。

使用源码安装 Fio

我们要去克隆 GitHub 上的仓库。安装所需的依赖,然后我们将会从源码构建应用。首先,确保我们安装了 Git 。

sudo apt-get install git

CentOS 用户可以执行下述命令:

sudo yum install git

现在,我们切换到 /opt 目录,并从 Github 上克隆仓库:

cd /opt
git clone https://github.com/axboe/fio

你应该会看到下面这样的输出:

Cloning into 'fio'...
remote: Counting objects: 24819, done.
remote: Compressing objects: 100% (44/44), done.
remote: Total 24819 (delta 39), reused 62 (delta 32), pack-reused 24743
Receiving objects: 100% (24819/24819), 16.07 MiB | 0 bytes/s, done.
Resolving deltas: 100% (16251/16251), done.
Checking connectivity... done.

现在,我们通过在 /opt 目录下输入下方的命令切换到 Fio 的代码目录:

cd fio

最后,我们可以使用下面的命令来使用 make 从源码构建软件:

# ./configure
# make
# make install

在 Ubuntu 上安装 Fio

对于 Ubuntu 和 Debian 来说, Fio 已经在主仓库内。你可以很容易的使用类似 yumapt-get 的标准包管理器来安装 Fio。

对于 Ubuntu 和 Debian ,你只需要简单的执行下述命令:

sudo apt-get install fio

对于 CentOS/Redhat 你只需要简单执行下述命令。

在 CentOS ,你可能在你能安装 Fio 前需要去安装 EPEL 仓库到你的系统中。你可以通过执行下述命令来安装它:

sudo yum install epel-release -y

你可以执行下述命令来安装 Fio:

sudo yum install fio -y

使用 Fio 进行磁盘性能测试

现在 Fio 已经安装到了你的系统中。现在是时候看一些如何使用 Fio 的例子了。我们将进行随机写、读和读写测试。

执行随机写测试

执行下面的命令来开始。这个命令将要同一时间执行两个进程,写入共计 4GB( 4 个任务 x 512MB = 2GB) 文件:

sudo fio --name=randwrite --ioengine=libaio --iodepth=1 --rw=randwrite --bs=4k --direct=0 --size=512M --numjobs=2 --runtime=240 --group_reporting
...
fio-2.2.10
Starting 2 processes

randwrite: (groupid=0, jobs=2): err= 0: pid=7271: Sat Aug 5 13:28:44 2017
 write: io=1024.0MB, bw=2485.5MB/s, iops=636271, runt= 412msec
 slat (usec): min=1, max=268, avg= 1.79, stdev= 1.01
 clat (usec): min=0, max=13, avg= 0.20, stdev= 0.40
 lat (usec): min=1, max=268, avg= 2.03, stdev= 1.01
 clat percentiles (usec):
 | 1.00th=[ 0], 5.00th=[ 0], 10.00th=[ 0], 20.00th=[ 0],
 | 30.00th=[ 0], 40.00th=[ 0], 50.00th=[ 0], 60.00th=[ 0],
 | 70.00th=[ 0], 80.00th=[ 1], 90.00th=[ 1], 95.00th=[ 1],
 | 99.00th=[ 1], 99.50th=[ 1], 99.90th=[ 1], 99.95th=[ 1],
 | 99.99th=[ 1]
 lat (usec) : 2=99.99%, 4=0.01%, 10=0.01%, 20=0.01%
 cpu : usr=15.14%, sys=84.00%, ctx=8, majf=0, minf=26
 IO depths : 1=100.0%, 2=0.0%, 4=0.0%, 8=0.0%, 16=0.0%, 32=0.0%, >=64=0.0%
 submit : 0=0.0%, 4=100.0%, 8=0.0%, 16=0.0%, 32=0.0%, 64=0.0%, >=64=0.0%
 complete : 0=0.0%, 4=100.0%, 8=0.0%, 16=0.0%, 32=0.0%, 64=0.0%, >=64=0.0%
 issued : total=r=0/w=262144/d=0, short=r=0/w=0/d=0, drop=r=0/w=0/d=0
 latency : target=0, window=0, percentile=100.00%, depth=1

Run status group 0 (all jobs):
 WRITE: io=1024.0MB, aggrb=2485.5MB/s, minb=2485.5MB/s, maxb=2485.5MB/s, mint=412msec, maxt=412msec

Disk stats (read/write):
 sda: ios=0/0, merge=0/0, ticks=0/0, in_queue=0, util=0.00%

执行随机读测试

我们将要执行一个随机读测试,我们将会尝试读取一个随机的 2GB 文件。


sudo fio --name=randread --ioengine=libaio --iodepth=16 --rw=randread --bs=4k --direct=0 --size=512M --numjobs=4 --runtime=240 --group_reporting

你应该会看到下面这样的输出:

...
fio-2.2.10
Starting 4 processes
randread: Laying out IO file(s) (1 file(s) / 512MB)
randread: Laying out IO file(s) (1 file(s) / 512MB)
randread: Laying out IO file(s) (1 file(s) / 512MB)
randread: Laying out IO file(s) (1 file(s) / 512MB)
Jobs: 4 (f=4): [r(4)] [100.0% done] [71800KB/0KB/0KB /s] [17.1K/0/0 iops] [eta 00m:00s]
randread: (groupid=0, jobs=4): err= 0: pid=7586: Sat Aug 5 13:30:52 2017
 read : io=2048.0MB, bw=80719KB/s, iops=20179, runt= 25981msec
 slat (usec): min=72, max=10008, avg=195.79, stdev=94.72
 clat (usec): min=2, max=28811, avg=2971.96, stdev=760.33
 lat (usec): min=185, max=29080, avg=3167.96, stdev=798.91
 clat percentiles (usec):
 | 1.00th=[ 2192], 5.00th=[ 2448], 10.00th=[ 2576], 20.00th=[ 2736],
 | 30.00th=[ 2800], 40.00th=[ 2832], 50.00th=[ 2928], 60.00th=[ 3024],
 | 70.00th=[ 3120], 80.00th=[ 3184], 90.00th=[ 3248], 95.00th=[ 3312],
 | 99.00th=[ 3536], 99.50th=[ 6304], 99.90th=[15168], 99.95th=[18816],
 | 99.99th=[22912]
 bw (KB /s): min=17360, max=25144, per=25.05%, avg=20216.90, stdev=1605.65
 lat (usec) : 4=0.01%, 10=0.01%, 250=0.01%, 500=0.01%, 750=0.01%
 lat (usec) : 1000=0.01%
 lat (msec) : 2=0.01%, 4=99.27%, 10=0.44%, 20=0.24%, 50=0.04%
 cpu : usr=1.35%, sys=5.18%, ctx=524309, majf=0, minf=98
 IO depths : 1=0.1%, 2=0.1%, 4=0.1%, 8=0.1%, 16=100.0%, 32=0.0%, >=64=0.0%
 submit : 0=0.0%, 4=100.0%, 8=0.0%, 16=0.0%, 32=0.0%, 64=0.0%, >=64=0.0%
 complete : 0=0.0%, 4=100.0%, 8=0.0%, 16=0.1%, 32=0.0%, 64=0.0%, >=64=0.0%
 issued : total=r=524288/w=0/d=0, short=r=0/w=0/d=0, drop=r=0/w=0/d=0
 latency : target=0, window=0, percentile=100.00%, depth=16

Run status group 0 (all jobs):
 READ: io=2048.0MB, aggrb=80718KB/s, minb=80718KB/s, maxb=80718KB/s, mint=25981msec, maxt=25981msec

Disk stats (read/write):
 sda: ios=521587/871, merge=0/1142, ticks=96664/612, in_queue=97284, util=99.85%

最后,我们想要展示一个简单的随机读-写测试来看一看 Fio 返回的输出类型。

读写性能测试

下述命令将会测试 USB Pen 驱动器 (/dev/sdc1) 的随机读写性能:

sudo fio --randrepeat=1 --ioengine=libaio --direct=1 --gtod_reduce=1 --name=test --filename=random_read_write.fio --bs=4k --iodepth=64 --size=4G --readwrite=randrw --rwmixread=75

下面的内容是我们从上面的命令得到的输出:

fio-2.2.10
Starting 1 process
Jobs: 1 (f=1): [m(1)] [100.0% done] [217.8MB/74452KB/0KB /s] [55.8K/18.7K/0 iops] [eta 00m:00s]
test: (groupid=0, jobs=1): err= 0: pid=8475: Sat Aug 5 13:36:04 2017
 read : io=3071.7MB, bw=219374KB/s, iops=54843, runt= 14338msec
 write: io=1024.4MB, bw=73156KB/s, iops=18289, runt= 14338msec
 cpu : usr=6.78%, sys=20.81%, ctx=1007218, majf=0, minf=9
 IO depths : 1=0.1%, 2=0.1%, 4=0.1%, 8=0.1%, 16=0.1%, 32=0.1%, >=64=100.0%
 submit : 0=0.0%, 4=100.0%, 8=0.0%, 16=0.0%, 32=0.0%, 64=0.0%, >=64=0.0%
 complete : 0=0.0%, 4=100.0%, 8=0.0%, 16=0.0%, 32=0.0%, 64=0.1%, >=64=0.0%
 issued : total=r=786347/w=262229/d=0, short=r=0/w=0/d=0, drop=r=0/w=0/d=0
 latency : target=0, window=0, percentile=100.00%, depth=64

Run status group 0 (all jobs):
 READ: io=3071.7MB, aggrb=219374KB/s, minb=219374KB/s, maxb=219374KB/s, mint=14338msec, maxt=14338msec
 WRITE: io=1024.4MB, aggrb=73156KB/s, minb=73156KB/s, maxb=73156KB/s, mint=14338msec, maxt=14338msec

Disk stats (read/write):
 sda: ios=774141/258944, merge=1463/899, ticks=748800/150316, in_queue=900720, util=99.35%

我们希望你能喜欢这个教程并且享受接下来的内容,Fio 是一个非常有用的工具,并且我们希望你能在你下一次 Debugging 活动中使用到它。如果你喜欢这个文章,欢迎留下评论和问题。


via: https://wpmojo.com/how-to-use-fio-to-measure-disk-performance-in-linux/

作者:Alex Pearson 译者:Bestony 校对:wxy

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