常用Linux命令-查看系统状态

Linux下查看系统状态的常用命令

top-查看系统运行情况

结果分析

1
2
3
4
5
6
7
8
9
10
11
top - 10:23:29 up 67 days, 20:09,  1 user,  load average: 0.00, 0.00, 0.00			当前系统时间  已运行67天20小时  当前一个用户登录  系统负载
Tasks: 91 total, 2 running, 89 sleeping, 0 stopped, 0 zombie 总进程数91 运行进程数2 睡眠进程数89 停止进程数0 冻结进程数0
%Cpu(s): 0.0 us, 0.0 sy, 0.0 ni, 99.9 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st 用户占用cpu 内核占用cpu 改变过优先级进程占用cpu 空闲cpu IO等待占用CPU 硬中断占用cpu 软中断占用cpu
KiB Mem : 515980 total, 9564 free, 330984 used, 175432 buff/cache 物理内存 空闲物理内存 已使用物理内存 用作内核缓存的内存
KiB Swap: 1023996 total, 984828 free, 39168 used. 128436 avail Mem 交换区总量 空闲交换区总量 已使用交换区总量 可用交换区总量

PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND 进程ID 用户名 调度优先级 进程优先级 使用虚拟内存 驻留内存大小 共享内存大小 进程状态 CPU 内存 占用CPU时间 进程名称
1 root 20 0 124796 2864 2036 S 0.0 0.6 0:20.41 systemd
2 root 20 0 0 0 0 S 0.0 0.0 0:00.01 kthreadd
4 root 0 -20 0 0 0 S 0.0 0.0 0:00.00 kworker/0:0H
5 root 20 0 0 0 0 S 0.0 0.0 22:07.92 kworker/u2:0

free-查看系统内存使用

结果分析

1
2
3
4
             total       used       free     shared    buffers     cached		
Mem: 8388608 7594756 793852 2627680 0 5325212 内存总数 已使用内存 空闲内存 多个进程共享内存 缓存内存
-/+ buffers/cache: 2269544 6119064 已用物理内存(第一行used–buffers–cached) 可用物理内存(第一行free+buffers+cached)
Swap: 2097152 0 2097152 交换空间可用内存 交换空间已用 交换空间空闲

vmstat-显示虚拟内存状态

结果分析

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
procs -----------memory---------- ---swap-- -----io---- --system-- -----cpu-----						
r b swpd free buff cache si so bi bo in cs us sy id wa st
4294967295 0 0 786116 0 5332212 2 2 39 125 0 0 0 0 100 0 0

procs -----------
r: 运行队列中进程数量
b: 等待IO的进程数量
memory----------
swpd: 使用虚拟内存大小。
free: 空闲物理内存大小。
buff: 用作缓冲的内存大小。
cache: 用作缓存的内存大小。
---swap--
si: 每秒从交换区写到内存的大小,由磁盘调入内存。
so: 每秒写入交换区的内存大小,由内存调入磁盘。
-----io----
bi: 每秒读取的块数
bo: 每秒写入的块数
--system--
in: 每秒中断数,包括时钟中断。
cs: 每秒上下文切换数。
-----cpu-----
us: 用户进程执行时间百分比
sy: 内核系统进程执行时间百分比
wa: IO等待时间百分比
id: 空闲时间百分比

netstat-查看网络状态

常用选项

-a 显示所有socket,包括正在监听的
-l 显示有在 Listen (监听) 的服务状态
-n 以网络IP地址代替名称,显示网络连接情形
-p 显示建立相关连接的程序名和PID
-t 显示TCP协议的连接情况
-u 显示UDP协议的连接情况

实例

1
2
3
4
5
6
#列出所有tcp连接
netstat -at
#列出所有udp连接
netstat -au
#查询占用端口号的程序名或pid
netstat -nlp|grep port

lsof-查看系统打开文件list open files

常用选项

-a:列出打开文件存在的进程
-c<进程名>:列出指定进程所打开的文件
+d<目录>:列出目录下被打开的文件
+D<目录>:递归列出目录下被打开的文件
-i<条件>:列出符合条件的进程。(4、6、协议、:端口、 @ip )
-p<进程号>:列出指定进程号所打开的文件;

实例

1
2
3
4
5
6
7
#列出所有打开的文件
lsof
#列出java进程所打开的文件
lsof -c java
lsof | grep java
#列出pid为1468进程所打开的文件
lsof -p 1468

结果分析

1
2
3
4
5
6
7
8
9
10
11
12
COMMAND  PID       USER   FD     TYPE     DEVICE   SIZE/OFF       NODE NAME  
java 1468 maxiaoding cwd DIR 1,7 288 8596422153 /Users/maxiaoding/Library/Caches/IntelliJIdea2018.1/compile-server
java 1468 maxiaoding txt REG 1,7 103376 743254 /Library/Java/JavaVirtualMachines/jdk1.8.0_152.jdk/Contents/Home/bin/java
java 1468 maxiaoding txt REG 1,7 49472 743486 /Library/Java/JavaVirtualMachines/jdk1.8.0_152.jdk/Contents/Home/jre/lib/libverify.dylib

COMMAND:进程的名称 PID:进程标识符
USER:进程所有者
FD:文件描述符,应用程序通过文件描述符识别该文件。如cwd、txt等 TYPE:文件类型,如DIR、REG等
DEVICE:指定磁盘的名称
SIZE:文件的大小
NODE:索引节点(文件在磁盘上的标识)
NAME:打开文件的确切名称

df-查看磁盘使用空间display free disk space

结果分析

1
2
3
4
5
6
7
8
9
➜  ~ df
Filesystem 512-blocks Used Available Capacity iused ifree %iused Mounted on 文件系统 每块512B 已用 可用 已用% 挂载点
/dev/disk1s1 394532824 140879576 250239096 37% 1197974 9223372036853577833 0% /
devfs 372 372 0 100% 644 0 100% /dev

➜ ~ df -h
Filesystem Size Used Avail Capacity iused ifree %iused Mounted on 文件系统 容量 已用 可用 已用% 挂载点
/dev/disk1s1 188Gi 68Gi 117Gi 37% 1208614 9223372036853567193 0% /
devfs 192Ki 192Ki 0Bi 100% 664 0 100% /dev

du-查看文件使用空间display disk usage statistics

结果分析

1
2
➜  ~ du -h java_error_in_idea_511.log
68K java_error_in_idea_511.log

ps-系统进程状态process status

三种语法格式

UNIX 风格,选项可以组合在一起,并且选项前必须有“-”连字符
BSD 风格,选项可以组合在一起,但是选项前不能有“-”连字符
GNU 风格的长选项,选项前有两个“-”连字符
能够混用这几种风格,但是可能会发生冲突。较多使用 UNIX 风格的ps命令

常用选项

-a:显示所有终端机下执行的程序,除了阶段作业领导者之外。 
a:显示现行终端机下的所有程序,包括其他用户的程序。 
-A:显示所有程序。 
-e:此选项的效果和指定"A"选项相同。 
e:列出程序时,显示每个程序所使用的环境变量。 
-f:显示UID,PPIP,C与STIME栏位。 
f:用ASCII字符显示树状结构,表达程序间的相互关系。 

使用实例

1
2
3
4
5
6
7
#查看所有进程
ps aux
ps -ef
#显示root用户信息
ps -u root
#查找特定进程
ps -ef|grep ssh

结果分析

1
2
UID   PID  PPID   C STIME   TTY           TIME CMD					用户ID  进程ID  父进程ID  cpu占用  系统时间  终端名称  进程执行时间  该进程地命令行输入
0 1 0 0 二10上午 ?? 5:43.44 /sbin/launchd

ps -ef与ps aux

两个命令都是查看所有进程,-ef是UNIX展示风格,而aux是BSD风格。 
COMMADN列如果过长,aux会截断显示,而-ef不会,所以有人推荐用-ef
如果想查看进程的CPU占用率和内存占用率,可以使用aux 
如果想查看进程的父进程ID和完整的COMMAND命令,可以使用ef
# Linux
Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×