linux-系统状态命令
2021/4/7 7:11:59
本文主要是介绍linux-系统状态命令,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
一、性能分析工具【sar】
语法:sar 【参数】【时间间隔 次数】
参数:
-u 【显示系统所有CPU在采样时间内的情况】
-A 【显示系统所有资源资源设备的运行情况】
-d 【显示系统所有硬盘设备在采样时间内的使用情况】
-r 【显示系统内存在此采样时间内的使用情况】
-v 【显示inode节点、文件和其他内盒标的统计信息】
-n 【显示网络运行情况】
二、实时显示系统状态的工具【top】
语法:top 参数
参数:
-d 【改变显示更新的速度,以秒为单位】
-n 【显示更新的次数,完成后将退出top】
-p 【显示指定的进程】
三、显示当前进程的状态(静态)【ps】
语法:ps 参数
参数:
-aux【显示包含用户下的所有的进程】
-ef 【显示所有进程的信息,包括命令行】
-Lf 【显示某个进程下的线程】# ps aux | sort -nr -k 3 | head -10 #查看占用CPU资源最高的10个进程
四、free
语法:free 参数
参数:
-s 【设置间隔的秒数】
-h 【以友好的形式展示】
-m【以M为单位】
-g 【以G为单位】、实际内存使用量=used-buffers-cached
实际内存剩余量=buffers+cached+free
buffer :作为buffer cache的内存,是块设备的读写缓冲区(可回收)
cache :作为page cache的内存,文件系统的cache(可回收)
清理内存之前使用sync命令,将内存的数据写入到硬盘中
五、输出磁盘IO和CPU的统计信息【iostat】
语法:iostat 【选项】【时间间隔】【次数】
参数:
-c【显示cpu使用情况】
-d【显示磁盘使用情况】
-n【显示NFS使用情况】
-p【显示磁盘和分区的情况】
%user:CPU处在用户模式下的时间百分比。 %nice:CPU处在带NICE值的用户模式下的时间百分比。 %system:CPU处在系统模式下的时间百分比。 %iowait:CPU等待输入输出完成时间的百分比。 %steal:管理程序维护另一个虚拟处理器时,虚拟CPU的无意识等待时间百分比。 %idle:CPU空闲时间百分比。 备注:如果%iowait的值过高,表示硬盘存在I/O瓶颈,%idle值高,表示CPU较空闲,如果%idle值高但系统响应慢时,有可能是CPU等待分配内存,此时应加大内存容量。%idle值如果持续低于10,那么系统的CPU处理能力相对较低,表明系统中最需要解决的资源是CPU。
六、列出系统上所有的网络连接情况【netstat】
语法:netstat 参数
参数:
-a【列出当前的所有连接】
-n【禁用域名解析功能,以数字的形式列出】
-p【查看进程和端口的信息】 #需要root权限
-e【-ep选项可以同时查看进程名和用户名;如果使用和-n一起使用,user列就会变成用户的id号,而不是用户名】
-t 【列出tcp协议的连接】
-u【列出udp协议的连接】
-c【持续输出信息】
-l 【列出正在监听的连接】
-r 【打印出来的信息和route命令输出的命令一样,可以加-n禁止域名解析】
-ie【输出信息与ifconfig命令一样】netstat -anpt | grep tcp | grep ESTABLISHED | wc -l #当前主机的tcp连接数
七、查看系统资源使用情况命令【vmstat】
语法:vmstat 【刷新延时 刷新次数】
参数:
r 表示运行队列(就是说多少个进程真的分配到CPU)。如果运行队列过大,表示你的CPU很繁忙,一般会造成CPU使用率很高。 b 表示阻塞的进程,这个不多说,进程阻塞,大家懂的。 swpd 虚拟内存已使用的大小,如果大于0,表示你的机器物理内存不足了,如果不是程序内存泄露的原因,那么你该升级内存了或者把耗内存的任务迁移到其他机器。 free 空闲的物理内存的大小 buff Linux/Unix系统是用来存储,目录里面有什么内容,权限等的缓存 cache 接用来记忆我们打开的文件,给文件做缓冲,(这里是Linux/Unix的聪明之处,把空闲的物理内存的一部分拿来做文件和目录的缓存,是为了提高 程序执行的性能,当程序使用内存时,buffer/cached会很快地被使用。) si 每秒从磁盘读入虚拟内存的大小,如果这个值大于0,表示物理内存不够用或者内存泄露了,要查找耗内存进程解决掉。 so 每秒虚拟内存写入磁盘的大小,如果这个值大于0,同上。 bi 块设备每秒接收的块数量,这里的块设备是指系统上所有的磁盘和其他块设备,默认块大小是1024byte,我本机上没什么IO操作,所以一直是0,但是我曾在处理拷贝大量数据(2-3T)的机器上看过可以达到140000/s,磁盘写入速度差不多140M每秒 bo 块设备每秒发送的块数量,例如我们读取文件,bo就要大于0。bi和bo一般都要接近0,不然就是IO过于频繁,需要调整。 in 每秒CPU的中断次数,包括时间中断 cs 每秒上下文切换次数,例如我们调用系统函数,就要进行上下文切换,线程的切换,也要进程上下文切换,这个值要越小越好,太大了,要考虑调低线程或者进程的数目,例如在apache和nginx这种web服务器中,我们一般做性能测试时会进行几千并发甚至几万并发的测试,选择web服务器的进程可以由进程或者线程的峰值一直下调,压测,直到cs到一个比较小的值,这个进程和线程数就是比较合适的值了。系统调用也是,每次调用系统函数,我们的代码就会进入内核空间,导致上下文切换,这个是很耗资源,也要尽量避免频繁调用系统函数。上下文切换次数过多表示你的CPU大部分浪费在上下文切换,导致CPU干正经事的时间少了,CPU没有充分利用,是不可取的。 us 用户CPU时间,我曾经在一个做加密解密很频繁的服务器上,可以看到us接近100,r运行队列达到80(机器在做压力测试,性能表现不佳)。 sy 系统CPU时间,如果太高,表示系统调用时间长,例如是IO操作频繁。 id 空闲 CPU时间,一般来说,id + us + sy = 100,一般我认为id是空闲CPU使用率,us是用户CPU使用率,sy是系统CPU使用率。 wa等待IO CPU时间。
八、查看系统运行时间【uptime】
语法:uptime
参数:
-v 【查看命令版本】显示当前时间--系统已运行时间--当前在线用户数--平均负载(最近1分钟、5分钟、15分钟,数值越小越好)
七、查看进程打开的文件、端口和打开文件的进程【lsof】
语法:lsof 参数
参数:
-u【显示指定用户打开了什么 #在用户前面加上^代表除了这个用户以外的】
-p【查看指定进程一打开的内容】
-i 【获取网络信息】
#lsof -i :[port] 查看端口
#lsof -i@[1.1.1.1:port] 查看主机的连通性
#lsof命令需要访问核心内存和各种文件系统,需要root权限才可执行lsof | grep deleted;cd /proc/进程/fd;echo '' > 1 #找到已删除但被进程占用的文件,并清空,释放空间
这篇关于linux-系统状态命令的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-12-18git仓库有更新,jenkins 自动触发拉代码怎么配置的?-icode9专业技术文章分享
- 2024-12-18Jenkins webhook 方式怎么配置指定的分支?-icode9专业技术文章分享
- 2024-12-13Linux C++项目实战入门教程
- 2024-12-13Linux C++编程项目实战入门教程
- 2024-12-11Linux部署Scrapy教程:新手入门指南
- 2024-12-11怎么将在本地创建的 Maven 仓库迁移到 Linux 服务器上?-icode9专业技术文章分享
- 2024-12-10Linux常用命令
- 2024-12-06谁看谁服! Linux 创始人对于进程和线程的理解是…
- 2024-12-04操作系统教程:新手入门及初级技巧详解
- 2024-12-04操作系统入门:新手必学指南