1、tcpdump
tcpdump 是一款经典的网络抓包工具,它可以打印所有经过网络接口的数据包的头信息。
语法:
tcpdump [-aAdDefIKlLnNOpqRStuUvxX] [ -B size ] [ -c count ] [ -C file_size ] [ -E algo:secret ] [ -F file ] [ -G seconds ] [ -i interface ] [ -M secret ] [ -r file ] [ -s snaplen ] [ -T type ] [ -w file ] [ -W filecount ] [ -y datalinktype ] [ -z command ] [ -Z user ] [ expression ]
2、lsof
lsof 是一个列出当前系统打开的文件描述符的工具。通过它我们可以了解感兴趣的进程打开了哪些文件描述符,或者我们感兴趣的文件描述符被哪些进程打开了。
语法:
lsof (选项)
常用选项:
-i,显示socket文件描述符。
-u,显示指定用户启动的所有进程打开的所有文件描述符。
-c,显示指定的命令打开的所有文件描述符。
-p,显示指定进程打开的所有文件描述符。
-t,仅显示打开了目标文件描述符的进程PID。
3、nc
nc 命令被用来快速构建网络连接,通过它我们能够很快找出服务器的逻辑错误。
语法:
nc (选项)
常用选项:
-i,设置数据包传送的时间间隔。
-l,以服务器方式运行,监听指定的端口。默认以客户端方式运行。
-k,重复接受并处理某个端口上的所有连接,必须与 -l 选项一起使用。
-n,使用IP地址表示主机,而不是主机名;使用数字表示端口,而不是服务名称。
-p,当以客户端方式运行时,强制其使用指定的端口号。
-s,设置本地主机发送出的数据包的IP地址。
-C,将CR和LF两个字符作为行结束符。
-U,使用UNIX的本地域协议通信。
-u,使用UDP协议。默认使用TCP协议。
-w,如果 nc 客户端在制定时间内未检测到任何输入,则推出。
-X,当nc客户端和代理服务器通信时,该选项指定它们之间使用的通信协议。
-x,指定目标代理服务器的IP地址和端口号。
-z,扫描目标机器上的某个或某些服务是否开启(端口扫描)。
4、strace
strace 是测试服务器性能的工具。它跟踪程序运行过程中执行的系统调用和接收到的信号,并将系统调用名、参数、返回值及信号量名输出到标准输出或指定的文件。
语法:
strace [-dDffhiqrtttTvVxx] [-a column] [-e expr] ... [-o file] [-p pid] ... [-s strsize] [-u username] [-E var=val] ... [command [arg ...]] 或: strace -c [-D] [-e expr] ... [-O overhead] [-S sortby] [-E var=val] ... [command [arg ...]]
常用选项:
-c,统计每个系统调用的执行时间、执行次数和出错次数。
-f,跟踪有 fork 调用生成的子进程。
-t,在输出的每一行信息前加上时间信息。
-e,指定一个表达式,用来控制如何跟踪系统调用。
-o,将 strace 的输出写入指定的文件。
5、netstat
netstat 是功能强大的网络信息统计工具。它可以打印本地网卡接口上的全部连接、路由表信息、网卡接口信息等。
语法:
netstat [-veenNcCF] [<Af>] -r netstat {-V|--version|-h|--help} netstat [-vnNcaeol] [<Socket> ...] netstat { [-veenNac] -I[<Iface>] | [-veenNac] -i | [-cnNe] -M | -s } [delay]
常用选项:
-n,使用IP地址表示主机,而不是主机名;使用数字表示端口号,而不是服务名称。
-a,显示结果中也包含监听socket。
-t,仅显示tcp连接。
-r,显示路由信息。
-i,显示网卡接口的数据流量。
-c,每隔一秒输出一次。
-o,显示socket定时器的信息。
-p,显示socket所属的进程的PID和名字。
6、vmstat
vmstat 是虚拟存储状态信息的表示,它能实时输出系统的各种资源的使用情况,比如进程信息、内存使用、CPU使用率以及I/O使用情况。
语法:
vmstat [-V] [-n] [delay [count]]
常用选项:
-f, 显示系统自启动以来执行的fork次数。
-s,显示内存相关的统计信息以及多种系统活动的数量。
-d,显示磁盘相关的统计信息。
-p,显示指定磁盘分区的统计信息。
-S,使用指定的单位来显示。
delay,采样的间隔时间(单位s),即,每隔 delay 的时间输出一次统计信息。
count,采样次数,即共输出 count 次统计信息。
7、ifstat
ifstat 是一个简单的网络流量监测工具。
语法:
ifstat (选项)
常用选项:
-a,监控系统上所有网卡接口。
-i,指定要监控的网卡接口。
-t,在每行输出信息前加上时间戳。
-b,以Kbit/s为单位显示数据,而不是默认的KB/s。
delay,采样的间隔时间(单位s),即,每隔 delay 的时间输出一次统计信息。
count,采样次数,即共输出 count 次统计信息。
8、mpstat
mpstat 是多处理器状态信息的缩写,它能实时监测多处理器系统上每个CPU的使用情况。
语法:
mpstat [ 选项 ] [ <时间间隔> [ <次数> ] ]
选项:
-p,指定CPU编号。
时间间隔:每次报告的时间间隔(秒)。
次数:显示报告的次数。
9、ipcs
ipcs 用于报告Linux 中进程间通信设施的状态,显示信息包括消息列表、共享内存、信号量等。
语法:
ipcs -asmq -tclup ipcs [-s -m -q] -i id ipcs -h for help.
常用选项:
-a,显示全部可用信息。
-q,显示活动的消息队列信息。
-m,显示活动的共享内存信息。
-s,显示活动的信号量信息。
10、ipcrm
ipcrm 用来删除一个或更多的消息队列、信号量或者共享内存标识。
语法:
ipcrm [ [-q msqid] [-m shmid] [-s semid] [-Q msgkey] [-M shmkey] [-S semkey] ... ]
常用选项:
-m,删除共享内存标识,与 shmid 有关联的共享内存段以及数据结构都会在最后一次拆离操作后删除。
-M,删除用shmkey创建的共享内存标识,与其相关的共享内存段和数据结构段都将在最后一次拆离操作后删除。
-q,删除消息队列标识msgid和与其相关的消息队列和数据结构。
-Q,删除由msgkey创建的消息队列标识与其相关的消息队列和数据结构。
-s,删除信号量标识semid和与其相关的信号量集及数据结构。
-S,删除由关键字semkey创建的信号标识和与其相关的信号量和数据结构。
11、uptime
uptime 能够打印系统总共运行了多长时间和系统的平均负载。uptime命令可以显示的信息依次为:现在时间、系统已经运行了多长时间、目前有多少登陆用户、系统在过去的1分钟、5分钟和15分钟内的平均负载。
语法:
uptime [-V]
选项:
-V,显示指令的版本信息。
12、free
free 可以显示当前系统未使用的和已使用的内存数目,还可以显示被内核使用的内存缓冲区。
语法:
free [-b|-k|-m|-g] [-l] [-o] [-t] [-s delay] [-c count] [-V]
常用选项:
-b,以Byte为单位显示内存使用情况。
-k,以KB为单位显示内存使用情况。
-m,以MB为单位显示内存使用情况。
-o,不显示缓冲区调节列。
-s<间隔秒数>,持续观察内存使用状况。
-t,显示内存总和列。
-V,显示版本信息。
13、top
top 用于实时动态地查看系统的整体运行情况,是一个综合了多方信息监测系统性能和运行信息的实用工具。
语法:
top -hv | -abcHimMsS -d delay -n iterations [-u user | -U user] -p pid [,pid ...]
常用选项:
-b,以批处理模式操作。
-c,显示完整的治命令。
-d,屏幕刷新间隔时间。
-I,忽略失效过程。
-s,保密模式。
-S,累积模式。
-i<时间>,设置间隔时间。
-u<用户名>,指定用户名。
-p<进程号>,指定进程。
-n<次数>,循环显示的次数。