面试官都在问 | 如何查看网络/进程信息
名企高频考点之查看网络/进程信息
各个大厂对于 Linux 的考察中, 命令是常见考点. 命令中关于进程/网络信息的查看又是重中之重.
同时这些命令也是实际工作中的常用命令. 需要重点掌握.
1. 查看网络连接数和端口
使用 netstat 命令查看网络连接情况
netstat -anp
执行结果如下

参数解释:
-a 显示所有选项
-t (tcp)仅显示tcp相关选项
-u (udp)仅显示udp相关选项
-n 拒绝显示别名,能显示数字的全部转化成数字。
-p 显示建立相关链接的程序名
关键列解释:
Proto 表示协议类型
LocalAddress 表示本地地址
ForeignAddress 表示对端地址
State 表示状态(对于 TCP 有效, UDP 没有状态概念)
PID/Program name 表示对应的进程id和进程名.
由于 netstat命令打印的结果较多, 通常需要搭配 grep 命令来使用.
例如:
- 查看 8080 端口被哪个进程占用
netstat -anp | grep 8080
执行结果:

- 查看进程名为 Python 的进程都有哪些连接
netstat -anp | grep python
执行结果

2. 查看进程信息 top 命令
使用 top 命令可以查看进程信息.
top
执行结果

结果解释:
前 5 行是统计信息区.
第一行是任务队列信息,同 uptime 命令的执行结果. 其中 load 表示系统负载(任务队列的平均长度). 值越大表示当前系统就越繁忙.
第二、三行为进程和CPU的信息。当有多个CPU时,这些内容可能会超过两行
第四, 五行尾内存信息.
第四行 Mem: total 物理内存总量, used 使用的物理内存总量, free 空闲内存总量, buffers 用作内核缓存的内存量.
第五行 表示 Swap 分区的使用情况.
接下来是进程列表. 默认按照 CPU 占用情况降序排序(第一行就是当前占用 CPU 最多的进程).
常用列解释:
PID 表示进程 id
USER 表示进程拥有者的用户id.
PR 表示进程优先级
NI 表示 nice 值, 和 PR 搭配使用.
VIRT 表示虚拟内存使用情况
RES 表示物理内存使用情况(如果进程使用的物理内存的和接近机器的物理内存总量, 就会出现内存不够用的情况).
%CPU 表示该进程占用 CPU 的百分比(多核机器这个值可以超过 100%).
COMMAND 对应到这个进程启动的命令.
top 的一些常见用法:
- 查看占用内存最多的前 N 个进程
先执行 top 命令, 再使用快捷键 M 即可按内存占用降序排序
- 查看 CPU 占用最多的前 N 个进程
先执行 top 命令, 再使用快捷键 P 即可按照 CPU 占用降序排序
- 查看某个进程中的线程情况
top -p [pid]
然后再使用快捷键 H 即可查看线程相关信息.
3. 查看 ip 地址
ifconfig 命令即可
ifconfig
执行结果

由于一台主机可能同时具备多个网络接口, 查看到的 ip 地址也就可能有多个.
网络接口对应到主机的网卡或者虚拟网卡设备. 一台主机可以具有多个网卡, 也就可以有多个 IP 地址.
小结
通过以上三个命令, 我们了解了一些查看网络/进程信息的基本操作. 上面只是罗列了一些最常用的部分. 还有很多进一步延伸的内容等待我们在实际工作中积累和发掘.
作者:汤众
审稿:王海斌

浙公网安备 33010602011771号