# 或--tcp 显示TCP传输协议的连线状况
netstat -t
# 或--udp 显示UDP传输协议的连线状况
netstat -u
# 只显示监听端口
netstat -l
# 以数字形式显示地址和端口号
netstat -n
# 显示正在使用Socket的程序识别码和程序名称。
netstat -p
# 列出所有 TCP 监听服务器端口
netstat -tlnp
查看系统和进程的整体信息。
常用参数
# 可以单独查看某个进程的信息
top -p pid
# 显示一个进程中各个线程CPU的占用率
top -p pid -H
我们通过 top 命令的整体信息部分,就可以判断服务器的健康状态。如果 1 分钟、5 分钟、15分钟的平均负载高于CPU核数,说明系统压力较大。如果物理内存的空闲内存过小,则也证明系统压力较大。
如果一个总核数=8核心的CPU,理论上平均负载达到16,也还可以坚持很长一段时间。
如果1分钟、5分钟以及15分钟全部超过CPU的总核心数(必须引起警觉),这个时候就要查看底部的进程信息了。
执行top命令,前面几行信息如下所示:
top - 15:28:10 up 141 days, 3:52, 1 user, load average: 0.01, 0.02, 0.05
Tasks: 90 total, 1 running, 89 sleeping, 0 stopped, 0 zombie
%Cpu(s): 0.5 us, 0.3 sy, 0.0 ni, 99.2 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
KiB Mem : 3879592 total, 123704 free, 2393532 used, 1362356 buff/cache
KiB Swap: 0 total, 0 free, 0 used. 999516 avail Mem
第一行:系统负载情况
top - 15:28:10 up 141 days, 3:52, 1 user, load average: 0.01, 0.02, 0.05
| Tasks: 90 total | 系统中的进程总数 |
|---|---|
| 1 running | 正在运行的进程数 |
| 89 sleeping | 睡眠的进程数 |
| 0 stopped | 正在停止的进程数 |
| 0 zombie | 僵尸进程数。如果不是 0,则需要手工检查僵尸进程 |
第二行:系统进程情况
Tasks: 90 total, 1 running, 89 sleeping, 0 stopped, 0 zombie
| 内容 | 说明 |
|---|---|
| 15:28:10 | 系统当前时间 |
| up 141 days | 系统的运行时间.本机己经运行141天了 |
| 1 user | 当前登录了1个用户 |
| load average: 0.01, 0.02, 0.05 | 系统在之前 1 分钟、5 分钟、15 分钟的平均负载。如果 CPU 是单核的,则这个数值超过 1 就是高负载:如果 CPU 是四核的,则这个数值超过 4 就是高负载 |
第三行:系统CPU使用情况
%Cpu(s): 0.5 us, 0.3 sy, 0.0 ni, 99.2 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
如果多个CPU,想查看每一核心分别的负载情况,在top命令下,按数字键"1"可以切换查看
%Cpu0 : 0.0 us, 0.3 sy, 0.0 ni, 99.7 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
%Cpu1 : 0.3 us, 0.0 sy, 0.0 ni, 99.7 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
| 内容 | 说明 |
|---|---|
| %Cpu(s): 0.5 us | 用户模式占用的 CPU 百分比 |
| 0.3 sy | 系统模式占用的 CPU 百分比 |
| 0.0 ni | 改变过优先级的用户进程占用的 CPU 百分比 |
| 99.2 id | idle缩写,空闲 CPU 占用的 CPU 百分比 |
| 0.0 wa | 等待输入/输出的进程占用的 CPU 百分比 |
| 0.0 hi | 硬中断请求服务占用的 CPU 百分比 |
| 0.0 si | 软中断请求服务占用的 CPU 百分比 |
| 0.0 st | st(steal time)意为虚拟时间百分比,就是当有虚拟机时,虚拟 CPU 等待实际 CPU 的时间百分比 |
第四行:系统物理内存使用情况
KiB Mem : 3879592 total, 123704 free, 2393532 used, 1362356 buff/cache
| 内容 | 说明 |
|---|---|
| KiB Mem : 3879592 total | 物理内存的总量,单位为KB |
| 123704 free | 空闲的物理内存数量 |
| 2393532 used | 己经使用的物理内存数量 |
| 1362356 buff/cache | 作为缓冲的内存数量 |
第五行:swap交换分区内存
KiB Swap: 0 total, 0 free, 0 used. 999516 avail Mem
在Linux操作系统分区时,最少需要3个分区:
① /boot分区 : 系统分区
② swap交换分区 :一般情况下为内存的1~2倍,但是尽量不要超过2G
③ /分区 :根分区,所有文件都存放于此。
swap分区:就是当计算机的内存不足时,系统会自动从硬盘中划出一块区域充当内存使用。
| 内容 | 说明 |
|---|---|
| KiB Swap: 0 total | 交换分区(虚拟内存)的总大小 |
| 0 free | 空闲交换分区的大小 |
| 0 used | 已经使用的交换分区的大小 |
| 999516 avail Mem | 可用内存 |
系统的进程信息
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
6389 root 20 0 3689916 807876 9668 S 0.3 20.8 640:00.33 java
15839 mysql 20 0 1883872 504880 11036 S 0.3 13.0 986:28.58 mysqld
16120 root 20 0 3586412 310108 8816 S 0.3 8.0 203:50.93 java
......
| PID | 进程的ID |
|---|---|
| USER | 该进程所属的用户 |
| PR | 优先级,数值越小优先级越高 |
| NI | NICE优先级,数值越小优先级越高,取值范围-20到19,默认都是0 |
| VIRT | 该进程使用的虚拟内存的大小,单位为KB |
| RES | 该进程使用的物理内存的大小,单位为KB |
| SHR | 共享内存大小,单位为KB。计算一个进程实际使用的内存 = 常驻内存(RES)- 共享内存(SHR) |
| S | 进程状态。其中S 表示睡眠,R 表示运行 |
| %CPU | 该进程占用CPU的百分比 |
| %MEM | 该进程占用内存的百分比 |
| TIME+ | 该进程共占用的CPU时间 |
| COMMAND | 进程名 |
在top命令下,交互操作快捷键P(大写),表示将结果按照CPU使用率从高到低进行降序排列。
使用交互快捷键M(大写):表示将结果按照内存(MEM)从高到低进行降序排列。
按键盘上的q可以退出top命令。
# free [选项]
-m : 用M显示内容使用情况
-h :显示带单位(MB或者GB)易读格式
命令默认的显示单位是KByte
无参数
[root@hecs-169625 ~]# free
total used free shared buff/cache available
Mem: 3879592 2393336 129408 189144 1356848 1007904
Swap: 0 0 0
用M显示内容使用情况
[root@hecs-169625 ~]# free -m
total used free shared buff/cache available
Mem: 3788 2337 126 184 1325 984
Swap: 0 0 0
显示带单位(MB或者GB)易读格式
[root@hecs-169625 ~]# free -h
total used free shared buff/cache available
Mem: 3.7G 2.3G 126M 184M 1.3G 984M
Swap: 0B 0B 0B
# df [选项]
-h :以较高的可读性显示磁盘剩余空间大小
# df -h => 显示磁盘剩余空间大小
举例说明:
[root@hecs-169625 ~]# df -h
Filesystem Size Used Avail Use% Mounted on
devtmpfs 1.9G 0 1.9G 0% /dev
tmpfs 1.9G 0 1.9G 0% /dev/shm
tmpfs 1.9G 185M 1.7G 10% /run
tmpfs 1.9G 0 1.9G 0% /sys/fs/cgroup
/dev/vda1 40G 7.3G 30G 20% /
tmpfs 379M 0 379M 0% /run/user/0
具体参数如下:
| Filesystem | 磁盘名称 |
|---|---|
| Size | 总大小 |
| Used | 被使用的大小 |
| Avail | 剩余大小 |
| Use% | 使用百分比 |
| Mounted on | 挂载路径(相当于Windows 的磁盘符) |
top 动态查看系统进程的信息(每隔3s切换一次)
ps 静态查看系统进程的信息(只能查询运行ps命令瞬间,系统的进程信息)
# ps [选项]
选项说明:
-e : 等价于"A" 表示列出全部(all)的进程
-f : 表示full 显示全部的列(显示全字段)
# ps -ef => 显示当前系统所有进程信息
ps 进程标题解释
[root@hecs-169625 ~]# ps -ef
UID PID PPID C STIME TTY TIME CMD
root 1 0 0 Jul02 ? 00:14:34 /usr/lib/systemd/systemd --switched-root --system --deserialize 22
root 2 0 0 Jul02 ? 00:00:00 [kthreadd]
......
| UID | 该进程执行的用户ID |
|---|---|
| PID | 进程ID |
| PPID | 该进程的父级进程ID,如果找不到,则该进程就被称之为僵尸进程(Parent Process ID) |
| C | Cpu的占用率,其形式是百分数 |
| STIME | 进程的启动时间 |
| TTY | 终端设备,发起该进程的设备识别符号,如果显示“?”则表示该进程并不是由终端设备发起 |
| TIME | 进程实际使用CPU的时间 |
| CMD | 该进程的名称或者对应的路径 |
ps aux 是 ps -ef 命令的一种补充
[root@hecs-169625 ~]# ps aux
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
root 1 0.0 0.0 125520 3336 ? Ss Jul02 14:34 /usr/lib/systemd/systemd --switched-root --system --deserialize 22
root 2 0.0 0.0 0 0 ? S Jul02 0:00 [kthreadd]
......
| USER | 该 process 属于哪个使用者账号 |
|---|---|
| PID | 该 process 的ID |
| %CPU | 该 process 使用掉的 CPU 资源百分比 |
| %MEM | 该 process 所占用的物理内存百分比 |
| VSZ | 该 process 使用掉的虚拟内存量 (Kbytes) |
| RSS | 该 process 占用的固定的内存量 (Kbytes) |
| TTY | 该 process 是在哪个终端机上面运作,若与终端机无关,则显示 ?,另外, tty1-tty6 是本机上面的登入者程序,若为 pts/0 等等的,则表示为由网络连接进主机的程序。 |
| STAT | 该程序目前的状态,主要的状态有 R:该程序目前正在运作,或者是可被运作。S:该程序目前正在睡眠当中 (可说是 idle 状态),但可被某些讯号 (signal) 唤醒。T:该程序目前正在侦测或者是停止了。Z:该程序应该已经终止,但是其父程序却无法正常的终止他,造成 zombie (疆尸) 程序的状态 |
| START | 该 process 被触发启动的时间 |
| TIME | 该 process 实际使用 CPU 运作的时间 |
| COMMAND | 该程序的实际指令 |
kill 命令会向操作系统内核发送一个信号(多是终止信号)和目标进程的 PID,然后系统内核根据收到的信号类型,对指定进程进行相应的操作。
根据PID编号结束进程
# kill [选项] PID进程编号
选项说明:
-9 :杀死进程,即强制结束进程。
-15 :正常结束进程,是 kill 命令的默认信号。
经验:kill经常结合ps命令一起使用