查看Linux系统运行状态
在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]
来查询。本文就无需做深入的讲解了。