[scode type="red"]请不要在军事或秘密服务组织中使用，或用于非法目的。这是作者的意愿，不具约束力。很多人工作于这些组织中，无论如何都不关心法律和道德。如果你忽略这一点，你就不是“好”的人之一。[/scode][scode type="yellow"]不，这不是降价文档！老套！[/scode][scode type="blue"]可以通过docker直接下载最新github状态的Hydra：docker pull vanhauser/hydra[/scode]0x00 介绍最大的安全漏洞之一就是是密码，因为这个是每个密码安全研究表明的。这个工具是一个概念验证代码，给研究人员和安全顾问有可能展示未经授权的行为是多么容易从远程访问系统。已经有几种登录黑客工具可用，但是没有一个要么支持多个协议进行攻击，要么支持并行化连接。它经过测试可以在Linux、Windows/Cygwin、Solaris、FreeBSD/OpenBSD、QNX（Blackberry 10）和 MacOS。目前该工具支持以下协议：Asterisk, AFP, Cisco AAA, Cisco auth, Cisco enable, CVS, Firebird, FTP,HTTP-FORM-GET, HTTP-FORM-POST, HTTP-GET, HTTP-HEAD, HTTP-POST, HTTP-PROXY,HTTPS-FORM-GET, HTTPS-FORM-POST, HTTPS-GET, HTTPS-HEAD, HTTPS-POST,HTTP-Proxy, ICQ, IMAP, IRC, LDAP, MEMCACHED, MONGODB, MS-SQL, MYSQL, NCP, NNTP, Oracle Listener,Oracle SID, Oracle, PC-Anywhere, PCNFS, POP3, POSTGRES, Radmin, RDP, Rexec, Rlogin,Rsh, RTSP, SAP/R3, SIP, SMB, SMTP, SMTP Enum, SNMP v1+v2+v3, SOCKS5,SSH（v1 and v2）, SSHKEY, Subversion, Teamspeak（TS2）, Telnet, VMware-Auth,VNC,XMPP这里没有的，你也可以试一下，说不定也可以，而且，新服务的模块引擎非常简单，因此不需要很长一段时间，直到支持更多服务。0x01 获取途径Github项目地址：https://github.com/vanhauser-thc/thc-hydra最新发布、生产版本下载地址：https://github.com/vanhauser-thc/thc-hydra/releasesDocker版本：docker pull vanhauser/hydra 如果您对当前的开发状态感兴趣，公共开发存储库位于Github：# SVN svn checkout https://github.com/vanhauser-thc/thc-hydra #Github git clone https://github.com/vanhauser-thc/thc-hydra 0x02 编译安装wget --no-check-certificate https://github.com/vanhauser-thc/thc-hydra/archive/refs/tags/v9.3.tar.gz tar zxvf thc-hydra-9.3.tar.gz cd hydra-9.3 ./configure make make install 如果你想要 ssh 模块，你必须在你的系统上设置 libssh（不是 libssh2），从https://www.libssh.org获取它，对于 ssh v1 支持，您还需要在 cmake 命令行中添加“-DWITH_SSH1=On”选项。重要提示：如果您在 MacOS 上编译，那么您必须这样做，不要通过 brew 安装 libssh！Ubuntu/Debian，这将安装一些可选模块所需的补充库（请注意，有些可能在您的发行版中不可用）：apt-get install libssl-dev libssh-dev libidn11-dev libpcre3-dev libgtk2.0-dev libmysqlclient-dev libpq-dev libsvn-dev firebird-dev libmemcached-dev libgpg-error-dev libgcrypt11-dev libgcrypt20-dev 这将启用除 Oracle 之外的所有可选模块和功能，SAP R/3、NCP 和苹果归档协议 - 您需要从供应商的网站下载和安装。对于所有其他 Linux 衍生产品和基于 BSD 的系统，请使用系统软件安装程序并查找与上述命令类似的名称库。在所有其他情况下，您必须下载所有源库并手动编译它们。[collapse status="false" title="支持的平台"]所有 UNIX 平台（Linux、*BSD、Solaris 等）MacOS（基本上是 BSD 克隆）带有 Cygwin 的 Windows（两者IPv4 和 IPv6) 基于 Linux、MacOS 或 QNX 的移动系统（例如 Android、iPhone、Blackberry 10、Zaurus、iPaq）[/collapse]0x03 如何食用如果你只输入hydra，你将看到可用重要选项的简短摘要。键入./hydra -h以查看所有可用的命令行选项。请注意，不包含登录名/密码文件。自己生成它们，但是存在默认密码列表，请使用dpl4hydra.sh生成列表。对于Linux用户，可以使用 GTK GUI，尝试 ./xhydra对于命令行使用，语法如下：hydra [一些命令行选项] [-s PORT] TARGET PROTOCOL [MODULE-OPTIONS] 攻击一个目标或网络，可以使用新的://样式：hydra [OPTION] PROTOCOL://TARGET:PORT/MODULE-OPTIONS [collapse status="false" title="命令解析"]OPTION：您可以指定要尝试哪些登录、哪些密码、是否应该使用 SSL、多少个并行任务用于攻击等PROTOCOL：协议，例如：tcp、http、ftp、smtp、smb等TARGET：目标主机，可以是IP地址也可以是域名PORT：端口，例如：80、8080、445等MODULE-OPTIONS：可选值，每个PROTOCOL都是特殊的模块[/collapse]关于目标主机的食用hydra 所做的一切都只是 IPv4！如果要攻击 IPv6 地址，必须添加“-6”命令行选项。那么所有的攻击都只是 IPv6！对一整个网段的话需要添加[]，如果您想通过文本文件提供目标则可以选择-M指定列表文件例如： hydra [一些命令行选项] ftp://[192.168.0.0/24]/ hydra [一些命令行选项] -6 smtps://[2001:db8::1]/NTLM hydra [一些命令行选项] -M targets.txt ftp 关于登录名和密码的食用对于如何使用登录名和密码进行攻击，您有很多选择使用 -l 登录名和 -p 密码，你告诉 hydra 这是唯一可以尝试的登录名和/或密码。使用 -L 登录名和 -P 密码，你可以为文本文件提供条目。例如： hydra -l admin -p 密码 ftp://localhost/ hydra -L default_logins.txt -p test ftp://localhost/ hydra -l admin -P common_passwords.txt ftp://localhost/ hydra - L logins.txt -P passwords.txt ftp://localhost/ 关于爆破字典的生成食用-x 选项的暴力模式（不能与 -p/-P/-C 一起使用），-x minimum_length:maximum_length:charset字符集定义是a代表小写字母，A 代表大写字母，1 代表数字，对于您提供的任何其他内容，它都是它们的真实表示。示例：-x 1:3:a 生成长度为 1 到 3 的密码，全部小写-x 2:5:/ 生成长度为 2 到 5 的密码，仅包含斜杠-x 5:8:A1 生成密码长度为 5 到 8，带有大写和数字例如： hydra -l ftp -x 3:3:a ftp://localhost/ 各类的爆破实例#FTP爆破 hydra -l root -P passlist.txt -vV ftp://192.168.1.1 #SSH爆破 hydra -l root -P passlist.txt -vV ssh://192.168.1.1 #VNC爆破 hydra -P passlist.txt -vV vnc://192.168.1.1:5901 #MySQL爆破 hydra -L userlist.txt -P passlist.txt -V mysql://192.168.1.1:3306 #https爆破 hydra -m /index.php -L userlist.txt -P passlist.txt 192.168.1.1 https #Cisco爆破 hydra -P passlist.txt 192.168.1.1 cisco hydra -m cloud -P passlist.txt 192.168.1.1 cisco-enable #SMB爆破 hydra -l administrator -P passlist.txt 192.168.1.1 smb #POP3爆破 hydra -l muts -P pass.txt my.pop3.mail pop3 #RDP爆破 hydra 192.168.1.1 rdp -l administrator -P passlist.txt -V #http代理爆破 hydra -l admin -P passlist.txt http-proxy://192.168.1.1 #Telnet爆破 hydra 192.168.1.1 telnet -L userlist.txt -P passlist.txt -t 32 -s 23 -e ns -f -V
准备扫描新硬盘[root@localhost ~]# echo "- - -" > /sys/class/scsi_host/host0/scan [root@localhost ~]# echo "- - -" > /sys/class/scsi_host/host1/scan [root@localhost ~]# echo "- - -" > /sys/class/scsi_host/host2/scan 查看硬盘信息[root@localhost ~]# fdisk -l 磁盘 /dev/sda：299.4 GB, 299439751168 字节，584843264 个扇区 Units = 扇区 of 1 * 512 = 512 bytes 扇区大小(逻辑/物理)：512 字节 / 512 字节 I/O 大小(最小/最佳)：512 字节 / 512 字节 磁盘标签类型：dos 磁盘标识符：0x000e1d94 设备 Boot Start End Blocks Id System /dev/sda1 * 2048 2099199 1048576 83 Linux /dev/sda2 2099200 584843263 291372032 8e Linux LVM 磁盘 /dev/sdb：1999.8 GB, 1999844147200 字节，3905945600 个扇区 Units = 扇区 of 1 * 512 = 512 bytes 扇区大小(逻辑/物理)：512 字节 / 512 字节 I/O 大小(最小/最佳)：512 字节 / 512 字节 磁盘标签类型：dos 磁盘标识符：0x566bd95b 磁盘 /dev/mapper/centos-data：6293.6 GB, 6293586706432 字节，12292161536 个扇区 Units = 扇区 of 1 * 512 = 512 bytes 扇区大小(逻辑/物理)：512 字节 / 512 字节 I/O 大小(最小/最佳)：512 字节 / 512 字节 磁盘 /dev/mapper/centos-swap：4294 MB, 4294967296 字节，8388608 个扇区 Units = 扇区 of 1 * 512 = 512 bytes 扇区大小(逻辑/物理)：512 字节 / 512 字节 I/O 大小(最小/最佳)：512 字节 / 512 字节 分区对新硬盘/dev/sdb进行分区[root@localhost ~]# fdisk /dev/sdb 欢迎使用 fdisk (util-linux 2.23.2)。 更改将停留在内存中，直到您决定将更改写入磁盘。 使用写入命令前请三思。 Device does not contain a recognized partition table 使用磁盘标识符 0x85c60777 创建新的 DOS 磁盘标签。 命令(输入 m 获取帮助)：n #新建分区 Partition type: p primary (0 primary, 0 extended, 4 free) e extended Select (default p): Using default response p 分区号 (1-4，默认 1)： 起始 扇区 (2048-3905945599，默认为 2048)： 将使用默认值 2048 Last 扇区, +扇区 or +size{K,M,G} (2048-3905945599，默认为 3905945599)： 将使用默认值 3905945599 分区 1 已设置为 Linux 类型，大小设为 1.8 TiB 命令(输入 m 获取帮助)：p #查看分区 磁盘 /dev/sdb：1999.8 GB, 1999844147200 字节，3905945600 个扇区 Units = 扇区 of 1 * 512 = 512 bytes 扇区大小(逻辑/物理)：512 字节 / 512 字节 I/O 大小(最小/最佳)：512 字节 / 512 字节 磁盘标签类型：dos 磁盘标识符：0x85c60777 设备 Boot Start End Blocks Id System /dev/sdb1 2048 3905945599 1952971776 83 Linux 命令(输入 m 获取帮助)：w #写入分区 LVM操作创建物理卷[root@localhost ~]# pvcreate /dev/vdb1 Physical volume "/dev/sdb1" successfully created. 查看系统卷组[root@localhost ~]# vgs VG #PV #LV #SN Attr VSize VFree centos 4 2 0 wz--n- <5.73t 0 将物理卷加入系统卷组[root@localhost ~]# vgextend centos /dev/vdb1 查看挂载信息并且筛选根目录的挂载信息[root@localhost ~]# cat /etc/fstab | grep centos /dev/mapper/centos-data / xfs defaults 0 0 /dev/mapper/centos-swap swap swap defaults 0 0 将空闲的磁盘扩展到/分区[root@localhost ~]# lvextend -l +100%FREE /dev/mapper/centos-data 重新识别/分区# 文件类型为ext4的情况 [root@localhost ~]# resize2fs /dev/mapper/centos-data # 文件类型为xfs的情况 [root@localhost ~]# xfs_growfs /dev/mapper/centos-data 确认服务器空间[root@localhost ~]# df -h 文件系统 容量 已用 可用 已用% 挂载点 devtmpfs 36G 0 36G 0% /dev tmpfs 36G 0 36G 0% /dev/shm tmpfs 36G 8.9M 36G 1% /run tmpfs 36G 0 36G 0% /sys/fs/cgroup /dev/mapper/centos-data 5.8T 11G 5.8T 1% / /dev/sda1 1014M 194M 821M 20% /boot tmpfs 7.1G 0 7.1G 0% /run/user/0
安装OpenVPN[root@localhost ~]# yum install -y epel-release [root@localhost ~]# yum install openvpn lzo -y 已加载插件：fastestmirror, langpacks Loading mirror speeds from cached hostfile * base: mirrors.aliyun.com * epel: my.mirrors.thegigabit.com * extras: mirrors.aliyun.com * updates: mirrors.aliyun.com 软件包 openvpn-2.4.12-1.el7.x86_64 已安装并且是最新版本 软件包 lzo-2.06-8.el7.x86_64 已安装并且是最新版本 无须任何处理 配置客户端文件[root@localhost ~]# vim /etc/openvpn/client/client.conf client dev tun proto tcp remote openvpn.if010.com 1194 resolv-retry infinite nobind persist-key persist-tun ca /etc/openvpn/client/ca.crt cert /etc/openvpn/client/client.crt key /etc/openvpn/client/client.key tls-auth /etc/openvpn/client/ta.key 1 remote-cert-tls server ns-cert-type server cipher AES-256-GCM verb 3 comp-lzo push-peer-info key-direction 1 拷贝相关文件[root@localhost ~]# tree /etc/openvpn/ /etc/openvpn/ ├── client │ ├── ca.crt # 服务端提供 │ └── ta.key # 服务端提供 ├── client.ovpn # 客户端配置文件 ├── passwd # 账号密码文件，需要新建，第一行账号，第二行是密码 └── server 2 directories, 4 files 启动客户端[root@localhost ~]# openvpn \ --daemon \ --auth-user-pass /etc/openvpn/client/passwd \ --config /etc/openvpn/client/client.conf \ --log-append /var/log/openvpn.log 命令参数说明：--daemon # 后台运行--config # 配置文件名称--auth-user-pass # 指定账号密码文件--log-append # 日志文件查看日志[root@localhost ~]# cat /var/log/openvpn.log
安装依赖yum install -y openssl-devel openssl-static zlib-devel lzma tk-devel xz-devel bzip2-devel ncurses-devel gdbm-devel readline-devel sqlite-devel gcc libffi-devel 下载Python3.7.0wget https://www.python.org/ftp/python/3.7.0/Python-3.7.0.tgz 开始安装1.解压安装包tar -xvf Python-3.7.0.tgz 2.将解压后文件夹迁移至/usr/local，并进入mv Python-3.7.0 /usr/local cd /usr/local/Python-3.7.0/ 3.执行配置文件并编译安装./configure make make install 4.在/usr/bin路径下生成python3的软链接ln -s /usr/local/Python-3.7.0/python /usr/bin/python3 验证安装[root@cn-sz python]# python3 --version Python 3.7.0 [root@cn-sz python]# pip3 --version pip 22.1.1 from /usr/local/lib/python3.7/site-packages/pip (python 3.7)
可以很肯定地说，find 命令是 Linux 后台开发人员必须熟知的操作之一，除非您使用的是 Windows Server。对于技术面试，它也是一个热门话题。让我们看一道真题：问题：如果你的 Linux 服务器上有一个名为 logs 的目录，如何删除该目录下最后一次访问时间超过一年的日志文件呢？答案：首先我们需要使用 cd 命令进入对应的目录，然后，命令如下：find . -type f -atime +365 -exec rm -rf {} \; 如果你还没有完全理解上面的命令，完全不用担心。本文将介绍 find 命令的 7 个实际用途，您最终会掌握它。如果您已经知道了，那么阅读这篇文章对您来说将是一个很好的回顾。按名称或正则表达式查找文件让我们从最简单的用法开始。要按特定名称搜索文件，命令如下：find . -name test.txt 如何查找所有格式为 pdf 的书籍？使用正则表达式：find ./yang/books -name "*.pdf" 默认情况下，find 命令会搜索常规文件，但最好进行指定（-type f）以使所有内容更清晰：find ./yang/books -type f -name "*.pdf" 查找不同类型的文件除了搜索常规文件外，我们还可以通过指定 -type 选项来搜索其他类型的文件。例如目录：find . -type d -name "yang*" 或者符号链接：find . -type l -name "yang*" 按指定的时间戳查找文件要按指定的时间戳搜索文件，我们需要知道 Linux 系统中的 3 个不同的时间戳：访问时间戳（atime）：最后一次读取文件的时间。修改时间戳（mtime）：文件内容最后一次被修改的时间。更改时间戳（ctime）：上次更改文件元数据的时间（如，所有权、位置、文件类型和权限设置）所以，正如开头提到的面试题，要搜索 atime 超过一年的文件，我们可以编写如下命令：find . -type f -atime +365 如果我们需要查找 mtime 正好是 5 天前的文件，请不要包含 +，因为它的意思是“大于”。find . -type f -mtime 5 显然，+ 表示“大于”，- 表示“小于”。所以我们可以搜索 ctime 在 5~10 天前的文件：find . -type f -ctime +5 -ctime -10 按大小查找文件-size 选项使我们能够按指定大小查找文件。我们可以将其计量单位指定为以下约定：b：512 字节块（默认）c：字节w：双字节字k：KBM：MBG：GB类似于按时间戳查找文件，+ 表示“大于”，- 表示“小于”。例如，要查找大小为 10 MB ~ 1 GB 的文件：find . -type f -size +10M -size -1G 按权限查找文件合理控制文件的权限是 Linux 管理员的一项重要任务。find 命令的 -perm 选项可以帮助我们按指定权限查找文件：find . -type f -perm 777 例如，上面的命令会搜索所有具有 777 权限的文件，这意味着一个文件对其持有者、组和所有用户具有所有的读、写和可执行权限。按所有权查找文件这个任务很简单。我们可以使用 -user 选项指定用户名。例如，以下命令将查找所有属于 yang 的文件：find -type f -user yang 在找到文件后执行命令在大多数情况下，我们希望在找到我们需要的文件后进行后续操作。例如将其删除，或检查它们的详细信息等等。-exec 命令使这些所有事情变得更加容易。现在，要了解如何使用它，让我们回到之前提到的面试问题：find . -type f -atime +365 -exec rm -rf {} \; 上述命令在 -exec 选项后是 rm -rf，其用于删除文件。{} 是用于查找结果的占位符。[scode type="yellow"]注意：占位符 {} 非常重要，尤其是在您想删除文件时。因为，如果您不使用它，该命令将对所有文件执行（而不是您刚刚通过 find 命令找到的文件）。[/scode]做一个尝试，请在终端上执行以下两个命令，并检查它们的结果有何不同：一个使用占位符：find . -type f -atime +5 -exec ls {} \; 另一个不使用：find . -type f -atime +5 -exec ls \; -exec 选项后面的命令必须以分号（;）结束。众所周知，转义字符用于去除单个字符的特殊含义。在 Linux 中，反斜杠 \ 用作转义字符。所以我们将它用于分号字符。
Vim分屏功能是通过分割窗口来实现的，这是提高工作效率的一大利器。无论我们想同时显示两个文件，或者同时显示一个文件的两个不同的位置，又或者并排比较两个文件，等等，这些都能通过分屏来实现，这样子很方便代码的比对和复制粘贴水平方向分屏打开新文件:sp 1.txt 或者:split 1.txt 这个命令把窗口横向切分为两个窗口，并把光标置于上面的窗口中。垂直方向分屏打开新文件:vsp 1.txt :vsplit 1.txt :sview linux.py ->只读分屏打开文件 另外，要打开窗口编辑一个新的文件时，可以用以下命令：:new 从命令行直接打开多个文件且是分屏vim -On file1, file2 ... ->垂直分屏 vim -on file1, file2 ... ->水平分屏 vim -O3 1.txt 2.txt 3.txt [scode type="blue"]注：-O垂直分屏，-o水平分屏，n表示分几个屏[/scode]实时调整当前窗口的宽度ctrl-w > //向右加宽，默认值为1ctrl-w N > //向右加宽宽度Nctrl-w < // 同理横屏/竖屏分屏打开当前文件ctrl+w sctrl+w v切换分屏ctrl+w h,j,k,lctrl+w 上下左右键crtl+w进行分屏窗口的切换 按完以后再按一个wcrtl+w进行分屏窗口的切换 按完以后再按一个r 互换窗口crtl+w进行分屏窗口的切换 按完以后再按一个c 关闭窗口关闭分屏关闭窗口有以下几个个命令：ctrl+W c 关闭当前窗口ctrl+w q 关闭当前窗口，若只有一个分屏且退出vim:only 仅保留当前分屏:hide 关闭当前分屏调整分屏的大小（宽度与高度）ctrl+w = 所有分屏都统一高度ctrl+w + 增加高度，默认值为1ctrl+w - 减少高度10 ctrl+w + 增加10行高度ctrl-w N + //当前屏高度加N使用指定当前屏的调整高度:resize 30 移动分屏：ctrl+W H,J,K,L将屏幕移动到最顶端：ctrl-w + K将屏幕移动到最低端：ctrl-w + J将屏幕移动到最左边：ctrl-w + H将屏幕移动到最右边：ctrl-w + L附上一个别人整理vim食用的思维导图
在 Linux 下，我们经常需要查看系统的硬件信息， 这里我罗列了查看系统硬件信息的实用命令，并做了分类，实例解说。[scode type="yellow"]由于我所使用的是腾讯云的云主机，所以会有很多参数没有，但您可以在真实的服务器上查询得到[/scode]CPUlscpu---查看的是 cpu 的统计信息[root@cn-sh ~]# lscpu Architecture: x86_64 CPU op-mode(s): 32-bit, 64-bit Byte Order: Little Endian CPU(s): 2 On-line CPU(s) list: 0,1 Thread(s) per core: 1 Core(s) per socket: 2 Socket(s): 1 NUMA node(s): 1 Vendor ID: GenuineIntel CPU family: 6 Model: 94 Model name: Intel(R) Xeon(R) Gold 6148 CPU @ 2.40GHz Stepping: 3 CPU MHz: 2394.374 BogoMIPS: 4788.74 Hypervisor vendor: KVM Virtualization type: full L1d cache: 32K L1i cache: 32K L2 cache: 4096K L3 cache: 28160K NUMA node0 CPU(s): 0,1 Flags: fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ss ht syscall nx pdpe1gb rdtscp lm constant_tsc rep_good nopl eagerfpu pni pclmulqdq ssse3 fma cx16 pcid sse4_1 sse4_2 x2apic movbe popcnt tsc_deadline_timer aes xsave avx f16c rdrand hypervisor lahf_lm abm 3dnowprefetch invpcid_single fsgsbase bmi1 hle avx2 smep bmi2 erms invpcid rtm mpx avx512f avx512dq rdseed adx smap clflushopt avx512cd avx512bw avx512vl xsaveopt xsavec xgetbv1 arat 查看/proc/cpuinfo,可以知道每个cpu信息，如每个CPU的型号，主频等[root@cn-sh ~]# cat /proc/cpuinfo processor : 0 vendor_id : GenuineIntel cpu family : 6 model : 94 model name : Intel(R) Xeon(R) Gold 6148 CPU @ 2.40GHz stepping : 3 microcode : 0x1 cpu MHz : 2394.374 cache size : 28160 KB physical id : 0 siblings : 2 core id : 0 cpu cores : 2 apicid : 0 initial apicid : 0 fpu : yes fpu_exception : yes cpuid level : 13 wp : yes flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ss ht syscall nx pdpe1gb rdtscp lm constant_tsc rep_good nopl eagerfpu pni pclmulqdq ssse3 fma cx16 pcid sse4_1 sse4_2 x2apic movbe popcnt tsc_deadline_timer aes xsave avx f16c rdrand hypervisor lahf_lm abm 3dnowprefetch invpcid_single fsgsbase bmi1 hle avx2 smep bmi2 erms invpcid rtm mpx avx512f avx512dq rdseed adx smap clflushopt avx512cd avx512bw avx512vl xsaveopt xsavec xgetbv1 arat bogomips : 4788.74 clflush size : 64 cache_alignment : 64 address sizes : 46 bits physical, 48 bits virtual power management: processor : 1 vendor_id : GenuineIntel cpu family : 6 model : 94 model name : Intel(R) Xeon(R) Gold 6148 CPU @ 2.40GHz stepping : 3 microcode : 0x1 cpu MHz : 2394.374 cache size : 28160 KB physical id : 0 siblings : 2 core id : 1 cpu cores : 2 apicid : 1 initial apicid : 1 fpu : yes fpu_exception : yes cpuid level : 13 wp : yes flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ss ht syscall nx pdpe1gb rdtscp lm constant_tsc rep_good nopl eagerfpu pni pclmulqdq ssse3 fma cx16 pcid sse4_1 sse4_2 x2apic movbe popcnt tsc_deadline_timer aes xsave avx f16c rdrand hypervisor lahf_lm abm 3dnowprefetch invpcid_single fsgsbase bmi1 hle avx2 smep bmi2 erms invpcid rtm mpx avx512f avx512dq rdseed adx smap clflushopt avx512cd avx512bw avx512vl xsaveopt xsavec xgetbv1 arat bogomips : 4788.74 clflush size : 64 cache_alignment : 64 address sizes : 46 bits physical, 48 bits virtual power management: 内存概要查看内存情况[root@cn-sh ~]# free -h total used free shared buff/cache available Mem: 3.7G 630M 2.1G 808K 1.0G 2.8G Swap: 0B 0B 0B 查看内存详细使用[root@cn-sh ~]# cat /proc/meminfo MemTotal: 3880168 kB MemFree: 2179824 kB MemAvailable: 2953032 kB Buffers: 140184 kB Cached: 712932 kB SwapCached: 0 kB Active: 1098856 kB Inactive: 265416 kB Active(anon): 511272 kB Inactive(anon): 696 kB Active(file): 587584 kB Inactive(file): 264720 kB Unevictable: 0 kB Mlocked: 0 kB SwapTotal: 0 kB SwapFree: 0 kB Dirty: 308 kB Writeback: 0 kB AnonPages: 511208 kB Mapped: 66772 kB Shmem: 808 kB Slab: 234540 kB SReclaimable: 210124 kB SUnreclaim: 24416 kB KernelStack: 2928 kB PageTables: 29976 kB NFS_Unstable: 0 kB Bounce: 0 kB WritebackTmp: 0 kB CommitLimit: 1940084 kB Committed_AS: 1776716 kB VmallocTotal: 34359738367 kB VmallocUsed: 12832 kB VmallocChunk: 34359720444 kB Percpu: 328 kB HardwareCorrupted: 0 kB AnonHugePages: 67584 kB CmaTotal: 0 kB CmaFree: 0 kB HugePages_Total: 0 HugePages_Free: 0 HugePages_Rsvd: 0 HugePages_Surp: 0 Hugepagesize: 2048 kB DirectMap4k: 59256 kB DirectMap2M: 3086336 kB DirectMap1G: 3145728 kB 查看内存硬件信息[root@cn-sh ~]# dmidecode -t memory # dmidecode 3.2 Getting SMBIOS data from sysfs. SMBIOS 2.8 present. Handle 0x1000, DMI type 16, 23 bytes Physical Memory Array Location: Other Use: System Memory Error Correction Type: Multi-bit ECC Maximum Capacity: 4 GB Error Information Handle: Not Provided Number Of Devices: 1 Handle 0x1100, DMI type 17, 40 bytes Memory Device Array Handle: 0x1000 Error Information Handle: Not Provided Total Width: Unknown Data Width: Unknown Size: 4096 MB Form Factor: DIMM Set: None Locator: DIMM 0 Bank Locator: Not Specified Type: RAM Type Detail: Other Speed: Unknown Manufacturer: Smdbmds Serial Number: Not Specified Asset Tag: Not Specified Part Number: Not Specified Rank: Unknown Configured Memory Speed: Unknown Minimum Voltage: Unknown Maximum Voltage: Unknown Configured Voltage: Unknown 磁盘查看硬盘和分区分布[root@cn-sh ~]# lsblk NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT sr0 11:0 1 16.5M 0 rom vda 253:0 0 50G 0 disk └─vda1 253:1 0 50G 0 part / 查看硬盘和分区的详细信息[root@cn-sh ~]# fdisk -l Disk /dev/vda: 53.7 GB, 53687091200 bytes, 104857600 sectors Units = sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Disk label type: dos Disk identifier: 0x000d64b4 Device Boot Start End Blocks Id System /dev/vda1 * 2048 104857566 52427759+ 83 Linux 网卡查看网卡硬件信息[root@cn-sh ~]# lspci | grep -i 'eth' 00:05.0 Ethernet controller: Red Hat, Inc. Virtio network device 查看系统的所有网络接口[root@cn-sh ~]# ifconfig -a eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500 inet 172.17.0.7 netmask 255.255.240.0 broadcast 172.17.15.255 inet6 fe80::5054:ff:fe4e:6e10 prefixlen 64 scopeid 0x20 ether 52:54:00:4e:6e:10 txqueuelen 1000 (Ethernet) RX packets 76544140 bytes 52961330313 (49.3 GiB) RX errors 0 dropped 0 overruns 0 frame 0 TX packets 49994906 bytes 14614980486 (13.6 GiB) TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0 lo: flags=73<UP,LOOPBACK,RUNNING> mtu 65536 inet 127.0.0.1 netmask 255.0.0.0 inet6 ::1 prefixlen 128 scopeid 0x10<host> loop txqueuelen 1000 (Local Loopback) RX packets 1114162 bytes 4204361788 (3.9 GiB) RX errors 0 dropped 0 overruns 0 frame 0 TX packets 1114162 bytes 4204361788 (3.9 GiB) TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0 或者是[root@cn-sh ~]# ip link show 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT group default qlen 1000 link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP mode DEFAULT group default qlen 1000 link/ether 52:54:00:4e:6e:10 brd ff:ff:ff:ff:ff:ff 又或者是[root@cn-sh ~]# cat /proc/net/dev Inter-| Receive | Transmitface |bytes packets errs drop fifo frame compressed multicast | bytes packets errs drop fifo colls carrier compressed eth0: 52962064257 76545540 0 0 0 0 0 0 14615225394 49996010 0 0 0 0 0 0 lo: 4204456644 1114222 0 0 0 0 0 0 4204456644 1114222 0 0 0 0 0 0 看某个网卡的详细信息[root@cn-sh ~]# ethtool eth0 Settings for eth0: Link detected: yes PCI查看pci信息，即主板所有硬件槽信息[root@cn-sh ~]# lspci 00:00.0 Host bridge: Intel Corporation 440FX - 82441FX PMC [Natoma] (rev 02) 00:01.0 ISA bridge: Intel Corporation 82371SB PIIX3 ISA [Natoma/Triton II] 00:01.1 IDE interface: Intel Corporation 82371SB PIIX3 IDE [Natoma/Triton II] 00:01.2 USB controller: Intel Corporation 82371SB PIIX3 USB [Natoma/Triton II] (rev 01) 00:01.3 Bridge: Intel Corporation 82371AB/EB/MB PIIX4 ACPI (rev 03) 00:02.0 VGA compatible controller: Cirrus Logic GD 5446 00:03.0 PCI bridge: Red Hat, Inc. QEMU PCI-PCI bridge 00:04.0 PCI bridge: Red Hat, Inc. QEMU PCI-PCI bridge 00:05.0 Ethernet controller: Red Hat, Inc. Virtio network device 00:06.0 SCSI storage controller: Red Hat, Inc. Virtio block device 00:07.0 Unclassified device [00ff]: Red Hat, Inc. Virtio memory balloon BIOS[root@cn-sh ~]# dmidecode -t bios # dmidecode 3.2 Getting SMBIOS data from sysfs. SMBIOS 2.8 present. Handle 0x0000, DMI type 0, 24 bytes BIOS Information Vendor: SeaBIOS Version: seabios-1.9.1-qemu-project.org Release Date: 04/01/2014 Address: 0xE8000 Runtime Size: 96 kB ROM Size: 64 kB Characteristics: BIOS characteristics not supported Targeted content distribution is supported BIOS Revision: 0.0 dmidecode以一种可读的方式dump出机器的DMI（Desktop Management Interface）信息，这些信息包括了硬件以及BIOS，既可以得到当前的配置，也可以得到系统支持的最大配置，比如说支持的最大内存数等，如果要查看所有有用信息，可以使用dmidecode -q，里面包含了很多硬件信息。一次性看全的作弊码lshw
sysstat 工具简介SYSSTAT 是一个软件包，包含监测系统性能及效率的一组工具，这些工具对于我们收集系统性能数据，比如 CPU 使用率、硬盘和网络吞吐数据，这些数据的收集和分析，有利于我们判断系统是否正常运行，是提高系统运行效率、安全运行服务器的得力助手。sysstat 工具包中包含两类工具：即时查看工具：iostat、mpstat、sar累计统计工具：sar累计统计工具：sar为了实现sar的累计统计，系统必须周期地记录当时的信息，这是通过调用/usr/lib/sa/中的三个工具实现的：sa1 ：收集并存储每天系统动态信息到一个二进制的文件中，用作sadc的前端程序sa2 ：收集每天的系统活跃信息写入总结性的报告，用作sar的前端程序sadc ：系统动态数据收集工具，收集的数据被写入一个二进制的文件中，它被用作sar工具的后端在 CentOS 系统的默认设置中，以如下的方式使用这三个工具：在守护进程/etc/rc.d/init.d/sysstat中使用/usr/lib/sa/sadc -F -L命令创建当日记录文件，文件为/var/log/sa/saDD，其中DD为当天的日期。当系统重新启动后，会向文件/var/log/sa/saDD 输出类似11:37:16 AM LINUX RESTART这样的行信息。在 cron 任务/etc/cron.d/sysstat中每隔10分钟执行一次/usr/lib/sa/sa1 1 1命令，将信息写入文件/var/log/sa/saDD在 cron 任务/etc/cron.d/sysstat中每天23:53执行一次/usr/lib/sa/sa2 -A命令，将当天的汇总信息写入文件/var/log/sa/saDD您可以修改/etc/cron.d/sysstat以适合您的需要。另外，文件/var/log/sa/saDD为二进制文件，不能使用more、less等文本工具查看，必须用sar或sadf命令查看。在使用 Linux 系统时，常常会遇到各种各样的问题，比如系统容易死机或者运行速度突然变慢，这时我们常常猜测：是否硬盘空间不足，是否内存不足，是否 I/O 出现瓶颈，还是系统的核心参数出了问题？这时，我们应该考虑使用 sar 工具对系统做一个全面了解，分析系统的负载状况。sar（System Activity Reporter）是系统活动情况报告的缩写。sar工具将对系统当前的状态进行取样，然后通过计算数据和比例来表达系统的当前运行状态。它的特点是可以连续对系统取样，获得大量的取样数据；取样数据和分析的结果都可以存入文件，所需的负载很小。sar是目前Linux上最为全面的系统性能分析工具之一，可以从多方面对系统的活动进行报告，包括：文件的读写情况、系统调用的使用情况、磁盘I/O、CPU效率、内存使用状况、进程活动及IPC有关的活动等。为了提供不同的信息，sar提供了丰富的选项、因此使用较为复杂。Usage: sar [ options ] [ <interval> [ <count> ] ] Main options and reports: -b I/O and transfer rate statistics -B Paging statistics -d Block device statistics -F [ MOUNT ] Filesystems statistics -H Hugepages utilization statistics -I { <int> | SUM | ALL | XALL } Interrupts statistics -m { <keyword> [,...] | ALL } Power management statistics Keywords are: CPU CPU instantaneous clock frequency FAN Fans speed FREQ CPU average clock frequency IN Voltage inputs TEMP Devices temperature USB USB devices plugged into the system -n { <keyword> [,...] | ALL } Network statistics Keywords are: DEV Network interfaces EDEV Network interfaces (errors) NFS NFS client NFSD NFS server SOCK Sockets (v4) IP IP traffic (v4) EIP IP traffic (v4) (errors) ICMP ICMP traffic (v4) EICMP ICMP traffic (v4) (errors) TCP TCP traffic (v4) ETCP TCP traffic (v4) (errors) UDP UDP traffic (v4) SOCK6 Sockets (v6) IP6 IP traffic (v6) EIP6 IP traffic (v6) (errors) ICMP6 ICMP traffic (v6) EICMP6 ICMP traffic (v6) (errors) UDP6 UDP traffic (v6) -q Queue length and load average statistics -r Memory utilization statistics -R Memory statistics -S Swap space utilization statistics -u [ ALL ] CPU utilization statistics -v Kernel table statistics -w Task creation and system switching statistics -W Swapping statistics -y TTY device statistics interval : 为取样时间间隔count : 为输出次数，若省略此项，默认值为 1选项说明-A等价于 -bBcdqrRuvwWy -I SUM -I XALL -n ALL -P ALL-b显示I/O和传送速率的统计信息-B输出内存页面的统计信息-c输出进程统计信息，每秒创建的进程数-d输出每一个块设备的活动信息-i interval指定间隔时长，单位为秒-p显示友好设备名字，以方便查看，也可以和-d 和-n 参数结合使用，比如 -dp 或-np-q输出进程队列长度和平均负载状态统计信息-r输出内存和交换空间的统计信息-R输出内存页面的统计信息-t读取/var/log/sa/saDD的数据时显示其中记录的原始时间，如果没有这个参数使用用户的本地时间-u输出CPU使用情况的统计信息-v输出inode、文件和其他内核表的统计信息-V输出版本号信息-w输出系统交换活动信息-W输出系统交换的统计信息-y输出TTY设备的活动信息-n {DEV、EDEV、NFS、NFSD、SOCK、ALL}分析输出网络设备状态统计信息。DEV报告网络设备的统计信息EDEV报告网络设备的错误统计信息NFS报告 NFS 客户端的活动统计信息NFSD报告 NFS 服务器的活动统计信息SOCK报告网络套接字（sockets）的使用统计信息ALL报告所有类型的网络活动统计信息-x {pid、SELF、ALL}输出指定进程的统计信息。pid用 pid 指定特定的进程SELF表示 sar 自身ALL表示所有进程-X {pid、SELF、ALL}输出指定进程的子进程的统计信息-I {irq、SUM、ALL、XALL}输出指定中断的统计信息。irq指定中断号SUM指定输出每秒接收到的中断总数ALL指定输出前16个中断XALL指定输出全部的中断信息-P {cpu、ALL}输出指定 CPU 的统计信息-o filename将输出信息保存到文件 filename-f filename从文件 filename 读取数据信息。filename 是使用-o 选项时生成的文件。-s hh:mm:ss指定输出统计数据的起始时间-e hh:mm:ss指定输出统计数据的截至时间，默认为18:00:001、CPU使用情况的统计信息[root@cnetos5 ~]# sar [root@cnetos5 ~]# sar -u Linux 2.6.18-53.el5 (cnetos5) 01/22/2008 12:00:01 AM CPU %user %nice %system %iowait %steal %idle 12:10:01 AM all 0.02 0.00 0.14 0.01 0.00 99.84 12:20:01 AM all 0.02 0.00 0.12 0.01 0.00 99.86 12:30:01 AM all 0.01 0.00 0.12 0.01 0.00 99.86 Average: all 0.03 0.00 0.13 0.01 0.00 99.84 [collapse status="false" title="输出项说明"]CPU all 表示统计信息为所有 CPU 的平均值。%user 显示在用户级别（application）运行使用 CPU 总时间的百分比。%nice 显示在用户级别，用于nice操作，所占用 CPU 总时间的百分比。%system 在核心级别（kernel）运行所使用 CPU 总时间的百分比。%iowait 显示用于等待I/O操作占用 CPU 总时间的百分比。%steal 管理程序（hypervisor）为另一个虚拟进程提供服务而等待虚拟 CPU 的百分比。%idle 显示 CPU 空闲时间占用 CPU 总时间的百分比。[/collapse]若 %iowait 的值过高，表示硬盘存在I/O瓶颈若 %idle 的值高但系统响应慢时，有可能是 CPU 等待分配内存，此时应加大内存容量若 %idle 的值持续低于 10，则系统的 CPU 处理能力相对较低，表明系统中最需要解决的资源是 CPU。2、I/O和传送速率的统计信息[root@cnetos5 ~]# sar -b Linux 2.6.18-53.el5 (cnetos5) 01/22/2008 12:00:01 AM tps rtps wtps bread/s bwrtn/s 12:10:01 AM 1.58 0.00 1.58 0.00 16.71 12:20:01 AM 1.09 0.00 1.09 0.00 10.85 12:30:01 AM 1.08 0.00 1.08 0.00 10.74 Average: 1.24 0.00 1.24 0.00 12.70 [collapse status="false" title="输出项说明"]tps 每秒钟物理设备的 I/O 传输总量rtps 每秒钟从物理设备读入的数据总量wtps 每秒钟向物理设备写入的数据总量bread/s 每秒钟从物理设备读入的数据量，单位为 块/sbwrtn/s 每秒钟向物理设备写入的数据量，单位为 块/s[/collapse]3、内存页面的统计信息[root@cnetos5 ~]# sar -B Linux 2.6.18-53.el5 (cnetos5) 01/22/2008 12:00:01 AM pgpgin/s pgpgout/s fault/s majflt/s 12:10:01 AM 0.00 4.17 9.74 0.00 12:20:01 AM 0.00 2.71 2.24 0.00 12:30:01 AM 0.00 2.69 2.25 0.00 Average: 0.00 3.17 4.07 0.00 [collapse status="false" title="输出项说明"]pgpgin/s 每秒钟从磁盘读入的系统页面的 KB 总数pgpgout/s 每秒钟向磁盘写出的系统页面的 KB 总数fault/s 系统每秒产生的页面失效（major + minor）数量majflt/s 系统每秒产生的页面失效（major）数量[/collapse]4、每秒创建的进程数的进程统计信息[root@cnetos5 ~]# sar -c Linux 2.6.18-53.el5 (cnetos5) 01/22/2008 12:00:01 AM proc/s 12:10:01 AM 0.05 12:20:01 AM 0.03 12:30:01 AM 0.03 Average: 0.03 [collapse status="false" title="输出项说明"]proc/s 每秒钟创建的进程数[/collapse]5、网络设备状态的统计信息[root@cnetos5 ~]# sar -n DEV |grep eth0 12:00:01 AM IFACE rxpck/s txpck/s rxbyt/s txbyt/s rxcmp/s txcmp/s rxmcst/s 12:10:01 AM eth0 0.59 0.92 41.57 893.98 0.00 0.00 0.00 12:20:01 AM eth0 0.55 0.88 37.50 859.56 0.00 0.00 0.00 12:30:01 AM eth0 0.55 0.86 38.17 871.98 0.00 0.00 0.00 Average: eth0 0.29 0.42 21.05 379.29 0.00 0.00 0.00 [collapse status="false" title="输出项说明"]IFACE 网络设备名rxpck/s 每秒接收的包总数txpck/s 每秒传输的包总数rxbyt/s 每秒接收的字节（byte）总数txbyt/s 每秒传输的字节（byte）总数rxcmp/s 每秒接收压缩包的总数txcmp/s 每秒传输压缩包的总数rxmcst/s 每秒接收的多播（multicast）包的总数[/collapse]6、网络设备状态的统计信息（查看网络设备故障）[root@cnetos5 ~]# sar -n EDEV |egrep 'eth0|IFACE' 12:00:01 AM IFACE rxerr/s txerr/s coll/s rxdrop/s txdrop/s txcarr/s rxfram/s rxfifo/s txfifo/s 12:10:01 AM eth0 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 12:20:01 AM eth0 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 12:30:01 AM eth0 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 Average: eth0 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 [collapse status="false" title="输出项说明"]IFACE 网络设备名rxerr/s 每秒接收的坏包总数txerr/s 传输包时每秒发生错误的总数coll/s 传输包时每秒发生冲突（collision）的总数rxdrop/s 接收包时，由于缺乏缓存，每秒丢弃（drop）包的数量txdrop/s 传输包时，由于缺乏缓存，每秒丢弃（drop）包的数量txcarr/s 传输包时，每秒发生的传输错误（carrier-error）的数量rxfram/s 接收包时，每秒发生帧校验错误（frame alignment error）的数量rxfifo/s 接收包时，每秒发生队列（FIFO）一出错误的数量txfifo/s 传输包时，每秒发生队列（FIFO）一出错误的数量[/collapse]7、进程队列长度和平均负载状态统计信息[root@cnetos5 ~]# sar -q Linux 2.6.18-53.el5 (cnetos5) 01/22/2008 12:00:01 AM runq-sz plist-sz ldavg-1 ldavg-5 ldavg-15 12:10:01 AM 0 85 0.02 0.01 0.00 12:20:01 AM 0 85 0.01 0.00 0.00 12:30:01 AM 0 85 0.03 0.01 0.00 Average: 0 85 0.01 0.00 0.00 [collapse status="false" title="输出项说明"]runq-sz 运行队列的长度（等待运行的进程数）plist-sz 进程列表中进程（processes）和线程（threads）的数量ldavg-1 最后1分钟的系统平均负载（System load average）ldavg-5 过去5分钟的系统平均负载ldavg-15 过去15分钟的系统平均负载[/collapse]8、内存和交换空间的统计信息[root@cnetos5 ~]# sar -r Linux 2.6.18-53.el5 (cnetos5) 01/22/2008 12:00:01 AM kbmemfree kbmemused %memused kbbuffers kbcached kbswpfree kbswpused %swpused kbswpcad 12:10:01 AM 262068 253408 49.16 43884 156456 1048568 0 0.00 0 12:20:01 AM 261572 253904 49.26 44580 156448 1048568 0 0.00 0 12:30:01 AM 260704 254772 49.42 45124 156472 1048568 0 0.00 0 Average: 259551 255925 49.65 46453 156470 1048568 0 0.00 0 [collapse status="false" title="输出项说明"]kbmemfree 可用的空闲内存数量，单位为 KBkbmemused 已使用的内存数量（不包含内核使用的内存），单位为 KB%memused 已使用内存的百分数kbbuffers 内核缓冲区（buffer）使用的内存数量，单位为 KBkbcached 内核高速缓存（cache）数据使用的内存数量，单位为 KBkbswpfree 可用的空闲交换空间数量，单位为 KBkbswpused 已使用的交换空间数量，单位为 KB%swpused 已使用交换空间的百分数kbswpcad 交换空间的高速缓存使用的内存数量[/collapse]9、内存页面的统计信息[root@cnetos5 ~]# sar -R Linux 2.6.18-53.el5 (cnetos5) 01/22/2008 12:00:01 AM frmpg/s bufpg/s campg/s 12:10:01 AM -0.10 0.23 0.01 12:20:01 AM -0.21 0.29 -0.00 12:30:01 AM -0.36 0.23 0.01 Average: -0.21 0.22 0.00 [collapse status="false" title="输出项说明"]frmpg/s 每秒系统中空闲的内存页面（memory page freed）数量bufpg/s 每秒系统中用作缓冲区（buffer）的附加内存页面（additional memory page）数量campg/s 每秒系统中高速缓存的附加内存页面（additional memory pages cached）数量[/collapse]10、inode文件和其他内核表的信息[root@cnetos5 ~]# sar -v Linux 2.6.18-53.el5 (cnetos5) 01/22/2008 12:00:01 AM dentunusd file-sz inode-sz super-sz %super-sz dquot-sz %dquot-sz rtsig-sz %rtsig-sz 12:10:01 AM 7253 576 5126 0 0.00 0 0.00 0 0.00 12:20:01 AM 7253 576 5126 0 0.00 0 0.00 0 0.00 12:30:01 AM 7253 576 5126 0 0.00 0 0.00 0 0.00 Average: 7253 589 5125 0 0.00 0 0.00 0 0.00 [collapse status="false" title="输出项说明"]dentunusd 目录高速缓存中未被使用的条目数量file-sz 文件句柄（file handle）的使用数量inode-sz i节点句柄（inode handle）的使用数量super-sz 由内核分配的超级块句柄（super block handle）数量%super-sz 已分配的超级块句柄占总超级块句柄的百分比dquot-sz 已经分配的磁盘限额条目数量%dquot-sz 分配的磁盘限额条目数量占总磁盘限额条目的百分比rtsig-sz 已排队的 RT 信号的数量%rtsig-sz 已排队的 RT 信号占总 RT 信号的百分比[/collapse]11、系统交换活动信息[root@cnetos5 ~]# sar -w Linux 2.6.18-53.el5 (cnetos5) 01/22/2008 12:00:01 AM cswch/s 12:10:01 AM 44.74 12:20:01 AM 44.41 12:30:01 AM 44.41 Average: 44.50 [collapse status="false" title="输出项说明"]cswch/s 每秒的系统上下文切换数量[/collapse]12、系统交换的统计信息[root@cnetos5 ~]# sar -W Linux 2.6.18-53.el5 (cnetos5) 01/22/2008 12:00:01 AM pswpin/s pswpout/s 12:10:01 AM 0.00 0.00 12:20:01 AM 0.00 0.00 12:30:01 AM 0.00 0.00 Average: 0.00 0.00 [collapse status="false" title="输出项说明"]pswpin/s 每秒系统换入的交换页面（swap page）数量pswpout/s 每秒系统换出的交换页面（swap page）数量[/collapse]13、TTY设备的活动信息[root@cnetos5 ~]# sar -y Linux 2.6.18-53.el5 (cnetos5) 01/22/2008 12:00:01 AM TTY rcvin/s xmtin/s framerr/s prtyerr/s brk/s ovrun/s 12:10:01 AM 0 0.00 0.00 0.00 0.00 0.00 0.00 12:10:01 AM 1 0.00 0.00 0.00 0.00 0.00 0.00 12:20:01 AM 0 0.00 0.00 0.00 0.00 0.00 0.00 12:20:01 AM 1 0.00 0.00 0.00 0.00 0.00 0.00 12:30:01 AM 0 0.00 0.00 0.00 0.00 0.00 0.00 12:30:01 AM 1 0.00 0.00 0.00 0.00 0.00 0.00 ……………… Average: 0 0.00 0.00 0.00 0.00 0.00 0.00 Average: 1 0.00 0.00 0.00 0.00 0.00 0.00 [collapse status="false" title="输出项说明"]TTY TTY 串行设备号rcvin/s 每秒接收的中断数量xmtin/s 每秒传送的中断数量framerr/s 每秒发生的帧错误数（frame error）量prtyerr/s 每秒发生的奇偶校验错误（parity error）数量brk/s 每秒发生的暂停（break）数量ovrun/s 每秒发生的溢出错误（overrun error）数量[/collapse]14、全面的累计统计信息sar -A 15、配置不提供的累计统计信息[root@cnetos5 ~]# sar -d Requested activities not available in file [root@cnetos5 ~]# sar -x ALL Requested activities not available in file [root@cnetos5 ~]# sar -X ALL Requested activities not available in file 默认情况下，为了防止统计数据文件/var/log/sa/saDD迅速增大，/usr/lib/sa/sadc没有记录每个块设备的统计信息。可以在-d -x -X参数后添加取样参数获得即时统计信息。带有-x -X选项的 sar 命令从来不能记录到二进制统计数据文件。即时查看iostatiostat 用于输出CPU和磁盘I/O相关的统计信息。命令格式为：iostat [ -c | -d ] [ -k | -m ] [ -t ] [ -V ] [ -x ] [ device [ ... ] | ALL ] [ -p [ device | ALL ] ] [ interval [ count ] ] interval : 为取样时间间隔count : 为输出次数，若指定了取样时间间隔且省略此项，将不断产生统计信息选项说明-c仅显示CPU统计信息。与-d选项互斥。-d仅显示磁盘统计信息。与-c选项互斥。-k以KB为单位显示每秒的磁盘请求数。默认单位块。-m以MB为单位显示每秒的磁盘请求数。默认单位块。-p {device、ALL}用于显示块设备及系统分区的统计信息。与-x选项互斥。-t在输出数据时，打印搜集数据的时间。-V打印版本号信息。-x输出扩展信息。下面给出几个例子：# 显示一条包括所有的CPU和设备吞吐率的统计信息 # iostat Linux 2.6.18-53.el5 (cnetos5) 01/21/2008 avg-cpu: %user %nice %system %iowait %steal %idle 0.10 0.04 0.37 0.07 0.00 99.42 Device: tps Blk_read/s Blk_wrtn/s Blk_read Blk_wrtn sda 1.44 16.79 10.58 800430 504340 sdb 0.01 0.07 0.00 3314 8 sdc 0.86 8.56 0.00 407892 24 # 每隔5秒显示一次设备吞吐率的统计信息（单位为 块/s） # iostat -d 5 # 每隔5秒显示一次设备吞吐率的统计信息（单位为 KB/s），共输出3次 # iostat -dk 5 3 # 每隔2秒显示一次 sda 及上面所有分区的统计信息，共输出5次 # iostat -p sda 2 5 # 每隔2秒显示一次 sda 和 sdb 两个设备的扩展统计信息，共输出6次 # iostat -x sda sdb 2 6 Linux 2.6.18-53.el5 (cnetos5) 01/21/2008 avg-cpu: %user %nice %system %iowait %steal %idle 0.10 0.04 0.37 0.07 0.00 99.42 Device: rrqm/s wrqm/s r/s w/s rsec/s wsec/s avgrq-sz avgqu-sz await svctm %util sda 0.17 0.84 0.96 0.47 16.67 10.56 19.01 0.01 7.11 1.25 0.18 sdb 0.00 0.00 0.01 0.00 0.07 0.00 5.16 0.00 0.22 0.19 0.00 …………[collapse status="false" title="avg-cpu 部分输出项说明"]%user 在用户级别运行所使用的 CPU 的百分比。%nice nice 操作所使用的 CPU 的百分比。%system 在核心级别（kernel）运行所使用 CPU 的百分比。%iowait CPU 等待硬件 I/O 所占用 CPU 的百分比。%steal 当管理程序（hypervisor）为另一个虚拟进程提供服务而等待虚拟 CPU 的百分比。%idle CPU 空闲时间的百分比。[/collapse][collapse status="false" title="Device 部分基本输出项说明"]tps 每秒钟物理设备的 I/O 传输总量。Blk_read 读入的数据总量，单位为块。Blk_wrtn 写入的数据总量，单位为块。kB_read 读入的数据总量，单位为KB。kB_wrtn 写入的数据总量，单位为KB。MB_read 读入的数据总量，单位为MB。MB_wrtn 写入的数据总量，单位为MB。Blk_read/s 每秒从驱动器读入的数据量，单位为 块/s。Blk_wrtn/s 每秒向驱动器写入的数据量，单位为 块/s。kB_read/s 每秒从驱动器读入的数据量，单位为KB/s。kB_wrtn/s 每秒向驱动器写入的数据量，单位为KB/s。MB_read/s 每秒从驱动器读入的数据量，单位为MB/s。MB_wrtn/s 每秒向驱动器写入的数据量，单位为MB/s。[/collapse][collapse status="false" title="Device 部分扩展输出项说明"]rrqm/s 将读入请求合并后，每秒发送到设备的读入请求数。wrqm/s 将写入请求合并后，每秒发送到设备的写入请求数。r/s 每秒发送到设备的读入请求数。w/s 每秒发送到设备的写入请求数。rsec/s 每秒从设备读入的扇区数。wsec/s 每秒向设备写入的扇区数。rkB/s 每秒从设备读入的数据量，单位为 KB/s。wkB/s 每秒向设备写入的数据量，单位为 KB/s。rMB/s 每秒从设备读入的数据量，单位为 MB/s。wMB/s 每秒向设备写入的数据量，单位为 MB/s。avgrq-sz 发送到设备的请求的平均大小，单位为扇区。avgqu-sz 发送到设备的请求的平均队列长度。await I/O请求平均执行时间。包括发送请求和执行的时间。单位为毫秒。svctm 发送到设备的I/O请求的平均执行时间。单位为毫秒。%util 在I/O请求发送到设备期间，占用CPU时间的百分比。用于显示设备的带宽利用率。当这个值接近100%时，表示设备带宽已经占满。[/collapse]mpstatmpstat 输出每一个 CPU 的运行状况，为多处理器系统中的 CPU 利用率提供统计信息。命令格式为：mpstat [ -P { cpu | ALL } ] [ -V ] [ interval [ count ] ] interval : 为取样时间间隔。指定0则输出自系统启动后的一个统计信息。count : 为输出次数。若指定了取样时间间隔且省略此项，将不断产生统计信息。选项说明-P {cpu、ALL}指定 CPU。用 CPU-ID 指定，CPU-ID 是从0开始的，即第一个CPU为0。ALL 表示所有CPU。-V输出版本号信息。下面给出几个例子：# 输出所有 CPU 使用情况的统计信息。 # mpstat Linux 2.6.18-53.el5 (cnetos5) 01/21/2008 10:39:06 AM CPU %user %nice %sys %iowait %irq %soft %steal %idle intr/s 10:39:06 AM all 0.10 0.04 0.31 0.06 0.04 0.01 0.00 99.45 1012.99 # 输出第一个 CPU 使用情况的统计信息。 # mpstat -P 0 Linux 2.6.18-53.el5 (cnetos5) 01/21/2008 10:41:03 AM CPU %user %nice %sys %iowait %irq %soft %steal %idle intr/s 10:41:03 AM 0 0.09 0.02 0.40 0.09 0.08 0.01 0.00 99.32 1012.79 # 每隔2秒输出所有CPU的统计信息，共输出5次。 # mpstat 2 5 # 每隔2秒输出一次所有CPU的统计信息，共输出5次。 # mpstat -P ALL 2 5 # 每隔2秒输出一次第二个CPU的统计信息，共输出5次。 # mpstat -P 1 2 5 [collapse status="false" title="mpstat 输出项说明"]CPU 在多CPU系统里，每个CPU有一个ID号，第一个CPU为0。all表示统计信息为所有CPU的平均值。%user 显示在用户级别运行所占用CPU总时间的百分比。%nice 显示在用户级别，用于nice操作，所占用CPU总时间的百分比。%sys 显示在kernel级别运行所占用CPU总时间的百分比。注意：这个值并不包括服务中断和softirq。%iowait 显示用于等待I/O操作时，占用CPU总时间的百分比。%irq 显示用于中断操作，占用CPU总时间的百分比。%soft 显示用于softirq操作，占用CPU总时间的百分比。%steal 管理程序（hypervisor）为另一个虚拟进程提供服务而等待虚拟 CPU 的百分比。%idle 显示CPU在空闲状态，占用CPU总时间的百分比。intr/s 显示CPU每秒接收到的中断总数。[/collapse]
FinalShell 简介：之前小编使用的一直都是Xshell + Xftp的组合方式来远程连接管理Linux系统的，而远程连接Windows的话则是用Windows自带的远程连接工具mstsc.exe，后来发现了FinalShell这款软件，个人觉得真是远程工具的天花板啊，用Java编写的一个程序，将Xshell 、ftp同屏显示，既可以输入命令，也可以传输数据，还能以树的形式展示文件路径，与此同时他不仅能远程Linux还可以远程Windows桌面，三合一大礼包，还免费，简直是国人之幸啊FinalShell 下载地址：Windows版下载地址：http://www.hostbuf.com/downloads/finalshell_install.exeMacOS版下载地址：http://www.hostbuf.com/downloads/finalshell_install.pkgLinux版下载地址：http://www.hostbuf.com/downloads/finalshell_install_linux.sh版本更新日志：http://www.hostbuf.com/t/989.htmlMac版安装路径：/Applications/FinalShell.app/配置文件路径：/Users/$USER/Library/FinalShell/Mac版卸载：删除安装目录/Applications/FinalShell.app/Linux版安装路径：/usr/lib/FinalShell/配置文件路径：/home/$USER/.finalshell/Linux版卸载：删除安装目录/usr/lib/FinalShell/FinalShell 特点：多平台支持Windows,macOS,Linux多标签,批量服务器管理.支持登录ssh和Windows远程桌面.漂亮的平滑字体显示,内置100多个配色方案.终端,sftp同屏显示,同步切换目录.命令自动提示,智能匹配,输入更快捷,方便.sftp支持,通过各种优化技术,加载更快,切换,打开目录无需等待.服务器网络,性能实时监控,无需安装服务器插件.内置海外服务器加速,加速远程桌面和ssh连接,操作流畅无卡顿.内存,Cpu性能监控,Ping延迟丢包,Trace路由监控.实时硬盘监控.进程管理器.快捷命令面板,可同时显示数十个命令.内置文本编辑器,支持语法高亮,代码折叠,搜索,替换.ssh和远程桌面均支持代理服务器.打包传输,自动压缩解压.支持rz,sz (zmodem)多地点ping监控命令输入框,支持自动补全,命令历史自定义命令参数功能,可动态根据输入参数生成命令可设置终端背景图片,并拥有动态背景模糊,文字阴影效果.一键查看各种系统信息FinalShell 界面展示：查看系统消息进程管理器主机检测,Ping监控,Trace实时跟踪高级网络监控,监控每个进程监听的端口,以及网络连接状态.打包传输,自动压缩解压,适合传输大量文件,文件夹和文本文件.升级高级版/专业版/开通云端同步虽说免费，但是吧，有些功能还是要付费的，但是小编觉得免费的已经够用了，如果还需要更高级的功能可以自行选择，高级版/专业版永久有效,开通同步服务前须先升级到高级版或专业版.云端同步介绍云端同步可在不同设备间同步各种配置信息,内容包括主机连接配置,代理服务器,秘钥,命令历史,文件路径历史,快捷命令,命令参数历史.同步过程自动完成,间隔30秒尝试同步一次.安全性:数据在本机使用同步密码加密后才会上传到同步服务器,没有同步密码,任何一方都无法获得同步内容.同步密码只在本机加密保存.加密算法采用AES256,HMAC-SHA256,以及多重加密混淆,避免破解泄露风险.高级版功能介绍高级版功能主要靠调用系统自带命令实现,无需额外安装软件,不会对系统进行改动,支持大部分常见系统.当前高级版功能:网络监控可选择接口,同时监控多个网络接口速度.打包传输,自动压缩解压,适合传输大量文件,文件夹和文本文件.高级网络监控,监控每个进程监听的端口,以及网络连接状态.高级进程管理,详细显示进程信息.无限制的终端命令历史,路径历史,可快速输入命令,切换路径.专业版功能介绍高级版功能主要靠调用系统自带命令实现,无需额外安装软件,不会对系统进行改动,支持大部分常见系统.当前专业版功能:所有高级版功能设置任意本机图片为终端背景升级永久高级版+一年同步服务 推荐79元 购买链接: www.hostbuf.com/manage/pay_gjsyncpack1.jsp升级永久高级版(无同步):35元 购买链接: www.hostbuf.com/manage/pay_advanced.jsp升级永久专业版+一年同步服务 推荐168元 购买链接: www.hostbuf.com/manage/pay_pfsyncpack1.jsp升级永久专业版(无同步):128元 购买链接: www.hostbuf.com/manage/pay_pf.jsp开通一年同步服务:49元 购买链接: www.hostbuf.com/manage/pay_sync.jsp
正则是啥子玩意？正则表达式，又称规则表达式。（英语：Regular Expression，在代码中常简写为regex、regexp或RE），计算机科学的一个概念。正则表达式通常被用来检索、替换那些符合某个模式（规则）的文本。许多程序设计语言都支持利用正则表达式进行字符串操作。例如，在Perl中就内建了一个功能强大的正则表达式引擎。正则表达式这个概念最初是由Unix中的工具软件（例如sed和grep）普及开的。正则表达式通常缩写成“regex”，单数有regexp、regex，复数有regexps、regexes、regexen。中文名正则表达式代码简写regex、regexp或RE外文名Regular Expression行业归属计算机科学别名规则表达式作用用来检索、替换那些符合某个模式(规则)的文本简单点用自己的话来说就是用来匹配一些有规律的东西，如手机号码、身份证号码、日志信息等，使用一些符号表达重复出现的大小写、开头/结尾的含义等，用途极其广泛如linux的三剑客、开发语言（python、Golang....）等正则那些事使用正则是需要注意所有的符号都应该是英文符号，注意系统的字符集：en_US.UTF-8（大部分情况90%都没有问题），如果出现问题修改字符集为·C export LANG=C·即可快速掌握正则：配合grep -o参数学习正则 和 通配符的区别正则：用于三剑客，高级语言，进行过滤作用支持的命令：grep,sed,awk,find,rename,expr---vs---通配符（pathname extension 或 glob）：匹配文件（文件名） .txt .log {01..10}支持的命令：Linux下面的大部分命令都支持规则使用基础正则： ^ $ . * .* [] [^]^以...开头的行.任意一个字符\转义字符,\n \t$以...结尾的行*前一个字符连续（重复）出现0次或0次以上[]一个整体，匹配任意一个字符^$空行.*所有内容[^]取反,排除^ 以...开头的行[root@cn-sz ~]# grep '^My' mingo.txt My blog is https://if010.com My QQ is 2324829677 My god , i am not mingo,but genius mingo! $ 以...结尾[root@cn-sz ~]# grep '448$' mingo.txt Not 4900000448 ^$ 空行[scode type="yellow"]空行是指这一行中没有任何内容，要注意的是空格也是个字符，一般用于排除空行 和 排除#号注释行[/scode][root@cn-sz ~]# grep -nv '^$' mingo.txt //-v 代表排除； -n 代表显示行号 1:I am genius mingo! 2:I like study linux. 3:I like badminton ball , billiard ball and chinese chess! 4:My blog is https://if010.com 6:Our size is https://blog.if010.com 7:My QQ is 2324829677 8:Not 4900000448 9:My god , i am not mingo,but genius mingo! . 表示任意一个字符[scode type="yellow"]注意点是不匹配空行，也就是说排除掉空行[/scode][root@cn-sz ~]# grep -n '.' mingo.txt 1:I am genius mingo! 2:I like study linux. 3:I like badminton ball , billiard ball and chinese chess! 4:My blog is https://if010.com 6:Our size is https://blog.if010.com 7:My QQ is 2324829677 8:Not 4900000448 9:My god , i am not mingo,but genius mingo! \ 转义字符 脱掉马甲打回原形，去除原有特殊含义#匹配出文件中以点结尾的行 [root@cn-sz ~]# grep -n '\.$' mingo.txt 2:I like study linux. 特殊的转义字符序列\n 回车换行\t tab键* 前一个字符连续出现0次或0次以上[root@cn-sz ~]# grep '0*' mingo.txt I am genius mingo! I like study linux. I like badminton ball , billiard ball and chinese chess! My blog is https://if010.com Our size is https://blog.if010.com My QQ is 2324829677 Not 4900000448 My god , i am not mingo,but genius mingo! .* 所有内容，任意内容[root@cn-sz ~]# grep '0.*' mingo.txt My blog is https://if010.com Our size is https://blog.if010.com Not 4900000448 [] 匹配中括号里任意一个字符，一次匹配一个字符，里面的内容会被去掉特殊意义[root@cn-sz ~]# grep '[0-9]' mingo.txt My blog is https://if010.com Our size is https://blog.if010.com My QQ is 2324829677 Not 4900000448 # 也可以写成grep '[aZ0-9]' mingo.txt # 或者也可以写成 grep -i '[a-z0-9]' mingo.txt -i表示不区分大小写 # grep '[^a-Z0-9]' mingo.txt []里最前面加……表示取反 [root@cn-sz ~]# grep '[a-zA-Z0-9]' mingo.txt I am genius mingo! I like study linux. I like badminton ball , billiard ball and chinese chess! My blog is https://if010.com Our size is https://blog.if010.com My QQ is 2324829677 Not 4900000448 My god , i am not mingo,but genius mingo! 扩展正则： + | {} ? （）[tag type="danger"]注意：有些命令默认是不支持扩展正则如：grep需要加-E参数，sed需要加-r参数[/tag]+前一个字符连续出现一次或一次以上（）一个整体，sed反向引用?连续出现0次或者1次竖线或者{}o{n,m}前一个字母o至少连续出现n次，最多连续出现m次+ 前一个字符连续出现了一次或一次以上[root@cn-sz ~]# grep -Eo '0+' mingo.txt #-o 只显示符合的内容 0 0 0 0 00000 | 或者,匹配多个字符[root@cn-sz ~]# grep -E 'mingo|blog' mingo.txt I am genius mingo! My blog is https://if010.com Our size is https://blog.if010.com My god , i am not mingo,but genius mingo! () 被括起来的内容，表示一个整体 后向引用sed[root@cn-sz ~]# grep -E 'mi(n|m)go' mingo.txt I am genius mingo! My god , i am not mingo,but genius mimgo! {} 连续出现# o{n,m} 前一个字母o至少连续出现n次，最多连续出现m次 >=n <=m [root@cn-sz ~]# grep -E '0{1,3}' mingo.txt My blog is https://if010.com Our size is https://blog.if010.com Not 4900000448 # o{n} 前一个字母o连续出现n次 ==n [root@cn-sz ~]# grep -E '0{3}' mingo.txt Not 4900000448 # o{n,} 前一个字母o最少连续出现n次 >=n [root@cn-sz ~]# grep -E '0{3,}' mingo.txt Not 4900000448 # o{,m} 前一个字母o最多连续出现m次 <=m [root@cn-sz ~]# grep -E '0{,3}' mingo.txt I am genius mingo! I like study linux. I like badminton ball , billiard ball and chinese chess! My blog is https://if010.com Our size is https://blog.if010.com My QQ is 2324829677 Not 4900000448 My god , i am not mingo,but genius mimgo! ? 连续出现 前一个字符连续出现0次或1次[root@cn-sz ~]# grep -E '\.(com)?' mingo.txt I like study linux. My blog is https://if010.com Our size is https://blog.if010.com 两个实际の栗子过滤身份证号码[root@cn-sz ~]# grep -E '[0-9]{17}[0-9X]' id.txt 陆慧丽 441900199804426517 陈乐琪 320106200010282102 陈乐琪 320106200511034526 赵蕾 320104198410204525 刘家龙 320107199310281223 杨雯 32011319630405884X 赵子龙 44190019960621165X排除文件中的空行或者含有#号开头的行[root@cn-sz ~]# grep -Ev '^$|^#' /etc/nginx/conf.d/it_blog.conf结尾还有一些不是很常用到的这里就不介绍了，大家可以参考一下菜鸟教程里的介绍，又或者自行百度~[post url="https:\/\/www.runoob.com\/regexp\/regexp-syntax.html" title="正则表达式 – 语法 | 菜鸟教程" intro="正则表达式 - 语法 正则表达式(regular expression)描述了一种字符串匹配的模式（pattern），可以用来检查一个串是否含有某种子串、将匹配的子串替换或者从某个串中取出符合某个条件的子串等。 例如： runoo+b，可以匹配 runoob、runooob、runoooooob 等，+ 号代表前面的字符必须至少出现一次（1次或多次）。 runoo*b，可以匹配 runob、runoob、runoooooob 等.." cover="https://www.runoob.com/wp-content/themes/runoob/assets/img/runoob-logo.png" /]如果还是找不到你想要的答案，也可以在下面留言那~大家一起探讨吧~~~