Linux常见命令
机器使用类
vmstat
Virtual Memory Statistics 虚拟内存统计,命令用来显示Linux系统虚拟内存状态,也可以报告关于进程、内存、I/O等系统整体运行状态。
各参数表示:
- r:运行队列中进程的数量
- o: 等待io中队列的数量
- si:每秒从交换区写到内存的大小,由磁盘调入内存。
- so:每秒写入交换区的内存大小,由内存调入磁盘。
//内存够用的时候,这si和so这2个值都是0,如果这2个值长期大于0时,系统性能会受到影响,磁盘IO和CPU资源都会被消耗。有些朋友看到空闲内存(free)很少的或接近于0时,就认为内存不够用了,不能光看这一点,还要结合si和so,如果free很少,但是si和so也很少(大多时候是0),那么不用担心,系统性能这时不会受到影响的。因为linux总是先把内存用光 - in:每秒中断数,包括时钟中断。
- cs:每秒上下文切换数。
- us 用户进程执行时间百分比(user time) us的值比较高时,说明用户进程消耗的CPU时间多,但是如果长期超50%的使用,那么我们就该考虑优化程序算法或者进行加速。
- sy: 内核系统进程执行时间百分比(system time) sy的值高时,说明系统内核消耗的CPU资源多,这并不是良性表现,我们应该检查原因。
- wa IO等待时间百分比 wa的值高时,说明IO等待比较严重,这可能由于磁盘大量作随机访问造成,也有可能磁盘出现瓶颈(块操作)。
id 空闲时间百分比 - vmstat –a 显示活跃和非活跃内存,显示增加了inact和active列.
iostat
iostat是I/O statistics(输入/输出统计)的缩写,iostat工具将对系统的磁盘操作活动进行监视。它的特点是汇报磁盘活动统计情况,同时也会汇报出CPU使用情况。iostat也有一个弱点,就是它不能对某个进程进行深入分析,仅对系统的整体情况进行分析。
- C 显示CPU使用情况
- d 显示磁盘使用情况
- k 以 KB 为单位显示
- m 以 M 为单位显示
- N 显示磁盘阵列(LVM) 信息
- n 显示NFS 使用情况
- p[磁盘] 显示磁盘和分区的情况
- t 显示终端和CPU的信息
- x 显示详细信息
- V 显示版本信息
free
显示内存使用情况
ss
ss是Socket Statistics的缩写。顾名思义,ss命令可以用来获取socket统计信息,它可以显示和netstat类似的内容。ss的优势在于它能够显示更多更详细的有关TCP和连接状态的信息,而且比netstat更快速更高效。
当服务器的socket连接数量变得非常大时,无论是使用netstat命令还是直接cat /proc/net/tcp,执行速度都会很慢。
ss快的秘诀在于,它利用到了TCP协议栈中tcp_diag。tcp_diag是一个用于分析统计的模块,可以获得Linux 内核中第一手的信息,这就确保了ss的快捷高效
iftop
查看流量的命令,以用来指定网段网卡从而监控流量。
lsof
可以查看文件系统显示情况
图为查询对应端口占用内存情况
ps
查看进程,类似于win10的进程管理器
日志分析类
awk
. awk的语法有两种形式:
- awk [options] 'script' var=value file(s)
- awk [options] -f scriptfile var=value file(s)
命令选项
-
-F fs or --field-separator fs :指定输入文件折分隔符,fs是一个字符串或者是一个正则表达式,如-F:。
-
-v var=value or --asign var=value :赋值一个用户定义变量。
-
-f scripfile or --file scriptfile :从脚本文件中读取awk命令。
-
-mf nnn and -mr nnn :对nnn值设置内在限制,-mf选项限制分配给nnn的最大块数目;-mr选项限制记录的最大数目。这两个功能是Bell实验室版awk的扩展功能,在标准awk中不适用。
-
-W compact or --compat, -W traditional or --traditional :在兼容模式下运行awk。所以gawk的行为和标准的awk完全一样,所有的awk扩展都被忽略。
-
-W copyleft or --copyleft, -W copyright or --copyright :打印简短的版权信息。
-
-W help or --help, -W usage or --usage :打印全部awk选项和每个选项的简短说明。
-
-W lint or --lint :打印不能向传统unix平台移植的结构的警告。
-
-W lint-old or --lint-old :打印关于不能向传统unix平台移植的结构的警告。
-
-W posix :打开兼容模式。但有以下限制,不识别:/x、函数关键字、func、换码序列以及当fs是一个空格时,将新行作为一个域分隔符;操作符和=不能代替和=;fflush无效。
-
-W re-interval or --re-inerval :允许间隔正则表达式的使用,参考(grep中的Posix字符类),如括号表达式[[:alpha:]]。
-
-W source program-text or --source program-text :使用program-text作为源代码,可与-f命令混用。
-
-W version or --version :打印bug报告信息的版本。
find
Linux find命令用来在指定目录下查找文件。任何位于参数之前的字符串都将被视为欲查找的目录名。如果使用该命令时,不设置任何参数,则find命令将在当前目录下查找子目录与文件。并且将查找到的子目录和文件全部进行显示。
可以找到文件所对应的路径从而找到对应文件
网络管理类
tcpdump
Linux tcpdump命令用于倾倒网络传输数据。执行tcpdump指令可列出经过指定网络界面的数据包文件头。常用实例:
抓取所有经过 eth1,目的或源地址是 192.168.1.1 的网络数据:
-tcpdump -i eth1 host 192.168.1.1
- tcpdump -i eth1 src host 192.168.1.1
-tcpdump -i eth1 dst host 192.168.1.1
抓取所有经过 eth1,目的或源端口是 25 的网络数据
- tcpdump -i eth1 port 25
- tcpdump -i eth1 src port 25
- tcpdump -i eth1 dst port 25网络过滤
curl
在Linux中curl是一个利用URL规则在命令行下工作的文件传输工具,可以说是一款很强大的http命令行工具。它支持文件的上传和下载,是综合传输工具,但按传统,习惯称url为下载工具。curl是一种命令行工具,作用是发出网络请求,然后得到和提取数据,显示在"标准输出"(stdout)上面。
查看网页源码:
性能调优
strace gdb perl systemtap
性能调优