在Windows上有个强大的工具”任务管理器”,你可以通过它查询系统CPU,内存,网络,进程等各种状态信息。对于Linux系统,特别是当你只有命令行界面时,该如何查询这些信息呢?本文会介绍一系列Linux命令来查看系统当前运行状态。
目录
1. CPU使用状态
查看CPU信息: /proc/cpuinfo
$ cat /proc/cpuinfo
统计CPU使用状态: mpstat [OPTION] [INTERVAL]
该命令需安装”sysstat”工具包。
$ mpstat -P ALL # 列出每个CPU的信息
2. 内存使用状态
查看内存信息: /proc/meminfo
$ cat /proc/meminfo
统计已用和空闲的内存: free [OPTION]
$ free -h
常用参数:
-h: 高可读性输出,使用K, M, G等单位
-s n: 每隔n秒刷新,持续输出
统计CPU,内存及虚拟内存使用状态: vmstat [OPTION] [INTERVAL]
$ vmstat 5 # 每隔5秒刷新
输出中”swpd”指虚拟内存使用大小,”free”指空闲物理内存大小,”us”指用户CPU时间,”sy”指系统CPU时间,”id”指空闲CPU时间。
常用参数:
-s: 表格统计输出,内容类似”/proc/meminfo”
3. 进程状态
列出进程信息: ps [OPTION]
$ ps -ef | grep apache | grep –v grep # 查看apache进程
$ ps aux
输出中第二列显示的是进程ID,可用此ID配合”kill”命令来关闭进程。
常用参数:
-ef: 标准格式输出
aux: BSD格式输出
显示进程树信息: pstree [OPTION]
$ pstree # 以树形结构显示进程之间的依赖关系,包括子进程信息
显示每个进程的内存映射信息: pmap [OPTION] [PID]
$ pmap -x 954 # 以扩展格式显示ID为954的进程的内存状态
动态显示进程列表: top [OPTION]
相当强大的命令,类似于Windows下的”任务管理器”。动态显示各进程的CPU和内存占有率,进程优先级,占用物理内存大小等。默认设置每3秒钟刷新一次,按CPU占有率降序排列。
$ top
常用参数:
-d n: 每n秒刷新一次
-i: 忽略空闲进程
“top“模式下的交互:
空格: 手动刷新
h: 帮助信息
k: 输入进程ID关闭进程
i: 忽略空闲进程
s: 修改刷新间隔
M: 按内存占有率降序排列
P: 按CPU占有率降序排列
q: 退出”top”模式
查看特定进程详细信息: /proc/[PID]/
$ cat /proc/3561/status # 显示进程ID为3651的进程运行详细信息
$ cat /proc/3561/statm # 显示进程ID为3651的进程内存使用状况
$ cat /proc/3561/cmdline # 显示进程ID为3651的进程启动命令
4. 网络状态
查看网络接口信息: ifconfig
“ifconfig”的功能不仅仅是查看信息,还可以配置网络接口。这里只介绍其查询功能。
$ ifconfig
从输出中找到你的网卡(比如eth0),其中”inet addr:“就是IP地址,”Mask:“就是子网掩码,”HWaddr”就是网卡Mac地址。
如果系统上没有安装此命令,可执行以下命令(Ubuntu上)安装ifconfig
$ sudo apt-get install net-tools
另外,像CentOS系统这样默认不带ifconfig的,可以用ip addr命令来查本地IP。
查看网络连接,端口,监听等信息: netstat [OPTION]
$ netstat -a | grep 27017 # 查看27017端口使用情况
$ netstat -nr # 查看默认网关
常用参数
-a: 显示所有选项
-l: 只列出有在监听的服务状态
-r: 显示路由信息,路由表
-i: 显示所有网络接口
-t: 只显示tcp相关网络接口
查看Socket信息: ss [OPTION]
功能同”netstat”很类似
$ ss -t -a # 显示当前所有TCP Socket连接
5. 磁盘使用状态
查看磁盘空间使用状态: df [OPTION]
$ df -h
常用参数:
-h: 高可读性输出,使用K, M, G等单位
-BM: 以M为单位输出,也可以换成K, G
-T: 显示文件系统类型信息
查看指定目录下各子目录及文件的大小: du [OPTION] [DIR]
$ du -a /home/user/
$ du -s # 统计当前目录
常用参数:
-h: 高可读性输出,使用K, M, G等单位
-s: 显示指定目录占有空间总和,不循环显示子目录
统计CPU及IO操作信息: iostat [OPTION] [INTERVAL]
该命令需安装”sysstat”工具包。
$ iostat -kx # 显示IO详细信息,并以k字节为单位
$ iostat -d # 显示设备IO信息
$ iostat -p ALL # 显示每个设备IO信息
6. 其他信息查询
统计系统活动状况报告: sar [OPTION] [INTERVAL]
强大的命令,全面的系统性能监控和分析工具。该命令需安装”sysstat”工具包。
$ sar -u 5 10 # 显示CPU状态,每个5秒刷新一次,刷新10次后停止
常用参数:
-A:显示所有报告的总和
-u:显示CPU使用情况的统计信息
-r:显示内存和交换空间的统计信息
-b:显示I/O和传送速率的统计信息
-d:显示每一个块设备的活动信息
-R:显示内存页面的统计信息
-w:显示系统交换活动信息
列出系统中所有当前打开着的文件或进程: lsof [OPTION]
$ lsof | grep ld-2.19.so # 列出哪些进程在使用指定的库文件
$ sudo lsof -i :80 # 列出80端口现在运行什么程序,Ubuntu上需用sudo执行
显示主机信息: uname [OPTION]
$ uname -a
常用参数:
-n: 显示主机名
-r: 显示内核版本
-i: 显示硬件平台,如x86_64
-a: 显示所有信息
查看当前用户登录信息: who [OPTION]
$ who
常用参数:
-b: 显示上次系统启动时间
-r: 显示当前Linux的运行级别
列出以往用户登录信息: last -n
显示最近n次登录
$ last -5 # 显示最近5次登录信息
查看主机名: hostname
作用同”uname -n”
$ hostname
查看当前主机的外部IP地址
$ curl ifconfig.me
查看系统运行时间: uptime
统计系统从启动到现在运行了多久。
$ uptime -p # 简洁显示
查看当前用户名: whoami
$ whoami
以上是常用的Linux系统运行状态查询及监控命令。另外,Linux上还有个很强大的命令,就是”man”。如果你想更详细的了解各命令的使用方法,参数详解等,你可以通过man [COMMAND]来查询。本文就无需做深入的讲解了。