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