Vivek Gite 发布的文章

在树莓派 2B 上如何安装 FreeBSD 10 或 FreeBSD 11(current)?怎么在 Linux,OS X,FreeBSD 或类 Unix 操作系统上烧录 SD 卡?

在树莓派 2B 上安装 FreeBSD 10 或 FreeBSD 11(current)很容易。使用 FreeBSD 操作系统可以打造一个非常易用的 Unix 服务器。FreeBSD-CURRENT 自2012年十一月以来一直支持树莓派,2015年三月份后也开始支持树莓派2了。在这个快速教程中我将介绍如何在树莓派 2B 上安装 FreeBSD 11 current arm 版。

1. 下载 FreeBSD-current 的 arm 镜像

你可以 访问这个页面来下载 树莓派2的镜像。使用 wget 或 curl 命令来下载镜像:

$ wget ftp://ftp.freebsd.org/pub/FreeBSD/snapshots/arm/armv6/ISO-IMAGES/11.0/FreeBSD-11.0-CURRENT-arm-armv6-RPI2-20151016-r289420.img.xz

$ curl -O ftp://ftp.freebsd.org/pub/FreeBSD/snapshots/arm/armv6/ISO-IMAGES/11.0/FreeBSD-11.0-CURRENT-arm-armv6-RPI2-20151016-r289420.img.xz

2. 解压 FreeBSD-current 镜像

执行以下命令中的任何一个:

$ unxz FreeBSD-11.0-CURRENT-arm-armv6-RPI2-20151016-r289420.img.xz

$ xz --decompress FreeBSD-11.0-CURRENT-arm-armv6-RPI2-20151016-r289420.img.xz

3. 设置 SD

你可以在 OS X,Linux,FreeBSD,MS-Windows 和类 Unix 系统来烧录 SD 卡。

在 Mac OS X 下烧录 FreeBSD-current

使用下面的 dd 命令:

$ diskutil list
$ diskutil unmountDisk /dev/diskN
$ sudo dd if=FreeBSD-11.0-CURRENT-arm-armv6-RPI2-20151016-r289420.img of=/dev/disk2 bs=64k

示例输出:

1024+0 records in
1024+0 records out
1073741824 bytes transferred in 661.669584 secs (1622776 bytes/sec)

使用 Linux/FreeBSD 或者类 Unix 系统来烧录 FreeBSD-current

语法是这样:

$ dd if=FreeBSD-11.0-CURRENT-arm-armv6-RPI2-20151016-r289420.img of=/dev/sdb bs=1M

确保使用实际的 SD 卡的设备名称来替换 /dev/sdb(LCTT 译注:千万注意不要写错了)。

4. 引导 FreeBSD

在树莓派 2B 上插入 SD 卡。你需要连接键盘,鼠标和显示器。我使用的是 USB 转串口线来连接显示器的:

Fig.01 RPi USB based serial connection

图01 基于树莓派 USB 的串行连接

在下面的例子中,我使用 screen 命令来连接我的 RPI:

## Linux 上 ##
screen /dev/tty.USB0 115200

## OS X 上 ##
screen /dev/cu.usbserial 115200

## Windows 请使用 Putty.exe ##

FreeBSD RPI 启动输出样例:

Gif 01: Booting FreeBSD-current on RPi 2

图02: 在树莓派 2上引导 FreeBSD-current

5. FreeBSD 在 RPi 2上的用户名和密码

默认的密码是 freebsd/freebsd 和 root/root。

到此为止, FreeBSD-current 已经安装并运行在树莓派 2上。


via: http://www.cyberciti.biz/faq/how-to-install-freebsd-on-raspberry-pi-2-model-b/

作者:Vivek Gite 译者:strugglingyouth 校对:wxy

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

Oneko 是一个有趣的应用。它会把你的光标变成一只老鼠,并在后面创建一个可爱的小猫,并且始终追逐着老鼠光标。单词“neko”在日语中的意思是猫。它最初是一位日本人开发的 Macintosh 桌面附件。

Oneko

安装 oneko

试下下面的命令:

$ sudo apt-get install oneko

示例输出:

[sudo] password for vivek:
Reading package lists... Done
Building dependency tree
Reading state information... Done
The following NEW packages will be installed:
  oneko
0 upgraded, 1 newly installed, 0 to remove and 10 not upgraded.
Need to get 38.6 kB of archives.
After this operation, 168 kB of additional disk space will be used.
Get:1 http://debian.osuosl.org/debian/ squeeze/main oneko amd64 1.2.sakura.6-7 [38.6 kB]
Fetched 38.6 kB in 1s (25.9 kB/s)
Selecting previously deselected package oneko.
(Reading database ... 274152 files and directories currently installed.)
Unpacking oneko (from .../oneko_1.2.sakura.6-7_amd64.deb) ...
Processing triggers for menu ...
Processing triggers for man-db ...
Setting up oneko (1.2.sakura.6-7) ...
Processing triggers for menu ...

FreeBSD 用户输入下面的命令安装 oneko:

# cd /usr/ports/games/oneko
# make install clean

我该如何使用 oneko?

输入下面的命令:

$ oneko

你可以把猫变成 “tora-neko”,一只像白老虎条纹的猫:

$ oneko -tora

不喜欢猫?

你可以用狗代替猫:

$ oneko -dog

下面可以用樱花代替猫:

$ oneko -sakura

用大道寺代替猫:

$ oneko -tomoyo

查看相关媒体

这个教程同样也有视频格式:

其他选项

你可以传入下面的选项

  1. -tofocus:让猫在获得焦点的窗口顶部奔跑。当获得焦点的窗口不在视野中时,猫像平常那样追逐老鼠。
  2. -position 坐标 :指定X和Y来调整猫相对老鼠的位置
  3. -rv:将前景色和背景色对调
  4. -fg 颜色 : 前景色 (比如 oneko -dog -fg red)。
  5. -bg 颜色 : 背景色 (比如 oneko -dog -bg green)。
  6. 查看 oneko 的手册获取更多信息。

via: http://www.cyberciti.biz/open-source/oneko-app-creates-cute-cat-chasing-around-your-mouse/

作者:Vivek Gite 译者:geekpi 校对:wxy

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

我如何在自己的服务器上找出哪些端口是开放的?如何使用 nc 命令进行端口扫描来替换 Linux 或类 Unix 中的 nmap 命令

nmap (“Network Mapper”)是一个用于网络探测和安全审核的开源工具。如果 nmap 没有安装或者你不希望使用 nmap,那你可以用 netcat/nc 命令进行端口扫描。它对于查看目标计算机上哪些端口是开放的或者运行着服务是非常有用的。你也可以使用 nmap 命令进行端口扫描

如何使用 nc 来扫描 Linux,UNIX 和 Windows 服务器的端口呢?

如果未安装 nmap,试试 nc/netcat 命令,如下所示。-z 参数用来告诉 nc 报告开放的端口,而不是启动连接。在 nc 命令中使用 -z 参数时,你需要在主机名/ip 后面限定端口的范围和加速其运行:

### 语法 ###
### nc -z -v {host-name-here} {port-range-here}
nc -z -v host-name-here ssh
nc -z -v host-name-here 22
nc -w 1 -z -v server-name-here port-Number-her

### 扫描 1 to 1023 端口 ###
nc -zv vip-1.vsnl.nixcraft.in 1-1023

输出示例:

Connection to localhost 25 port [tcp/smtp] succeeded!
Connection to vip-1.vsnl.nixcraft.in 25 port [tcp/smtp] succeeded!
Connection to vip-1.vsnl.nixcraft.in 80 port [tcp/http] succeeded!
Connection to vip-1.vsnl.nixcraft.in 143 port [tcp/imap] succeeded!
Connection to vip-1.vsnl.nixcraft.in 199 port [tcp/smux] succeeded!
Connection to vip-1.vsnl.nixcraft.in 783 port [tcp/*] succeeded!
Connection to vip-1.vsnl.nixcraft.in 904 port [tcp/vmware-authd] succeeded!
Connection to vip-1.vsnl.nixcraft.in 993 port [tcp/imaps] succeeded!

你也可以扫描单个端口:

nc -zv v.txvip1 443
nc -zv v.txvip1 80
nc -zv v.txvip1 22
nc -zv v.txvip1 21
nc -zv v.txvip1 smtp
nc -zvn v.txvip1 ftp

### 使用1秒的超时值来更快的扫描 ###
netcat -v -z -n -w 1 v.txvip1 1-1023

输出示例:

Fig.01: Linux/Unix: Use Netcat to Establish and Test TCP and UDP Connections on a Server

图01:Linux/Unix:使用 Netcat 来测试 TCP 和 UDP 与服务器建立连接

  1. -z : 端口扫描模式即零 I/O 模式。
  2. -v : 显示详细信息 [使用 -vv 来输出更详细的信息]。
  3. -n : 使用纯数字 IP 地址,即不用 DNS 来解析 IP 地址。
  4. -w 1 : 设置超时值设置为1。

更多例子:

$ netcat -z -vv www.cyberciti.biz http
www.cyberciti.biz [75.126.153.206] 80 (http) open
 sent 0, rcvd 0
$ netcat -z -vv google.com https
DNS fwd/rev mismatch: google.com != maa03s16-in-f2.1e100.net
DNS fwd/rev mismatch: google.com != maa03s16-in-f6.1e100.net
DNS fwd/rev mismatch: google.com != maa03s16-in-f5.1e100.net
DNS fwd/rev mismatch: google.com != maa03s16-in-f3.1e100.net
DNS fwd/rev mismatch: google.com != maa03s16-in-f8.1e100.net
DNS fwd/rev mismatch: google.com != maa03s16-in-f0.1e100.net
DNS fwd/rev mismatch: google.com != maa03s16-in-f7.1e100.net
DNS fwd/rev mismatch: google.com != maa03s16-in-f4.1e100.net
google.com [74.125.236.162] 443 (https) open
 sent 0, rcvd 0
$ netcat -v -z -n -w 1 192.168.1.254 1-1023
(UNKNOWN) [192.168.1.254] 989 (ftps-data) open
(UNKNOWN) [192.168.1.254] 443 (https) open
(UNKNOWN) [192.168.1.254] 53 (domain) open

也可以看看 :


via: http://www.cyberciti.biz/faq/linux-port-scanning/

作者:Vivek Gite 译者:strugglingyouth 校对:wxy

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

想在屏幕上显示出你的 Linux 发行版的酷炫标志和基本硬件信息吗?不用找了,来试试超赞的 screenfetch 和 linux\_logo 工具。

Linux Logo

来看看 screenfetch 吧

screenFetch 是一个能够在截屏中显示系统/主题信息的命令行脚本。它可以在 Linux,OS X,FreeBSD 以及其它的许多类Unix系统上使用。来自 man 手册的说明:

这个方便的 Bash 脚本可以用来生成那些漂亮的终端主题信息和用 ASCII 构成的发行版标志,就像如今你在别人的截屏里看到的那样。它会自动检测你的发行版并显示 ASCII 版的发行版标志,并且在右边显示一些有价值的信息。

在 Linux 上安装 screenfetch

打开终端应用。在基于 Debian 或 Ubuntu 或 Mint 的系统上只需要输入下列 apt-get 命令

$ sudo apt-get install screenfetch

图一:用 apt-get 安装 screenfetch

如果源里面没有这个软件,可以采用如下方法:

wget https://github.com/KittyKatt/screenFetch/archive/master.zip
unzip master.zip
sudo mv screenFetch-master/screenfetch-dev /usr/bin/screenfetch

在 Mac OS X 上安装 screenfetch

输入下列命令:

$ brew install screenfetch

图二:用 brew 命令安装 screenfetch

在 FreeBSD 上安装 screenfetch

输入下列 pkg 命令:

$ sudo pkg install sysutils/screenfetch

图三:在 FreeBSD 用 pkg 安装 screenfetch

在 Fedora 上安装 screenfetch

输入下列 dnf 命令:

$ sudo dnf install screenfetch

图四:在 Fedora 22 用 dnf 安装 screenfetch

我该怎么使用 screefetch 工具?

只需输入以下命令:

$ screenfetch

这是不同系统的输出:

Fedora 上的 Screenfetch

OS X 上的 Screenfetch

FreeBSD 上的 Screenfetch

Debian 上的 Screenfetch

获取截屏

要获取截屏并保存成文件,输入:

$ screenfetch -s

你会看到一个文件 ~/Desktop/screenFetch-*.jpg。获取截屏并直接上传到 imgur,输入:

$ screenfetch -su imgur

输出示例:

                 -/+:.          veryv@Viveks-MacBook-Pro
                :++++.          OS: 64bit Mac OS X 10.10.5 14F27
               /+++/.           Kernel: x86_64 Darwin 14.5.0
       .:-::- .+/:-``.::-       Uptime: 3d 1h 36m
    .:/++++++/::::/++++++/:`    Packages: 56
  .:///////////////////////:`   Shell: bash 3.2.57
  ////////////////////////`     Resolution: 2560x1600 1920x1200
 -+++++++++++++++++++++++`      DE: Aqua
 /++++++++++++++++++++++/       WM: Quartz Compositor
 /sssssssssssssssssssssss.      WM Theme: Blue
 :ssssssssssssssssssssssss-     Font: Not Found
  osssssssssssssssssssssssso/`  CPU: Intel Core i5-4288U CPU @ 2.60GHz
  `syyyyyyyyyyyyyyyyyyyyyyyy+`  GPU: Intel Iris
   `ossssssssssssssssssssss/    RAM: 6405MB / 8192MB
     :ooooooooooooooooooo+.
      `:+oo+/:-..-:/+o+/-      

Taking shot in 3.. 2.. 1.. 0.
==>  Uploading your screenshot now...your screenshot can be viewed at http://imgur.com/HKIUznn

你可以访问 http://imgur.com/HKIUznn 来查看上传的截屏。

再来看看 linux\_logo

linux\_logo 程序生成一个彩色的 ANSI 版企鹅图片,还包含一些来自 /proc 的系统信息。

安装

只需按照你的 Linux 发行版输入对应的命令:

Debian/Ubutnu/Mint

# apt-get install linuxlogo   ### 注意名字略微不同

CentOS/RHEL/旧版 Fedora

# yum install linux_logo

Fedora Linux v22+ 或更新版本

# dnf install linux_logo

运行它

只需输入下列命令:

$ linux_logo

运行 linux\_logo

等等,还有更多!

你可以用这个命令查看内置的标志列表:

$ linux_logo -f -L list

输出示例:

Available Built-in Logos:
    Num Type    Ascii   Name        Description
    1   Classic Yes aix     AIX Logo
    2   Banner  Yes bsd_banner  FreeBSD Logo
    3   Classic Yes bsd     FreeBSD Logo
    4   Classic Yes irix        Irix Logo
    5   Banner  Yes openbsd_banner  OpenBSD Logo
    6   Classic Yes openbsd     OpenBSD Logo
    7   Banner  Yes solaris     The Default Banner Logos
    8   Banner  Yes banner      The Default Banner Logo
    9   Banner  Yes banner-simp Simplified Banner Logo
    10  Classic Yes classic     The Default Classic Logo
    11  Classic Yes classic-nodots  The Classic Logo, No Periods
    12  Classic Yes classic-simp    Classic No Dots Or Letters
    13  Classic Yes core        Core Linux Logo
    14  Banner  Yes debian_banner_2 Debian Banner 2
    15  Banner  Yes debian_banner   Debian Banner (white)
    16  Classic Yes debian      Debian Swirl Logos
    17  Classic Yes debian_old  Debian Old Penguin Logos
    18  Classic Yes gnu_linux   Classic GNU/Linux
    19  Banner  Yes mandrake    Mandrakelinux(TM) Banner
    20  Banner  Yes mandrake_banner Mandrake(TM) Linux Banner
    21  Banner  Yes mandriva    Mandriva(TM) Linux Banner
    22  Banner  Yes pld     PLD Linux banner
    23  Classic Yes raspi       An ASCII Raspberry Pi logo
    24  Banner  Yes redhat      RedHat Banner (white)
    25  Banner  Yes slackware   Slackware Logo
    26  Banner  Yes sme     SME Server Banner Logo
    27  Banner  Yes sourcemage_ban  Source Mage GNU/Linux banner
    28  Banner  Yes sourcemage  Source Mage GNU/Linux large
    29  Banner  Yes suse        SUSE Logo
    30  Banner  Yes ubuntu      Ubuntu Logo

Do "linux_logo -L num" where num is from above to get the appropriate logo.
Remember to also use -a to get ascii version.

查看 aix 的标志,输入:

$ linux_logo -f -L aix

查看 openbsd 的标志:

$ linux_logo -f -L openbsd

或者只是随机看看一些 Linux 标志:

$ linux_logo -f -L random_xy

可以像下面那样结合 bash 的循环来显示不同的标志,输入:

动图1: linux\_logo 和 bash 循环,既有趣又能发朋友圈耍酷

获取帮助

输入下列命令:

$ screefetch -h
$ linux_logo -h

参考


via: http://www.cyberciti.biz/hardware/howto-display-linux-logo-in-bash-terminal-using-screenfetch-linux_logo/

作者:Vivek Gite 译者:alim0x 校对:wxy

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

你可以使用下面的工具来查看 Linux 或类 Unix 系统运行了多长时间:

  • uptime : 告诉你服务器运行了多长的时间。
  • lastt : 显示重启和关机时间。
  • tuptime : 报告系统的运行时间历史和运行时间统计,这是指重启之间的运行时间。和 uptime 命令类似,不过输出结果更有意思。

找出系统上次重启时间和日期

可以使用下面的命令来获取Linux操作系统的上次重启和关机时间及日期(在OSX/类Unix系统上也可以用):

### 显示系统重启和关机时间
who -b
last reboot
last shutdown
### 开机信息
uptime
cat /proc/uptime
awk '{ print "up " $1 /60 " minutes"}' /proc/uptime
w

样例输出:

Fig.01: Various Linux commands in action to find out the server uptime

图01:用于找出服务器开机时间的多个Linux命令

跟 tuptime 问打个招呼吧

tuptime 命令行工具可以报告基于 Linux 的系统上的下列信息:

  1. 系统启动次数统计
  2. 注册首次启动时间(也就是安装时间)
  3. 正常关机和意外关机统计
  4. 平均开机时间和故障停机时间
  5. 当前开机时间
  6. 首次启动以来的开机和故障停机率
  7. 累积系统开机时间、故障停机时间和合计
  8. 报告每次启动、开机时间、关机和故障停机时间

安装

输入下面的命令来克隆 git 仓库到 Linux 系统中

$ cd /tmp
$ git clone https://github.com/rfrail3/tuptime.git
$ ls
$ cd tuptime
$ ls

样例输出:

Fig.02: Cloning a git repo

图02:克隆git仓库

确保你安装了带有 sys,optparse,os,re,string,sqlite3,datetime,disutils 和 locale 模块的 Python v2.7。

你可以像下面这样来安装:

$ sudo tuptime-install.sh

或者,可以手工安装(基于 systemd 或非 systemd ):

$ sudo cp /tmp/tuptime/latest/cron.d/tuptime /etc/cron.d/tuptime

如果系统是systemd的,拷贝服务文件并启用:

$ sudo cp /tmp/tuptime/latest/systemd/tuptime.service /lib/systemd/system/
$ sudo systemctl enable tuptime.service

如果系统不是systemd的,拷贝初始化文件:

$ sudo cp /tmp/tuptime/latest/init.d/tuptime.init.d-debian7 /etc/init.d/tuptime
$ sudo update-rc.d tuptime defaults

运行

只需输入以下命令:

$ sudo tuptime

样例输出:

Fig.03: tuptime in action

图03:tuptime工作中

在一次更新内核后,我重启了系统,然后再次输入了同样的命令:

$ sudo tuptime
System startups:    2   since   03:52:16 PM 08/21/2015
System shutdowns:   1 ok   -   0 bad
Average uptime:     7 days, 16 hours, 48 minutes and 3 seconds
Average downtime:   2 hours, 30 minutes and 5 seconds
Current uptime:     5 minutes and 28 seconds   since   06:23:06 AM 09/06/2015
Uptime rate:        98.66 %
Downtime rate:      1.34 %
System uptime:      15 days, 9 hours, 36 minutes and 7 seconds
System downtime:    5 hours, 0 minutes and 11 seconds
System life:        15 days, 14 hours, 36 minutes and 18 seconds

你可以像下面这样修改日期和时间格式:

$ sudo tuptime -d '%H:%M:%S %m-%d-%Y'

样例输出:

System startups:    1   since   15:52:16 08-21-2015
System shutdowns:   0 ok   -   0 bad
Average uptime:     15 days, 9 hours, 21 minutes and 19 seconds
Average downtime:   0 seconds
Current uptime:     15 days, 9 hours, 21 minutes and 19 seconds   since   15:52:16 08-21-2015
Uptime rate:        100.0 %
Downtime rate:      0.0 %
System uptime:      15 days, 9 hours, 21 minutes and 19 seconds
System downtime:    0 seconds
System life:        15 days, 9 hours, 21 minutes and 19 seconds

计算每次启动、开机时间、关机和故障停机时间:

$ sudo tuptime -e

样例输出:

Startup:  1  at  03:52:16 PM 08/21/2015
Uptime:   15 days, 9 hours, 22 minutes and 33 seconds

System startups:    1   since   03:52:16 PM 08/21/2015
System shutdowns:   0 ok   -   0 bad
Average uptime:     15 days, 9 hours, 22 minutes and 33 seconds
Average downtime:   0 seconds
Current uptime:     15 days, 9 hours, 22 minutes and 33 seconds   since   03:52:16 PM 08/21/2015
Uptime rate:        100.0 %
Downtime rate:      0.0 %
System uptime:      15 days, 9 hours, 22 minutes and 33 seconds
System downtime:    0 seconds
System life:        15 days, 9 hours, 22 minutes and 33 seconds

via: http://www.cyberciti.biz/hardware/howto-see-historical-statistical-uptime-on-linux-server/

作者:Vivek Gite 译者:GOLinux 校对:wxy

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

如何使用dd命令测试我的硬盘性能?如何在linux操作系统下检测硬盘的读写速度?

你可以使用以下命令在一个Linux或类Unix操作系统上进行简单的I/O性能测试。

  • dd命令 :它被用来在Linux和类Unix系统下对硬盘设备进行写性能的检测。
  • hparm命令:它用来在基于 Linux 的系统上获取或设置硬盘参数,包括测试读性能以及缓存性能等。

在这篇指南中,你将会学到如何使用dd命令来测试硬盘性能。

使用dd命令来监控硬盘的读写性能:

  • 打开shell终端。
  • 或者通过ssh登录到远程服务器。
  • 使用dd命令来测量服务器的吞吐率(写速度) dd if=/dev/zero of=/tmp/test1.img bs=1G count=1 oflag=dsync
  • 使用dd命令测量服务器延迟 dd if=/dev/zero of=/tmp/test2.img bs=512 count=1000 oflag=dsync

理解dd命令的选项

在这个例子当中,我将使用搭载Ubuntu Linux 14.04 LTS系统的RAID-10(配有SAS SSD的Adaptec 5405Z)服务器阵列来运行。基本语法为:

dd if=/dev/input.file  of=/path/to/output.file  bs=block-size  count=number-of-blocks  oflag=dsync
## GNU dd语法 ##
dd if=/dev/zero of=/tmp/test1.img bs=1G count=1 oflag=dsync
##另外一种GNU dd的语法 ##
dd if=/dev/zero of=/tmp/testALT.img bs=1G count=1 conv=fdatasync

输出样例:

Fig.01: Ubuntu Linux Server with RAID10 and testing server throughput with dd

图01: 使用dd命令获取的服务器吞吐率

请各位注意在这个实验中,我们写入一个G的数据,可以发现,服务器的吞吐率是135 MB/s,这其中

  • if=/dev/zero (if=/dev/input.file) :用来设置dd命令读取的输入文件名。
  • of=/tmp/test1.img (of=/path/to/output.file):dd命令将input.file写入的输出文件的名字。
  • bs=1G (bs=block-size) :设置dd命令读取的块的大小。例子中为1个G。
  • count=1 (count=number-of-blocks):dd命令读取的块的个数。
  • oflag=dsync (oflag=dsync) :使用同步I/O。不要省略这个选项。这个选项能够帮助你去除caching的影响,以便呈现给你精准的结果。
  • conv=fdatasyn: 这个选项和oflag=dsync含义一样。

在下面这个例子中,一共写了1000次,每次写入512字节来获得RAID10服务器的延迟时间:

dd if=/dev/zero of=/tmp/test2.img bs=512 count=1000 oflag=dsync

输出样例:

1000+0 records in
1000+0 records out
512000 bytes (512 kB) copied, 0.60362 s, 848 kB/s

请注意服务器的吞吐率以及延迟时间也取决于服务器/应用的负载。所以我推荐你在一个刚刚重启过并且处于峰值时间的服务器上来运行测试,以便得到更加准确的度量。现在你可以在你的所有设备上互相比较这些测试结果了。

为什么服务器的吞吐率和延迟时间都这么差?

低的数值并不意味着你在使用差劲的硬件。可能是硬件 RAID10的控制器缓存导致的。

使用hdparm命令来查看硬盘缓存的读速度。

我建议你运行下面的命令2-3次来对设备读性能进行检测,以作为参照和相互比较:

### 有缓存的硬盘读性能测试——/dev/sda ###
hdparm -t /dev/sda1
## 或者 ##
hdparm -t /dev/sda

然后运行下面这个命令2-3次来对缓存的读性能进行对照性检测:

## Cache读基准——/dev/sda ###
hdparm -T /dev/sda1
## 或者 ##
hdparm -T /dev/sda

或者干脆把两个测试结合起来:

hdparm -Tt /dev/sda

输出样例:

Fig.02: Linux hdparm command to test reading and caching disk performance

图02: 检测硬盘读入以及缓存性能的Linux hdparm命令

请再次注意,由于文件文件操作的缓存属性,你将总是会看到很高的读速度。

使用dd命令来测试读取速度

为了获得精确的读测试数据,首先在测试前运行下列命令,来将缓存设置为无效:

flush
echo 3 | sudo tee /proc/sys/vm/drop_caches
time time dd if=/path/to/bigfile of=/dev/null bs=8k

笔记本上的示例

运行下列命令:

### 带有Cache的Debian系统笔记本吞吐率###
dd if=/dev/zero of=/tmp/laptop.bin bs=1G count=1 oflag=direct

###使cache失效###
hdparm -W0 /dev/sda

###没有Cache的Debian系统笔记本吞吐率###
dd if=/dev/zero of=/tmp/laptop.bin bs=1G count=1 oflag=direct

苹果OS X Unix(Macbook pro)的例子

GNU dd has many more options but OS X/BSD and Unix-like dd command need to run as follows to test real disk I/O and not memory add sync option as follows:

GNU dd命令有其他许多选项,但是在 OS X/BSD 以及类Unix中, dd命令需要像下面那样执行来检测去除掉内存地址同步的硬盘真实I/O性能:

## 运行这个命令2-3次来获得更好地结果 ###
time sh -c "dd if=/dev/zero of=/tmp/testfile bs=100k count=1k && sync"

输出样例:

1024+0 records in
1024+0 records out
104857600 bytes transferred in 0.165040 secs (635346520 bytes/sec)

real    0m0.241s
user    0m0.004s
sys 0m0.113s

本人Macbook Pro的写速度是635346520字节(635.347MB/s)。

不喜欢用命令行?

你可以在Linux或基于Unix的系统上使用disk utility(gnome-disk-utility)这款工具来得到同样的信息。下面的那个图就是在我的Fedora Linux v22 VM上截取的。

图形化方法

点击“Activites”或者“Super”按键来在桌面和Activites视图间切换。输入“Disks”

Fig.03: Start the Gnome disk utility

图03: 打开Gnome硬盘工具

在左边的面板上选择你的硬盘,点击configure按钮,然后点击“Benchmark partition”:

Fig.04: Benchmark disk/partition

图04: 评测硬盘/分区

最后,点击“Start Benchmark...”按钮(你可能需要输入管理员用户名和密码):

Fig.05: Final benchmark result

图05: 最终的评测结果

如果你要问,我推荐使用哪种命令和方法?

  • 我推荐在所有的类Unix系统上使用dd命令(time sh -c "dd if=/dev/zero of=/tmp/testfile bs=100k count=1k && sync
  • 如果你在使用GNU/Linux,使用dd命令 (dd if=/dev/zero of=/tmp/testALT.img bs=1G count=1 conv=fdatasync)
  • 确保你每次使用时,都调整了count以及bs参数以获得更好的结果。
  • GUI方法只适合桌面系统为Gnome2或Gnome3的Linux/Unix笔记本用户。

via: http://www.cyberciti.biz/faq/howto-linux-unix-test-disk-performance-with-dd-command/

作者:Vivek Gite 译者:DongShuaike 校对:wxy

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