Linux的核心,网络相关
很多工具也是通过分析加工 /proc、/sys 下的数据来工作的,而那些更加细致、专业的性能监测和调优,可能还需要更加专业的工具(perf、systemtap等)和技术才能完成。
目录:
- strace
- traceroute
- tracert
- sar
- ifconfig
- ip
- nc
- lsof
- stat
- netstat
- ps
- pstree
- ss
- telnet
- top
- Htop
- iotop
- powertop
- iftop
- dstat
- nethogs
- Nmon
- vnstat
- host
- dig
- route
- tcpdump
strace
用于跟踪程序执行过程中的系统调用,如跟踪test进程:
strace -p [test_pid] 或直接strace ./test
跟踪进程内的线程: -f 选项
统计时间段内的各个系统调用次数分布:-C 选项
过滤某些系统调用:-e trace选项,如-e trace=network只显示网络相关的系统调用,-e trace=open, close, read, write只显示这4个系统调用,常用于只获取某些特定的系统调用
显示系统调用的时间:-ttt选项
详细显示每行的数据,而不是… -s选项加大字符串的长度限制如-s 1024
比如,跟踪pid为12345的进程中所有线程的read和write系统调用,输出字符串的长度限制为1024:
strace -s 1024 -f -e trace=read,write -p 12345
traceroute
通过traceroute,可以知道信息从你的计算机到互联网另一端的主机是走的什么路径。当然每次数据包由某一同样的出发点source到达某一目的地(destination)走的路径可能会不一样,但基本上来说大部分时候所走的路由是相同的。Linux系统中traceroute,在MS Windows中为tracert。traceroute通过发送小的数据包(预设数据包大小是40Bytes)到目的设备直到其返回,来测量其需要多长时间。一条路径上的每个设备traceroute要测3次。输出结果中包括每次测试的时间(ms)和设备的名称(如有的话)及其IP地址。
tracert
有必要指出tracert是Windows系统下的命令,功能和traceroute类似。
语法:
tracert [-d] [-h maximum_hops] [-j host-list] [-w timeout] target_name
sar
Sysstat 工具列表
- sar - 收集和展示系统的所有活动数据统计。
- sadc - 代表“系统活动数据收集器”。 这个是 sar 用于数据收集的后台工具。
- sa1 - 存储系统活动数据在二进制文件中。sa1 依赖于 sadc。sa1 运行在定时任务中。
- sa2 - 创建收集的日总结报告。sa2 在定时任务中运行。
- sadf - 可以以 CSV,XML,和其他各种格式生成 sar 报告。
- iostat - 生成 CPU,I/O 统计数据。
- mpstat - 展示 CPU 统计数据。
- pidstat - 基于线程 PID 报告统计数据。
- nfsiostat - 展示 NFS I/O 统计数据。
- cifsiostat - 生成 CIFS 统计数据。
源码安装
这将把 sar 以及其他的 systat 工具放在/usr/local/bin目录下。如果通过源码安装,sa1 和 sa2 的默认位置为 /usr/local/lib/sa。如果你使用包管理器安装(如 yum或者 apt-get),可能位于 /usr/lib/sa/sa1 和 /usr/lib/sa/sa2。
sar -V
命令查看 sar 版本。
使用定时任务收集 sar 统计数据,在 /etc/cron.d 目录创建 sysstat 文件来收集和归档 sar 数据
/usr/local/lib/sa/sa1
This runs every 10 minutes and collects sar data for historical reference.
If you want to collect sar statistics every 5 minutes, change /10 to /5 in the above /etc/cron.d/sysstat file.
This writes the data to /var/log/sa/saXX file. XX is the day of the month. saXX file is a binary file. You cannot view its content by opening it in a text editor.
For example, If today is 26th day of the month, sa1 writes the sar data to /var/log/sa/sa26
You can pass two parameters to sa1: interval (in seconds) and count.
In the above crontab example: sa1 1 1 means that sa1 collects sar data 1 time with 1 second interval (for every 10 mins).
/usr/local/lib/sa/sa2
This runs close to midnight (at 23:53) to create the daily summary report of the sar data.
sa2 creates /var/log/sa/sarXX file (Note that this is different than saXX file that is created by sa1). This sarXX file created by sa2 is an ascii file that you can view it in a text editor.
This will also remove saXX files that are older than a week. So, write a quick shell script that runs every week to copy the /var/log/sa/* files to some other directory to do historical sar data analysis.
命令行实例
附
KEYWORD 说明:
DEV – Displays network devices vital statistics for eth0, eth1, etc.,
EDEV – Display network device failure statistics
NFS – Displays NFS client activities
NFSD – Displays NFS server activities
SOCK – Displays sockets in use for IPv4
IP – Displays IPv4 network traffic
EIP – Displays IPv4 network errors
ICMP – Displays ICMPv4 network traffic
EICMP – Displays ICMPv4 network errors
TCP – Displays TCPv4 network traffic
ETCP – Displays TCPv4 network errors
UDP – Displays UDPv4 network traffic
SOCK6, IP6, EIP6, ICMP6, UDP6 are for IPv6
ALL – This displays all of the above information. The output will be very long.
ifconfig
windows下有ipconfig命令行工具,用来获取网络接口配置信息并对此进行修改。Linux系统下类似的命令行工具是:ifconfig(interfaces config)。通常需要以root身份登录或使用sudo方式使用。
ip
Linux的ip命令和ifconfig类似,但功能更强大,并旨在取代后者。使用ip一个命令,就能很轻松地执行一些网络管理任务。ifconfig是net-tools中已被废弃使用的一个命令。iproute2套件里提供许多增强功能的命令。
大多数Linux发行版已经预装iproute2工具。
nc
ncat/nc,一款功能类似 cat 的工具。一款拥有多种功能的 CLI 工具,可以用来在网络上读、写以及重定向数据。它被设计成可以被脚本或其他程序调用的可靠的后端工具。同时由于它能创建任意所需的连接,因此也是一个很好的网络调试工具。
ncat/nc用于端口扫描/监测,可以做为一个简单的 TCP 代理。安装:yum install nmap-ncat -y
。系统管理员可以用它来审计系统安全,用它来找出开放的端口然后保护这些端口。管理员还能用它作为客户端来审计 Web 服务器、telnet 服务器、邮件服务器等, 通过 nc 可以控制发送的每个字符,也可以查看对方的回应。捕获客户端发送的数据以此来了解这些客户端是做什么的。
lsof
list open files,列出当前系统打开文件的工具。Linux环境下,任何事物都以文件的形式存在,通过文件不仅仅可以访问常规数据,还可以访问网络连接和硬件。所以如TCP和UDP套接字等,系统在后台都为该应用程序分配一个文件描述符,无论这个文件的本质如何,该文件描述符为应用程序与基础操作系统之间的交互提供通用接口。因为应用程序打开文件的描述符列表提供大量关于这个应用程序本身的信息,因此 lsof 工具能够用于系统监测以及排错。需要root权限。
lsof打开的文件包括:
- 普通文件
- 目录
- 网络文件系统的文件
- 字符或设备文件
- (函数)共享库
- 管道,命名管道
- 符号链接
- 网络文件(例如:NFS file、网络socket,unix域名socket)
- 其它类型的文件等
stat
用来显示文件或文件系统的状态信息。当用文件名作为参数时,stat将会展示文件的全部信息。状态信息包括文件 大小、块、权限、访问时间、修改时间、状态改变时间等。用法:stat <file_name>
netstat
netstat命令用于显示与IP、TCP、UDP和ICMP协议相关的统计数据,一般用于检验本机各端口的网络连接情况。netstat是在内核中访问网络及相关信息的程序,它能提供TCP连接,TCP和UDP监听,进程内存管理的相关报告。
用于列出系统上所有的网络套接字连接情况,包括 tcp, udp 以及 unix 套接字,以及处于监听状态(即等待接入请求)的套接字。如果你想确认系统上的 Web 服务有没有起来,你可以查看80端口有没有打开。可用于打印网络连接、路由表、连接的数据统计、伪装连接以及广播域成员。
命令格式:netstat [-acCeFghilMnNoprstuvVwx][-A<网络类型>][--ip]
命令选项:
-a或–all 显示所有连线中的Socket。
-A<网络类型>或–<网络类型> 列出该网络类型连线中的相关地址。
-c或–continuous 持续列出网络状态。
-C或–cache 显示路由器配置的快取信息。
-e或–extend 显示网络其他相关信息。
-F或–fib 显示FIB。
-g或–groups 显示多重广播功能群组组员名单。
-h或–help 在线帮助。
-i或–interfaces 显示网络界面信息表单。
-l或–listening 显示监控中的服务器的Socket。
-M或–masquerade 显示伪装的网络连线。
-n或–numeric 直接使用IP地址,而不通过域名服务器。
-N或–netlink或–symbolic 显示网络硬件外围设备的符号连接名称。
-o或–timers 显示计时器。
-p或–programs 显示正在使用Socket的程序识别码和程序名称。
-r或–route 显示Routing Table。
-s或–statistice 显示网络工作信息统计表。
-t或–tcp 显示TCP传输协议的连线状况。
-u或–udp 显示UDP传输协议的连线状况。
-v或–verbose 显示指令执行过程。
-V或–version 显示版本信息。
-w或–raw 显示RAW传输协议的连线状况。
-x或–unix 此参数的效果和指定”-A unix”参数相同。
–ip或–inet 此参数的效果和指定”-A inet”参数相同。
从整体上看,netstat的输出结果可以分为两个部分:
一个是Active Internet connections,称为有源TCP连接,其中"Recv-Q"和"Send-Q"指的是接收队列和发送队列。这些数字一般都应该是0。如果不是则表示软件包正在队列中堆积。这种情况只能在非常少的情况见到。
另一个是Active UNIX domain sockets,称为有源Unix域套接口(和网络套接字一样,但是只能用于本机通信,性能可以提高一倍)。
Proto显示连接使用的协议,RefCnt表示连接到本套接口上的进程号,Types显示套接口的类型,State显示套接口当前的状态,Path表示连接到套接口的其它进程使用的路径名。
套接口类型:
-t :TCP
-u :UDP
-raw :RAW类型
–unix :UNIX域类型
–ax25 :AX25类型
–ipx :ipx类型
–netrom :netrom类型
状态说明:
LISTEN:侦听来自远方的TCP端口的连接请求
SYN-SENT:再发送连接请求后等待匹配的连接请求(如果有大量这样的状态包,检查是否中招了)
SYN-RECEIVED:再收到和发送一个连接请求后等待对方对连接请求的确认(如有大量此状态,估计被flood攻击了)
ESTABLISHED:代表一个打开的连接
FIN-WAIT-1:等待远程TCP连接中断请求,或先前的连接中断请求的确认
FIN-WAIT-2:从远程TCP等待连接中断请求
CLOSE-WAIT:等待从本地用户发来的连接中断请求
CLOSING:等待远程TCP对连接中断的确认
LAST-ACK:等待原来的发向远程TCP的连接中断请求的确认(不是什么好东西,此项出现,检查是否被攻击)
TIME-WAIT:等待足够的时间以确保远程TCP接收到连接中断请求的确认
CLOSED:没有任何连接状态
详细实例:
ps
Process Status,用来列出系统中当前运行的进程的快照,即执行ps命令的那个时刻的那些进程。想要动态的显示进程信息,得使用top命令。
要对进程进行监测和控制,首先必须要了解当前进程的情况,也就是需要查看当前进程。使用该命令可以确定有哪些进程正在运行和运行的状态、进程是否结束、进程有没有僵死、哪些进程占用过多资源等。总之大部分信息都是可以通过执行该命令得到的。kill 命令用于杀死进程。
linux上进程有5种状态:
- 运行(正在运行或在运行队列中等待)
- 中断(休眠中, 受阻, 在等待某个条件的形成或接受到信号)
- 不可中断(收到信号不唤醒和不可运行, 进程必须等待直到有中断发生)
- 僵死(进程已终止, 但进程描述符存在, 直到父进程调用wait4()系统调用后释放)
- 停止(进程收到SIGSTOP, SIGSTP, SIGTIN, SIGTOU信号后停止运行运行)
ps工具标识进程的5种状态码:
D 不可中断 uninterruptible sleep (usually IO)
R 运行 runnable (on run queue)
S 中断 sleeping
T 停止 traced or stopped
Z 僵死 a defunct (”zombie”) process
命令ps -l
输出:
F S UID PID PPID C PRI NI ADDR SZ WCHAN TTY TIME CMD
4 S 0 2448 2320 0 80 0 - 14082 wait pts/2 00:00:00 su
4 S 0 2449 2448 0 80 0 - 6330 wait pts/2 00:00:00 bash
0 R 0 2461 2449 0 80 0 - 3561 - pts/2 00:00:00 ps
解读
F,代表这个程序的旗标 (flag), 4 代表使用者为 super user
S,进程状态STAT:
R :该程序目前正在运作,或者是可被运作
S :该程序目前正在睡眠当中 (可说是 idle 状态),但可被某些讯号 (signal) 唤醒。
T :该程序目前正在侦测或者是停止了
Z :该程序应该已经终止,但是其父程序却无法正常的终止他,造成 zombie (疆尸) 程序的状态
UID,进程的拥有者uid
PID,进程id
PPID,父进程id
C,CPU 使用的资源百分比
PRI,优先级Priority
NI,这个是 Nice 值
ADDR,kernel function,指出该程序在内存的那个部分。如果是个 running的程序,一般就是 “-”
SZ,使用掉的内存大小
WCHAN,目前这个进程是否正在运作当中,若为 - 表示正在运作
TTY,登入者的终端机位置,若与终端机无关,则显示 ?,tty1-tty6 是本机上面的登入者程序,若为 pts/0 等,则表示为由网络连接进主机的程序
TIME,使用掉的 CPU 时间
CMD,指令
在预设的情况下, ps 仅会列出与目前所在的 bash shell 有关的 PID 而已,所以, 当我使用 ps -l 的时候,只有三个 PID。
另ps aux
命令的输出和命令ps -l
的输出有部分字段相同,意义也一样,不同的字段如下:
VSZ :该 process 使用掉的虚拟内存量 (Kbytes)
RSS :该 process 占用的固定的内存量 (Kbytes)
START:该 process 被触发启动的时间
pstree
显示当前运行的所有进程及其相关的子进程,输出的是类似‘tree’命令的树状格式。
ss
Socket Statistics,是iproute2包附带的一个工具,可以比其他工具显示更多的TCP和状态信息,而且比netstat更快速更高效。安装 iproute2-doc 包, 通过 /usr/share/doc/iproute2-doc/ss.html获得完整文档。不带选项显示类似netstat命令的信息,输入类似的参数可以获取想要的类似输出。
当服务器的socket连接数量变得非常大时,无论是使用netstat命令(netstat遍历/proc下的每个PID目录来工作)还是直接cat /proc/net,执行速度都会很慢。ss快的秘诀在于,利用到TCP协议栈中tcp_diag。tcp_diag是一个用于分析统计的模块,可以获得Linux 内核中第一手的信息。当然,如果你的系统中没有tcp_diag,ss也可以正常运行,只是效率会变得稍慢,但仍然比netstat要快。-K 强制关闭 socket。
ss与 iptables 的语法非常相同。
telnet
telnet命令通常用来远程登录,基于TELNET协议的远程登录客户端程序,TCP/IP协议族中的一员,是Internet远程登陆服务的标准协议和主要方式。在终端使用者的电脑上使用telnet程序,用它连接到服务器。终端使用者可以在telnet程序中输入命令,这些命令会在服务器上运行,就像直接在服务器的控制台上输入一样。可以在本地就能控制服务器。要开始一个 telnet会话,必须输入用户名和密码来登录服务器。
因为telnet采用明文传送报文,安全性不好,很多Linux服务器都不开放telnet服务,而改用更安全的ssh方式。但仍然有很多别的系统可能采用telnet方式来提供远程登录。telnet还可确定远程服务的状态,比如确定远程服务器的某个端口是否能访问。
命令参数:
-8 允许使用8位字符资料,包括输入与输出。
-a 尝试自动登入远端系统。
-b<主机别名> 使用别名指定远端主机名称。
-c 不读取用户专属目录里的.telnetrc文件。
-d 启动排错模式。
-e<脱离字符> 设置脱离字符。
-E 滤除脱离字符。
-f 此参数的效果和指定"-F"参数相同。
-F 使用Kerberos V5认证时,加上此参数可把本地主机的认证数据上传到远端主机。
-k<域名> 使用Kerberos认证时,加上此参数让远端主机采用指定的领域名,而非该主机的域名。
-K 不自动登入远端主机。
-l<用户名称> 指定要登入远端主机的用户名称。
-L 允许输出8位字符资料。
-n<记录文件> 指定文件记录相关信息。
-r 使用类似rlogin指令的用户界面。
-S<服务类型> 设置telnet连线所需的IP TOS信息。
-x 假设主机有支持数据加密的功能,就使用它。
-X<认证形态> 关闭指定的认证形态。
top
常用的性能分析工具,能够实时显示系统中各个进程的资源占用状况,类似于Windows的任务管理器。显示系统当前的进程和其他状况;top是一个动态显示过程,即可以通过用户按键来不断刷新当前状态。默认情况下在前台执行,将独占前台,直到用户终止该程序为止。top命令提供了实时的对系统处理器的状态监视.它将显示系统中CPU最“敏感”的任务列表.该命令可以按CPU使用.内存使用和执行时间对任务进行排序;很多特性都可以通过交互式命令或者在个人定制文件中进行设定。
统计信息区
前五行是系统整体的统计信息。第一行是任务队列信息,同 uptime 命令的执行结果。其内容如下:
02:05:04 当前时间
up 10:10 系统运行时间,格式为时:分
3 user 当前登录用户数
load average: 0.05, 0.02, 0.00 系统负载,即任务队列的平均长度。
三个数值分别为 1分钟、5分钟、15分钟前到现在的平均值。
第二、三行为进程和CPU的信息。当有多个CPU时,这些内容可能会超过两行。内容如下:
Tasks: 175 total 进程总数
1 running 正在运行的进程数
174 sleeping 睡眠的进程数
0 stopped 停止的进程数
0 zombie 僵尸进程数
Cpu(s): 0.3% us 用户空间占用CPU百分比
1.0% sy 内核空间占用CPU百分比
0.0% ni 用户进程空间内改变过优先级的进程占用CPU百分比
98.7% id 空闲CPU百分比
0.0% wa 等待输入输出的CPU时间百分比
0.0% hi
0.0% si
最后两行为内存信息。内容如下:
Mem: 191272k total 物理内存总量
173656k used 使用的物理内存总量
17616k free 空闲内存总量
22052k buffers 用作内核缓存的内存量
Swap: 192772k total 交换区总量
0k used 使用的交换区总量
192772k free 空闲交换区总量
123988k cached 缓冲的交换区总量。
内存中的内容被换出到交换区,而后又被换入到内存,但使用过的交换区尚未被覆盖,
该数值即为这些内容已存在于内存中的交换区的大小。
相应的内存再次被换出时可不必再对交换区写入。
进程信息区
统计信息区域的下方显示了各个进程的详细信息。首先来认识一下各列的含义。
序号 列名 含义
a PID 进程id
b PPID 父进程id
c RUSER Real user name
d UID 进程所有者的用户id
e USER 进程所有者的用户名
f GROUP 进程所有者的组名
g TTY 启动进程的终端名。不是从终端启动的进程则显示为 ?
h PR 优先级
i NI nice值。负值表示高优先级,正值表示低优先级
j P 最后使用的CPU,仅在多CPU环境下有意义
k %CPU 上次更新到现在的CPU时间占用百分比
l TIME 进程使用的CPU时间总计,单位秒
m TIME+ 进程使用的CPU时间总计,单位1/100秒
n %MEM 进程使用的物理内存百分比
o VIRT 进程使用的虚拟内存总量,单位kb。VIRT=SWAP+RES
p SWAP 进程使用的虚拟内存中,被换出的大小,单位kb。
q RES 进程使用的、未被换出的物理内存大小,单位kb。RES=CODE+DATA
r CODE 可执行代码占用的物理内存大小,单位kb
s DATA 可执行代码以外的部分(数据段+栈)占用的物理内存大小,单位kb
t SHR 共享内存大小,单位kb
u nFLT 页面错误次数
v nDRT 最后一次写入到现在,被修改过的页面数。
w S 进程状态。
D=不可中断的睡眠状态
R=运行
S=睡眠
T=跟踪/停止
Z=僵尸进程
x COMMAND 命令名/命令行
y WCHAN 若该进程在睡眠,则显示睡眠中的系统函数名
z Flags 任务标志,参考 sched.h
默认情况下仅显示比较重要的 PID、USER、PR、NI、VIRT、RES、SHR、S、%CPU、%MEM、TIME+、COMMAND 列。可以通过下面的快捷键来更改显示内容。
更改显示内容
通过 f 键可以选择显示的内容。按 f 键之后会显示列的列表,按 a-z 即可显示或隐藏对应的列,最后按回车键确定。
按 o 键可以改变列的显示顺序。按小写的 a-z 可以将相应的列向右移动,而大写的 A-Z 可以将相应的列向左移动。最后按回车键确定。
按大写的 F 或 O 键,然后按 a-z 可以将进程按照相应的列进行排序。而大写的 R 键可以将当前的排序倒转。
4.1使用格式
top [-] [d] [p] [q] [c] [C] [S] [s] [n]
4.2参数说明
d 指定每两次屏幕信息刷新之间的时间间隔。当然用户可以使用s交互命令来改变之。
p 通过指定监控进程ID来仅仅监控某个进程的状态。
q该选项将使top没有任何延迟的进行刷新。如果调用程序有超级用户权限,那么top将以尽可能高的优先级运行。
S 指定累计模式
s 使top命令在安全模式中运行。这将去除交互命令所带来的潜在危险。
i 使top不显示任何闲置或者僵死进程。
c 显示整个命令行而不只是显示命令名
4.3其他
下面介绍在top命令执行过程中可以使用的一些交互命令。这些命令都是单字母的,如果在命令行选项中使用了s选项,则可能其中一些命令会被屏蔽掉。
Ctrl+L 擦除并且重写屏幕。
h或者? 显示帮助画面,给出一些简短的命令总结说明。
k 终止一个进程。系统将提示用户输入需要终止的进程PID,以及需要发送给该进程什么样的信号。一般的终止进程可以使用15信号;如果不能正常结束那就使用信号9强制结束该进程。默认值是信号15。在安全模式中此命令被屏蔽。
i 忽略闲置和僵死进程。这是一个开关式命令。
q 退出程序。
r 重新安排一个进程的优先级别。系统提示用户输入需要改变的进程PID以及需要设置的进程优先级值。输入一个正值将使优先级降低,反之则可以使该进程拥有更高的优先权。默认值是10。
S 切换到累计模式。
s 改变两次刷新之间的延迟时间。系统将提示用户输入新的时间,单位为s。如果有小数,就换算成m s。输入0值则系统将不断刷新,默认值是5 s。需要注意的是如果设置太小的时间,很可能会引起不断刷新,从而根本来不及看清显示的情况,而且系统负载也会大大增加。
f或者F 从当前显示中添加或者删除项目。
o或者O 改变显示项目的顺序。
l 切换显示平均负载和启动时间信息。
m 切换显示内存信息。
t 切换显示进程和CPU状态信息。
c 切换显示命令名称和完整命令行。
M 根据驻留内存大小进行排序。
P 根据CPU使用百分比大小进行排序。
T 根据时间/累计时间进行排序。
W 将当前设置写入~/.toprc文件中。这是写top配置文件的推荐方法。
Htop
比内置的 top 任务管理更强大的工具,提供带有诸多选项的高级接口用于监控系统进程。支持鼠标操作,可以使用菜单导航、选择进程,以及通过排序和过滤来管理任务。
部分快捷键
\过滤器
/搜索
,选择排序条件
k发送杀死信号
u用户过滤结果
t打开/关闭树模式
-和+ 折叠 / 展开选定的流程树
H关闭显示线程
iotop
通过磁盘写入对进程进行排序,并显示程序写入磁盘的次数和频率。
powertop
通过能量消耗列出流程。当你在外面,在某个地方你不能为笔记本电脑充电的地方时,这是一个至关重要的命令。
iftop
显而易见,输出和top命令的输出非常相似。可以用于找出网络拥塞,测速和维持网络流量总量。只有一个网络接口,直接运行 iftop 即可;如果有多个网络接口,需要指定要监控的接口:sudo iftop -i wlan0
。
使用实例:
nethogs
通过网络流量列出进程。需要root权限以显示尽可能全面的信息;指定要监听的接口,会显示大量的应用程序及其进程号;常用于检测哪些进程占用带宽。
dstat
会依据系统资源生成统计,以彩色可视化输出。
Nmon
Nmon,得名于 Nigel 的监控器,性能系统监控工具。Nmon 可以把操作系统的统计数据展示在屏幕上或者存储到一份数据文件里,来帮助了解计算机资源的使用情况、调整方向和系统瓶颈。这个系统基准测试工具只需要使用一条命令就能得到大量重要的性能数据。使用 Nmon 可以很轻松的监控系统的 CPU、内存、网络、硬盘、文件系统、NFS、高耗进程、资源和 IBM Power 系统的微分区的信息。
Nmon 默认是存在于 Ubuntu 仓库中。安装:sudo apt-get install nmon
;启动:nmon
。
nmon 命令行工具完全是交互式运行的,可以使用快捷键来轻松查看对应的统计数据:
q : 停止并退出 Nmon
h : 查看帮助
c : 查看 CPU 统计数据
m : 查看内存统计数据
d : 查看硬盘统计数据
k : 查看内核统计数据
n : 查看网络统计数据
N : 查看 NFS 统计数据
j : 查看文件系统统计数据
t : 查看高耗进程
V : 查看虚拟内存统计数据
v : 详细模式
r:显示计算机的系统结构、操作系统版本号和 CPU 等不同资源的信息。
vnstat
网络数据收集工具,十分轻量并且不需要 root 权限,以守护进程在后台运行,可以实时地记录网络数据。单个 vnstat 命令就可以显示所累计的数据。默认情况下它会显示所有的网络接口。使用 -i 选项来选择某个接口。合并多个接口的数据:vnstat -i wlan0+eth0+eth1
。
通过这几种方式过滤数据显示:
-h 按小时显示统计信息。
-d 按天显示统计信息。
-w 和 -m 分别按周和月份来显示统计信息。
-l 选项查看实时更新。
删除 wlan1 的数据库并不再监视它:vnstat -i wlan1 --delete
为网络接口创建一个别名:vnstat -u -i enp0s25 --nick eth0
默认情况下,vnstat 会监视 eth0。你可以在 /etc/vnstat.conf 对它进行修改,或者在你的家目录下创建你自己的个人配置文件。
安装 vnstati 来创建简单的彩图:vnstati -s -i wlx7cdd90a0a1c2 -o vnstat.png
host
DNS查询工具:host www.google.com
;
dig
同为DNS查询工具,更专业,dig www.google.com
;
route
route命令(Linux和win系统都自带)用于显示和操作IP路由表。要实现两个不同的子网之间的通信,需要一台连接两个网络的路由器,或者同时位于两个网络的网关来实现。
在Linux系统中,设置路由通常是为了解决以下问题:该Linux系统在一个局域网中,局域网中有一个网关,能够让机器访问Internet,那么就需要将这台机器的IP地址设置为Linux机器的默认路由。要注意的是,直接在命令行下执行route命令来添加路由,不会永久保存,当网卡重启或者机器重启之后,该路由就失效了;可以在/etc/rc.local中添加route命令来保证该路由设置永久有效。
Route命令是用于操作基于内核ip路由表,它的主要作用是创建一个静态路由让指定一个主机或者一个网络通过一个网络接口,如eth0。当使用"add"或者"del"参数时,路由表被修改,如果没有参数,则显示路由表当前的内容。
tcpdump
tcpdump,网络包分析工具,可以用来显示通过网络传输到本系统的 TCP/IP 以及其他网络的数据包。tcpdump 使用 libpcap 库来抓取网络报,这个库在几乎在所有的 Linux/Unix 中都有。tcpdump 可以从网卡或之前创建的数据包文件中读取内容,也可以将包写入文件中以供后续使用。必须是 root 用户或者使用 sudo 特权来运行 tcpdump。
参考
30 个实例详解 TOP 命令试试Linux下的ip命令,ifconfig已经过时了2017 年最佳开源网络监控工具
通过实例学习 tcpdump 命令traceroute命令