分类 技术 下的文章

在这有两部分的系列中,Carla Schroder 会向你展示如何创建自己的 OpenSSL 证书以及如何配置 Apache 和 Dovecot 来使用它们。

这么长时间之后,我的读者们,这里是我给你们承诺的在 Apache 中使用 OpenSSL 的方法,下周你会看到在 Dovecot 中使用 SSL。 在这个分为两部分的系列中,我们将学习如何创建自己的 OpenSSL 证书,以及如何配置 Apache 和 Dovecot 来使用它们。

这些例子基于这些教程:

创建你的证书

Debian/Ubuntu/Mint 会在 /etc/ssl 中存储私钥和证书的符号链接。系统自带的证书保存在 /usr/share/ca-certificates 中。你安装或创建的证书在 /usr/local/share/ca-certificates/ 中。

这个例子是对 Debian 而言。创建私钥和公用证书,将证书转换为正确的格式,并将其符号链接到正确的目录:

$ sudo openssl req -x509 -days 365 -nodes -newkey rsa:2048 \
   -keyout /etc/ssl/private/test-com.key -out \
   /usr/local/share/ca-certificates/test-com.crt
Generating a 2048 bit RSA private key
.......+++
......................................+++
writing new private key to '/etc/ssl/private/test-com.key'
-----
You are about to be asked to enter information that will 
be incorporated into your certificate request.
What you are about to enter is what is called a Distinguished 
Name or a DN. There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [AU]:US
State or Province Name (full name) [Some-State]:WA
Locality Name (eg, city) []:Seattle
Organization Name (eg, company) [Internet Widgits Pty Ltd]:Alrac Writing Sweatshop
Organizational Unit Name (eg, section) []:home dungeon
Common Name (e.g. server FQDN or YOUR name) []:www.test.com
Email Address []:[email protected]

$ sudo update-ca-certificates
Updating certificates in /etc/ssl/certs...
1 added, 0 removed; done.
Running hooks in /etc/ca-certificates/update.d...

Adding debian:test-com.pem
done.
done.

CentOS/Fedora 使用不同的文件结构,并不使用 update-ca-certificates,使用这个命令:

$ sudo openssl req -x509 -days 365 -nodes -newkey rsa:2048 \
   -keyout /etc/httpd/ssl/test-com.key -out \
   /etc/httpd/ssl/test-com.crt

最重要的条目是 Common Name,它必须与你的完全限定域名(FQDN)完全匹配。此外其它信息都是任意的。-nodes 用于创建一个无密码的证书,这是 Apache 所必需的。-days 用于定义过期日期。更新证书是一个麻烦的事情,但这样应该能够额外提供一些安全保障。参见 90 天证书有效期的利弊中的讨论。

配置 Apache

现在配置 Apache 以使用你的新证书。如果你遵循给初学者看的在 Ubuntu Linux 上使用 Apache:第 2 部分,你所要做的就是修改虚拟主机配置中的 SSLCertificateFileSSLCertificateKeyFile,以指向你的新私钥和公共证书。来自该教程中的 test.com 示例现在看起来像这样:

SSLCertificateFile /etc/ssl/certs/test-com.pem
SSLCertificateKeyFile /etc/ssl/private/test-com.key

CentOS 用户,请参阅在 CentOS wiki 中的在 CentOS 上设置 SSL 加密的 Web 服务器一文。过程是类似的,wiki 会告诉如何处理 SELinux。

测试 Apache SSL

一个简单的方法是用你的网络浏览器访问 https://yoursite.com,看看它是否可以正常工作。在第一次这样做时,你会在你过度保护的 web 浏览器中看到可怕的警告说网站是不安全的,因为它使用的是自签名证书。请忽略你这个敏感的浏览器,并单击屏幕创建永久性例外。 如果你遵循在给初学者看的在 Ubuntu Linux 上使用 Apache:第 2 部分上的示例虚拟主机配置,那么即使你的网站访问者尝试使用纯 HTTP,你的网站的所有流量都将强制通过 HTTPS。

一个很好测试方法是使用 OpenSSL。是的,有一个漂亮的命令来测试这些东西。试下这个:

$ openssl s_client -connect www.test.com:443
CONNECTED(00000003)
depth=0 C = US, ST = WA, L = Seattle, O = Alrac Writing Sweatshop, 
OU = home dungeon, CN = www.test.com, emailAddress = [email protected]
verify return:1
---
Certificate chain
 0 s:/C=US/ST=WA/L=Seattle/O=Alrac Writing Sweatshop/OU=home 
     dungeon/CN=www.test.com/[email protected]
   i:/C=US/ST=WA/L=Seattle/O=Alrac Writing Sweatshop/OU=home 
     dungeon/CN=www.test.com/[email protected]
---
Server certificate
-----BEGIN CERTIFICATE-----
[...]

这里输出了大量的信息。这里有很多关于 openssl s_client 的有趣信息; 现在足够我们知道我们的 web 服务器是否使用了正确的 SSL 证书。

创建一个证书签名请求

如果你决定使用第三方证书颁发机构(CA),那么就必须创建证书签名请求(CSR)。你将它发送给你的新 CA,他们将签署并将其发送给您。他们可能对创建你的 CSR 有自己的要求; 这是如何创建一个新的私钥和 CSR 的典型示例:

$ openssl req -newkey rsa:2048 -nodes \
   -keyout yourdomain.key -out yourdomain.csr

你也可以从一个已经存在的 key 中创建一个 CSR:

$ openssl req  -key yourdomain.key \
   -new -out domain.csr

今天就是这样了。下周我们将学习如何正确地在 Dovecot 中设置 OpenSSL

额外的教程

提高你的系统管理职业生涯吧!查看Linux基金会的系统管理的要点课程。


via: https://www.linux.com/learn/sysadmin/openssl-apache-and-dovecot

作者:CARLA SCHRODER 译者:geekpi 校对:wxy

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

从系统管理员接手服务器和主机管理以来,像应用监控这样的工具就成了他们的好帮手。其中比较有名的有 NagiosZabbixIcinga 和 Centreon。以上这些是重量级的监控工具,让一个新手管理员来设置,并使用其中的高级特性是有些困难的。

本文将向你介绍 Ganglia,它是一个易于扩展的监控系统。使用它可以实时查看 Linux 服务器和集群(图形化展示)中的各项性能指标。

Ganglia 能够让你以集群(按服务器组)和网格(按地理位置)的方式更好地组织服务器。

这样,我们可以创建一个包含所有远程主机的网格,然后将那些机器按照其它标准分组成小的集合。

此外, Ganglia 的 web 页面对移动设备进行过优化,也允许你导出 csv.json 格式的数据。

我们的测试环境包括一个安装 Ganglia 的主节点服务器 CentOS 7 (IP 地址 192.168.0.29),和一个作为被监控端的 Ubuntu 14.04 主机(192.168.0.32)。我们将通过 Ganglia 的 Web 页面来监控这台 Ubuntu 主机。

下面的例子可以给大家提供参考,CentOS7 作为主节点,Ubuntu 作为被监控对象。

安装和配置 Ganglia

请遵循以下步骤,在主节点服务器安装监控工具。

1、 启用 EPEL 仓库 ,然后安装 Ganglia 和相关工具:

# yum update && yum install epel-release
# yum install ganglia rrdtool ganglia-gmetad ganglia-gmond ganglia-web

在上面这步随 Ganglia 将安装一些应用,它们的功能如下:

  • rrdtool,Round-Robin 数据库,它是一个储存并图形化显示随着时间变化的数据的工具;
  • ganglia-gmetad 一个守护进程,用来收集被监控主机的数据。被监控主机与主节点主机都要安装 Ganglia-gmond(监控守护进程本身);
  • ganglia-web 提供 Web 前端,用于显示监控系统的历史数据和图形。 2、 使用 Apache 提供的基本认证功能,为 Ganglia Web 界面(/usr/share/ganglia)配置身份认证。

如果你想了解更多高级安全机制,请参阅 Apache 文档的 授权与认证部分。

为完成这个目标,我们需要创建一个用户名并设定一个密码,以访问被 Apache 保护的资源。在本例中,我们先来创建一个叫 adminganglia 的用户名,然后给它分配一个密码,它将被储存在 /etc/httpd/auth.basic(可以随意选择另一个目录 和/或 文件名, 只要 Apache 对此有读取权限就可以。)

# htpasswd -c /etc/httpd/auth.basic adminganglia

给 adminganglia 输入两次密码完成密码设置。

3、 修改配置文件 /etc/httpd/conf.d/ganglia.conf

Alias /ganglia /usr/share/ganglia
<Location /ganglia>
AuthType basic
AuthName "Ganglia web UI"
AuthBasicProvider file
AuthUserFile "/etc/httpd/auth.basic"
Require user adminganglia
</Location>

4、 编辑 /etc/ganglia/gmetad.conf

首先,使用 gridname 指令来为网格设置一个描述性名称。

gridname "Home office"

然后,使用 data_source 指令,后面跟集群名(服务器组)、轮询时间间隔(秒)、主节点主机和被监控节点的 IP 地址:

data_source "Labs" 60 192.168.0.29:8649 # 主节点
data_source "Labs" 60 192.168.0.32 # 被监控节点

5、 编辑 /etc/ganglia/gmond.conf

a) 确保集群的配置类似下面。

cluster {
name = "Labs" # gmetad.conf 中的  data_source 指令的名字
owner = "unspecified"
latlong = "unspecified"
url = "unspecified"
}

b) 在 udp_send_chanel 中,注释掉 mcast_join

udp_send_channel   {
# mcast_join = 239.2.11.71
host = localhost
port = 8649
ttl = 1
}

c) 在 udp_recv_channel 中,注释掉 mcast_joinbind 部分:

udp_recv_channel {
# mcast_join = 239.2.11.71 ## comment out
port = 8649
# bind = 239.2.11.71 ## comment out
}

保存并退出。

6、打开 8649/udp 端口,使用 SELinux 确保 php 脚本(通过 Apache 运行)能够连接到网络:

# firewall-cmd --add-port=8649/udp
# firewall-cmd --add-port=8649/udp --permanent
# setsebool -P httpd_can_network_connect 1

7、重启 Apache、gmetad、gmond,并确保它们启用了“开机启动”。

# systemctl restart httpd gmetad gmond
# systemctl enable httpd gmetad httpd

至此,我们现在能够打开 Ganglia 的 Web 页面 http://192.168.0.29/ganglia 并用步骤 2 中设置的凭证登录。

Gangila Web Interface

Gangila Web 页面

8、 在 Ubuntu 主机上,只需安装 Ganglia-monitor,等同于 CentOS 上的 ganglia-gmond:

$ sudo aptitude update && aptitude install ganglia-monitor

9、 编辑被监控主机的 /etc/ganglia/gmond.conf 文件。与主节点主机上是相同的文件,除了被注释掉的 cluster, udp_send_channeludp_recv_channel 这里不应被注释:

cluster {
name = "Labs" # The name in the data_source directive in gmetad.conf
owner = "unspecified"
latlong = "unspecified"
url = "unspecified"
}
udp_send_channel   {
mcast_join = 239.2.11.71
host = localhost
port = 8649
ttl = 1
}
udp_recv_channel {
mcast_join = 239.2.11.71 ## comment out
port = 8649
bind = 239.2.11.71 ## comment out
}

之后重启服务。

$ sudo service ganglia-monitor restart

10、 刷新页面,你将在 Home office grid / Labs cluster 中看到两台主机的各种统计及图形化的展示(用下拉菜单选择集群,本例中为 Labs):

Ganglia Home Office Grid Report

Ganglia 中 Home office 网格报告

使用菜单按钮(如上指出的),你可以获取到每台服务器和集群的信息。还可以使用 对比主机Compare Hosts选项卡来比较集群中所有服务器的状态。

可以使用正则表达式选择一组服务器,立刻就可以看到它们性能的对比:

Ganglia Host Server Information

Ganglia 服务器信息

我最喜欢的一个特点是对移动端有友好的总结界面,可以通过 Mobile 选项来访问。选择你感兴趣的集群,然后选中一个主机。

Ganglia Mobile Friendly Summary View

Ganglia 移动端总结截图

总结

本篇文章向大家介绍了 Ganglia,它是一个功能强大、扩展性很好的监控工具,主要用来监控集群和网格。它可以随意安装,便捷的组合各种功能(你甚至可以尝试一下官方网站提供的 Demo)。

此时,你可能会发现许多知名的 IT 或非 IT 的企业在使用 Ganglia。除了我们在文章中提及的之外,还有很多理由这样做,其中易用性,统计的图形化(在名字旁附上脸部照片更清晰,不是吗)可能是最重要的原因。

但是请不要拘泥于本篇文章,尝试一下自己去做。如果你有任何问题,欢迎给我留言。


via: http://www.tecmint.com/install-configure-ganglia-monitoring-centos-linux/

作者:Gabriel Cánepa 译者:ivo-wang 校对:jasminepeng

本文由 LCTT 组织编译,Linux中国 荣誉推出

在本指南中,我们将介绍如何在 Linux 系统上显示当前工作目录或任何目录及其子目录中的文件数量。

我们将使用 find 命令,它用于搜索目录层次结构中的文件,以及 wc 命令,它会打印每个文件或来自标准输入的换行符、单词和字节计数。

以下是我们在 find 命令中使用的选项,如下所示:

  1. -type - 指定要搜索的文件类型,在上面的情况下,f 表示查找所有常规文件。
  2. -print - 打印文件绝对路径。

以下是我们 wc 命令中使用的选项,如下所示:

  1. -l - 此选项打印换行符的总数,也即由 find 命令输出的绝对文件路径总数。

find 命令的一般语法。

# find . -type f -print | wc -l
$ sudo find . -type f -print | wc -l

重要:使用 sudo 命令来读取指定目录中的所有文件,包括具有超级用户权限的子目录中的文件,以避免 “Permission denied” 错误,如下截图所示:

Find Number of Files in Linux

Linux 中的文件数量

你可以看到,在上面的第一个命令中,find 命令没有读取当前工作目录中的所有文件。

下面是更多的示例,分别显示 /var/log/etc 目录中的常规文件总数:

$ sudo find /var/log/ -type f -print | wc -l
$ sudo find /etc/ -type f -print | wc -l

有关 Linux 中 findwc 命令的更多示例,请查看以下系列文章以了解其他使用选项,提示和相关命令:

  1. 35 个 Linux 中的 “find” 命令示例
  2. 如何在 Linux 中查找最近或今天的修改的文件
  3. 在 Linux 中查找十个占用最大的目录和文件
  4. 6 个有用的 “wc” 命令示例来计算行数、单词和字符

就是这样了!如果你知道其他任何方法来显示目录及其子目录中的文件总数,请在评论中与我们分享。


作者简介:

Aaron Kili 是 Linux 和 F.O.S.S 爱好者,将来的 Linux SysAdmin、web 开发人员,目前是 TecMint 的内容创建者,他喜欢用电脑工作,并坚信分享知识。


via: http://www.tecmint.com/find-number-of-files-in-directory-subdirectories-linux/

作者:Aaron Kili 译者:geekpi 校对:wxy

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

在最近的文章中,我们向你展示了 在 Linux 中设置 sudo 的十条 sudoers 实用配置以及让 sudo 在你输入错误的密码时“嘲讽”你,在本文中,我们发现了另一个 sudo 贴士,在 Ubuntu Linux 中使 sudo 密码会话(超时)更长或更短。

在 Ubuntu 及其衍生版如 Linux Mint 或任何其他基于 Ubuntu 的发行版中,当你执行 sudo 命令 时,它将提示你输入管理密码。

在第一次执行 sudo 命令后,默认情况下密码将保持 15 分钟,因此你不需要为每个 sudo 命令键入密码。

如果,你因为某种原因觉得 15 分钟太长或太短,你可以在 sudoers 文件中做一个简单的调整。

要设置 sudo 密码超时值,请使用 passwd_timeout 参数。首先使用 sudovisudo 命令以超级用户权限打开 /etc/sudoers 文件,如下所示:

$ sudo visudo 

接着添加下面的默认值,这意味着 sudo 密码提示将会在用户使用 sudo 20 分钟后过期。

Defaults        env_reset,timestamp_timeout=20

注意:你可以以分钟设置为你所需的任何时间,它会在超时之前一直等待。 如果要为每个执行的 sudo 命令弹出密码提示,你也可以将时间设置为 0,或者通过设置值 -1 永久禁用密码提示。

下面的截图显示了我在 /etc/sudoers 文件中设置的默认参数。

Change sudo Password Timeout

改变 sudo 密码超时

Ctrl + O 保存文件,然后使用 Ctrl + X 退出。 然后,使用 sudo 运行命令并等待 2 分钟以检查密码提示是否超时以测试设置是否正常。

在本篇中,我们解释了如何设置 sudo 密码提示超时之前的分钟数,记得在评论栏分享你对这篇文章的想法或者其他对系统管理员配置有用的 sudo 配置


作者简介:

Aaron Kili 是 Linux 和 F.O.S.S 爱好者,将来的 Linux SysAdmin 以及 web 开发人员,目前是 TecMint 的内容创建者,他喜欢用电脑工作,并坚信分享知识。


via: http://www.tecmint.com/set-sudo-password-timeout-session-longer-linux/

作者:Aaron Kili 译者:geekpi 校对:wxy

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

什么是 RAM?

在智能手机世界,我们每一个人都知道 RAM。因此,我不想深入介绍,这样我就简要概括下。RAM 代表“ 随机访问内存 Random Access Memory ”,是一种计算机数据存储,它会存储经常使用的程序来提升系统性能。

什么是虚拟内存?

虚拟内存是一种内存管理方式,计算机通过临时将最近未使用的程序数据从 RAM 转移到硬盘,以平衡或管理内存的短缺。

什么是 vmstat?

vmstat 是一个标准的工具,它会报告 Linux 系统的虚拟内存统计。vmstat 会报告有关进程、内存、分页、块 IO、陷阱(中断)和 cpu 活动的信息。它可以帮助 Linux 管理员在解决问题时识别系统瓶颈。

在 Linux 中安装 Sysstat

Linux 中没有独立的 vmstat 包。它与 sysstat 绑定在一起,并在大多数发行版的默认仓库上都有。如果还没有安装,只要基于你的发行版输入下面的命令。

[在 CentOS/RHEL 中安装 vmstat]
$ sudo yum install sysstat

[在 Fedora 中安装 vmstat]
$ sudo dnf install sysstat

[在 Debian/Ubuntu 中安装 vmstat]
$ sudo apt-get install sysstat

[在 Arch Linux 中安装 vmstat]
$ sudo pacman -S sysstat

[在 Mageia 中安装 vmstat]
$ sudo urpmi sysstat

[在 openSUSE 中安装 vmstat]
$ sudo zypper install sysstat

不带参数运行 vmstat

假设你已经成功安装 vmstat,在终端中不带参数运行 vmstat,它会向你展示 vmstat 的默认结果。

# vmstat
procs -----------memory---------- ---swap-- -----io---- -system-- ----cpu----
 r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa
 2  0  79496 1614120 139240 787928   0    0    23    10    0    0 11  1 88  0

当你看到上面的输出,你可能已经大致了解了它是什么以及它的目的。不要担心,我们将深入解释每个参数,以便你可以了解 vmstat 的用途和目的。

procs:procs 中有 rb 列,它报告进程统计信息。在上面的输出中,在运行队列(r)中有两个进程在等待 CPU 并有零个休眠进程(b)。通常,它不应该超过处理器(或核心)的数量,如果你发现异常,最好使用 top 命令进一步地排除故障。

  • r:等待运行的进程数。
  • b:休眠状态下的进程数。

memory: memory 下有报告内存统计的 swpdfreebuffcache 列。你可以用 free -m 命令看到同样的信息。在上面的内存统计中,统计数据以千字节表示,这有点难以理解,最好添加 M 参数来看到以兆字节为单位的统计数据。

  • swpd:使用的虚拟内存量。
  • free:空闲内存量。
  • buff:用作缓冲区的内存量。
  • cache:用作高速缓存的内存量。
  • inact:非活动内存的数量。
  • active:活动内存量。

swap:swap 有 siso 列,用于报告交换内存统计信息。你可以用 free -m 命令看到相同的信息。

  • si:从磁盘交换的内存量(换入,从 swap 移到实际内存的内存)。
  • so:交换到磁盘的内存量(换出,从实际内存移动到 swap 的内存)。

I/O:I/O 有 bibo 列,它以“块读取”和“块写入”的单位来报告每秒磁盘读取和写入的块的统计信息。如果你发现有巨大的 I/O 读写,最好使用 iotopiostat 命令来查看。

  • bi:从块设备接收的块数。
  • bo:发送到块设备的块数。

system:system 有 incs 列,它报告每秒的系统操作。

  • in:每秒的系统中断数,包括时钟中断。
  • cs:系统为了处理所以任务而上下文切换的数量。

CPU:CPU 有 ussyidwa 列,报告(所用的) CPU 资源占总 CPU 时间的百分比。如果你发现异常,最好使用 topfree 命令。

  • us:处理器在非内核程序消耗的时间。
  • sy:处理器在内核相关任务上消耗的时间。
  • id:处理器的空闲时间。
  • wa:处理器在等待IO操作完成以继续处理任务上的时间。

以 MB 方式输出

默认情况下,vmstat 以千字节为单位显示内存统计,这是非常难以理解的,最好添加 -S m 参数以获取以兆字节为单位的统计。

# vmstat -S m
procs -----------memory---------- ---swap-- -----io---- -system-- ----cpu----
 r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa
 1  0    103    371    406   2116    0    0    40    15    0    0 11  1 87  0

以延迟方式运行 vmstat 获取更好的统计信息

默认情况下,vmstat 的单次统计信息不足以进一步进行故障排除,因此,添加更新延迟(延迟是更新之间的延迟,以秒为单位)以定期捕获活动。如果你想以 2 秒延迟运行 vmstat ,只需使用下面的命令(如果你想要更长的延迟,你可以根据你的愿望改变)。

以下命令将每 2 秒运行一次,直到退出。

# vmstat 2
procs -----------memory---------- ---swap-- -----io---- -system-- ----cpu----
 r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa
 1  0 105500 325776 416016 2166912   0    0    40    15    0    0 11  1 87  0
 0  0 105500 325644 416016 2166920   0    0     0    13 1083 1174 11  1 87  0
 0  0 105500 308648 416024 2166928   0    0     1    16 1559 1453 16  2 82  0
 0  0 105500 285948 416032 2166932   0    0     0    12  934 1003  9  1 90  0
 0  0 105500 326620 416040 2166940   0    0     1    27  922 1068  9  1 90  0
 0  0 105500 366704 416048 2166944   0    0     0    17  835  955  9  1 90  0
 0  0 105500 366456 416056 2166948   0    0     1    22  859  918  9  1 90  0
 0  0 105500 366456 416056 2166948   0    0     0    15 1539 1504 17  2 81  0
 0  0 105500 365224 416060 2166996   0    0     1    19  984 1097 11  1 88  0

带延迟和计数运行 vmstat

或者,你可以带延迟和特定计数运行 vmstat,一旦达到给定的计数,然后自动退出。

以下命令将每 2 秒运行一次,10 次后自动退出。

# vmstat 2 10
procs -----------memory---------- ---swap-- -----io---- -system-- ----cpu----
 r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa
 1  0  79496 1581916 157380 810412   0    0    23    10    0    1 11  1 88  0
 2  0  79496 1559464 157380 810416   0    0     1     1 1821 1749 21  2 77  0
 0  0  79496 1583768 157384 810416   0    0     1    46  681  799  9  1 90  0
 2  0  79496 1556364 157384 810428   0    0     1     1 1392 1545 15  2 83  0
 0  0  79496 1583272 157384 810428   0    0     1     0 1307 1448 14  2 84  0
 2  0  79496 1582032 157384 810428   0    0     1    41  424  605  4  1 96  0
 1  0  79496 1575848 157384 810428   0    0     1     0 1912 2407 26  2 71  0
 0  0  79496 1582884 157384 810436   0    0     1    69  678  825  9  1 90  0
 2  0  79496 1569368 157392 810432   0    0    11    26  920  969  9  1 90  0
 1  0  79496 1583612 157400 810444   0    0     7    39 2001 2530 20  2 77  0

显示活动和非活动内存

默认情况下,vmstat 会显示除活动和非活动内存之外的内存统计信息。如果要查看活动和非活动内存统计信息,请在 vmstat 后添加 -a 参数。

# vmstat -a
procs -----------memory---------- ---swap-- -----io---- -system-- ----cpu----
 r  b   swpd   free  inact active   si   so    bi    bo   in   cs us sy id wa
 1  0 105500 2387592 415148 584112   0    0    40    15    0    1 11  1 87  0

打印磁盘统计

在 vmstat 后面添加 -d 参数会以每个磁盘一行的方式显示统计(包含读、写和 IO)。

# vmstat -d
disk- ------------reads------------ ------------writes----------- -----IO------
       total merged sectors      ms  total merged sectors      ms    cur    sec
ram0       0      0       0       0      0      0       0       0      0      0
ram1       0      0       0       0      0      0       0       0      0      0
ram2       0      0       0       0      0      0       0       0      0      0
ram3       0      0       0       0      0      0       0       0      0      0
ram4       0      0       0       0      0      0       0       0      0      0
ram5       0      0       0       0      0      0       0       0      0      0
ram6       0      0       0       0      0      0       0       0      0      0
ram7       0      0       0       0      0      0       0       0      0      0
ram8       0      0       0       0      0      0       0       0      0      0
ram9       0      0       0       0      0      0       0       0      0      0
ram10      0      0       0       0      0      0       0       0      0      0
ram11      0      0       0       0      0      0       0       0      0      0
ram12      0      0       0       0      0      0       0       0      0      0
ram13      0      0       0       0      0      0       0       0      0      0
ram14      0      0       0       0      0      0       0       0      0      0
ram15      0      0       0       0      0      0       0       0      0      0
loop0      0      0       0       0      0      0       0       0      0      0
loop1      0      0       0       0      0      0       0       0      0      0
loop2      0      0       0       0      0      0       0       0      0      0
loop3      0      0       0       0      0      0       0       0      0      0
loop4      0      0       0       0      0      0       0       0      0      0
loop5      0      0       0       0      0      0       0       0      0      0
loop6      0      0       0       0      0      0       0       0      0      0
loop7      0      0       0       0      0      0       0       0      0      0
fd0        0      0       0       0      0      0       0       0      0      0
sda   16604050 904497 2594882190 57455732 30037054 28093770 2160032056 118189160      0  40915
sdb   257357577 479985 3124712204 577235320 8502519 1283237 36645890 11250948      0 182336

总结磁盘统计

在 vmstat 后面添加 -D 会显示全局统计(包括全部的磁盘、分区、全部读、合并的读、读取的扇区、写、合并的写、写入的扇区和 IO)。

# vmstat -D
           27 disks
            3 partitions
    275754028 total reads
      1388030 merged reads
   5751195976 read sectors
    638710116 milli reading
     38795040 writes
     29520659 merged writes
   2209820333 written sectors
    130210652 milli writing
            0 inprogress IO
       224704 milli spent IO

打印指定分区统计

vmstat 添加 -p 参数后面跟上设备名会显示指定分区统计(包括读、读取的扇区、写以及请求的写)。

# vmstat -p /dev/sdb1
sdb1          reads   read sectors  writes    requested writes
                3115      27890     839453  206728016

vmstat 统计信息带上时间戳

当你想在特定时间区间内找到内存尖峰时,用 vmstat 命令添加 -t 参数,后跟延迟和计数。

注意:此组合不适用于基于 Debian 的系统。

# vmstat -t 1 5
procs -----------memory---------- ---swap-- -----io---- --system-- -----cpu------ ---timestamp---
 r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa st
 0  0      0 6981416 181324 24588604    0    0     0     1    0    0  0  0 100  0  0    2017-01-11 15:42:15 MST
 2  0      0 6981276 181324 24588604    0    0     0     0   91   40  0  0 100  0  0    2017-01-11 15:42:16 MST
 0  0      0 6982016 181324 24588604    0    0     0     0   75  116  0  0 100  0  0    2017-01-11 15:42:17 MST
 0  0      0 6982016 181324 24588604    0    0     0     0   43   39  0  0 100  0  0    2017-01-11 15:42:18 MST
 0  0      0 6982280 181324 24588604    0    0     0     0  113  185  0  0 100  0  0    2017-01-11 15:42:19 MST

打印更多统计

vmstat 后面跟上 -s 参数会显示不同统计的总结。

# vmstat -s
     32849392  total memory
     25864128  used memory
     16468180  active memory
      8320888  inactive memory
      6985264  free memory
       181324  buffer memory
     24588612  swap cache
     20970492  total swap
            0  used swap
     20970492  free swap
       891075 non-nice user cpu ticks
         6532 nice user cpu ticks
      1507099 system cpu ticks
  18925265601 idle cpu ticks
       113043 IO-wait cpu ticks
          108 IRQ cpu ticks
         4185 softirq cpu ticks
            0 stolen cpu ticks
      4071862 pages paged in
    216759718 pages paged out
            0 pages swapped in
            0 pages swapped out
    369611221 interrupts
    477861261 CPU context switches
   1478258826 boot time
      2196121 forks

打印 slab 统计

vmstat 后面跟上 -m 参数会显示 slab 信息。

# vmstat -m
Cache                       Num  Total   Size  Pages
nf_conntrack_expect           0      0    240     16
nf_conntrack_ffffffff81b2a920     18     60    312     12
fib6_nodes                   24     59     64     59
ip6_dst_cache                16     30    384     10
ndisc_cache                   7     30    256     15
ip6_mrt_cache                 0      0    128     30
RAWv6                        35     35   1088      7
UDPLITEv6                     0      0   1024      4
UDPv6                         4     12   1024      4
tw_sock_TCPv6                 0      0    320     12
request_sock_TCPv6            0      0    192     20
TCPv6                         4      6   1920      2
fat_inode_cache               5      6    672      6
fat_cache                     0      0     32    112
ioat2                      4096   4140    128     30
ext4_inode_cache          34322  34364   1000      4
ext4_xattr                    0      0     88     44
.
.
.

阅读更多关于 vmstat

如果你想了解关于 vmstat 的更多选项,请阅读手册。

# vmstat --help
或者
# man vmstat

作者简介:

Magesh Maruthamuthu,热爱玩所有的 Linux 发行版


via: http://www.2daygeek.com/linux-vmstat-command-examples-tool-report-virtual-memory-statistics/

作者:Magesh Maruthamuthu 译者:geekpi 校对:wxy

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

本文中包含了很多命令行基础。我们将讨论 TeleTYpe(TTY)和几个命令及其选项。确保做完所有练习,并要知道,除非另有说明,对 CentOS 和 Ubuntu 都是相同的。

TTY

当没有图形用户界面(GUI)或当用户在 GUI 之外,Linux 就会使用 TTY。当打开终端窗口时也使用 TTY,但这些是不同类型的 TTY。

有三种类型的 TTY:

  1. 物理终端
  2. 本地伪终端
  3. 远程伪终端

基本上,每个 Linux 系统有大约六个或七个物理 TTY。 通过按住 CTRL + ALT 键,然后在 CentOS 按住 F1F6 ,而在 Ubuntu 中是 F1F7

注意: 一些发行版可能有不同数量的 TTY 和不同的 GUI 默认位置。有点发行版可能有在物理 TTY 之间切换的不同组合键,如 CTRL + F#ALT + F# ( LCTT 译注:F# 代表 F1、F2 等)。当使用 VirtualBox 时,除非您更改了主机键映射,请使用右 CTRL 键。

在 CentOS 中,GUI 在 TTY1(CTRL + ALT + F1)上,其他物理 TTY 都是基于文本的。 在 Ubuntu 上,GUI 在 TTY7(CTRL + ALT + F7)上,其他物理 TTY 都是基于文本的。

注意: 尝试在另一个 TTY 下加载 GUI 是不明智的,因为这可能耗用大量资源,但你可以这样做。

当 Linux 启动时,不管是 CentOS 还是 Ubuntu,都会打开默认 TTY。如果安装了 GUI,对于 CentOS 是打开 TTY1,对于 Ubuntu 是打开 TTY7。如果你打开一个终端窗口(伪 TTY)并使用命令 who,你可以看到正在使用的 TTY 的列表。 如图 1 所示。

Figure 01.jpg

图 1

在图 1 中,你可以看到我当前登录到 TTY1(非 GUI)。第二行连接显示我已登录到 GUI(TTY7)以及两个伪 TTY(pts/1 和 pts/2)。如图 2,你可以看到新条目显示了远程伪 TTY(pts/4)。 远程伪连接来自 IP 地址为 192.168.0.11 的系统。

Figure 02.jpg

图 2

可以使用诸如 PuTTY 或任何 SSH 的客户端(如果远程 Linux 系统上启用了 SSH)之类的应用程序进行远程 TTY 连接。

如果终端窗口字体比较小,你可以使用 CTRL + SHIFT 键和 + 键来放大字体。多次按下可以更大。要缩小大小,请使用 CTRL + SHIFT + - 不断缩小。要使终端字体恢复为原始大小,请按下 CTRL + SHIFT + 0

注意: 请注意,如果字体已经足够大或足够小了,组合键就不再工作了。

希望你现在已经了解各种类型的 TTY。让我们看看一些可以在 TTY 中使用的命令。

命令

其中一个命令前面已经讨论过了。命令 who 用于显示谁登录到了系统。

另一个命令是 pwd。命令 pwd 代表“ 打印工作目录 Print Working Directory ”。该命令返回你所在的当前目录。例如,如果终端提示符是 [jbuse@localhost〜]$,则用户名为 jbuse,当前目录为 。波浪号()代表用户的主文件夹。主文件夹应该是 /home/USERNAME。用户名是用于登录系统的名称。

要列出当前文件夹的内容,请使用命令 lsls 命令代表 List。如果未指定任何选项,则列出当前文件夹。如果给出文件夹名称,则会列出该文件夹的内容。例如,要查看 media 文件夹的内容,你可以使用命令 ls /media

ls 命令后面我们可以添加一些选项以显示更多详细信息或特定详细信息。如果你想看到所有的文件夹和文件,即使是隐藏的,请使用选项 -a。要查看当前目录中的所有文件和文件夹,请使用命令 ls -a。隐藏的文件和文件夹将在名称前面显示一个句点(.)。

要在每个文件夹名称后看到正斜杠(/),请使用 -F 选项。当前文件夹列表将是 ls -F-F 用于按文件类型对文件进行分类。符号链接在文件夹名称后用 @ 表示。

你可以把这两个选项连在一起形成 ls -aF

注意: 一些选项可能有不同的大小写。选项区分大小写。

另一个选项是显示长列表的 -l。示例输出如图 3 所示。文件夹和文件名称列在右侧。文件为白色,文件夹为深蓝色,符号链接为浅蓝色。如图 3 所示,符号链接 vtrgb 链接自 /etc/alternatives/vtrgb

Figure 03.jpg

图 3

左侧的第一列是文件或文件夹的权限。第一个字母是 d 的为目录,是 - 的为文件。接下来的三个字母显示所有者的权限(r - 读、w - 写、x - 执行),后面是组权限以及“其他人”的权限。下一列数字显示指向文件或文件夹的链接数。再下一列是所有者名称,后面是所有组名称。再下一列是文件或文件夹在存储设备上占用的字节数。接下来的三列是文件上次修改的月份、日期和年份。最后一列是路径名。

目前为止,你可以看到列表是按字母顺序排序。要颠倒从 “z” 到 “a” 而不是 “a” 到 “z” 的顺序,请使用 -r 选项。逆转选项 -r 使 ls 命​​令反转输出顺序。

要按修改的时间戳列出文件,请使用 -t 选项。顺序是从最近修改到最早的修改日期。当然,在命令 ls -tr 中,同时使用 -t-r 颠倒了顺序。

如果你不喜欢看文件的长长的字节数,使用选项 -h。输出将会更易读,如显示 4.0K 而不是 4096

要获取单个文件夹的特定信息,请使用选项 -d,但必须指定该文件夹。例如,要查看文件夹 /media 的详细信息,请使用命令 ls -ld /media

另一个要熟悉的命令是命令 cat。命令 cat 用于将标准输入(文件)复制到标准输出(屏幕)。使用 cat 可以轻松地查看文件的内容。例如,要查看名为 text 的文件的内容,如果你与文件 text 在同一个文件夹中请使用命令 cat text。如果你不在同一个文件夹中,那么你必须指定位置。例如,如果文件 text 在文件夹 /home/jarret/test/ 中,那么命令将是 cat /home/jarret/test/text

另一个非常有用的命令是 manman 命令用于查看特定命令的文档。例如,要查看命令 ls 的帮助页面,请使用命令 man ls

注意: 记住,在 LFCS 考试中,你可以使用 man 命令。

查看这些命令并测试它们以熟悉它们。使用 man 命令,查看本文中的命令以查看其他可用的选项。


via: https://www.linuxforum.com/threads/lfcs-command-line-basics.3334/

作者:Jarret 译者:geekpi 校对:wxy

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