一、IP地址
1.1 ifconfig 命令
- 每一台联网的电脑都会有一个地址,用于和其它计算机进行通讯
- IP地址主要有2个版本,V4版本和V6版本
- IPv4版本的地址格式是:a.b.c.d,其中abcd表示0~255的数字,如192.168.88.101就是一个标准的IP地址
可以通过命令:ifconfig,查看本机的ip地址
shell
ifconfig
如果没有安装这个程序,可以使用下列命令安装:
shell
sudo apt install -y net-tools
其中,这里的192.168.80.128就是当前虚拟机的IP
1.2 特殊的IP地址
除了标准的IP地址以外,还有几个特殊的IP地址需要我们了解:
- 127.0.0.1 这个地址代表本机回环地址,代指本机
- 0.0.0.0 特殊IP地址,可以用于指代本机、可以在端口绑定中用来确定绑定关系、在一些IP地址限制中,表示所有IP的意思,如放行规则设置为0.0.0.0,表示允许任意IP访问
1.3 主机名
每一台电脑除了对外联络地址(IP地址)以外,也可以有一个名字,称之为主机名
无论是Windows或Linux系统,都可以给系统设置主机名
使用hostname命令就可以查看本机名称了:
shell
hostname
修改主机名
可以使用如下的命令来修改主机名
hostnamectl set-hostname 主机名
比如
shell
hostnamectl set-hostname Ubuntu
1.4 域名解析
IP地址实在是难以记忆,有没有什么办法可以通过主机名或替代的字符地址去代替数字化的IP地址呢?
- 实际上,我们一直都是通过字符化的地址去访问服务器,很少指定IP地址
- 比如,我们在浏览器内打开:www.baidu.com,会打开百度的网址
- 其中,www.baidu.com,是百度的网址,我们称之为:域名
访问www.baidu.com的流程如下:
即:
- 先查看本机的记录(私人地址本)
- Windows看:C:\Windows\System32\drivers\etc\hosts
- Linux看:/etc/hosts
- 再联网去DNS服务器(如114.114.114.114,8.8.8.8等)询问
配置主机名映射
我们可以在FinalShell中使用域名来连接到当前的虚拟机,为了实现这个功能,需要在Windows系统的C:\Windows\System32\drivers\etc\hosts文件中配置主机名映射记录
- 使用记事本管理员模式打开相应的文件,加入主机名映射信息
- 打开FinalShell,配置连接的虚拟机信息:
可以发现已经成功连接上了
也可以在Windows下直接ping Ubuntu 这个域名
1.5 固定虚拟机IP
可以参考这篇博客:Ubuntu系统固定IP
- 首先先查看本地网关
shell
route -n
- 然后查看主机的IP
shell
ifconfig
- 备份一份配置文档,防止操作失败可以恢复
shell
sudo cp /etc/netplan/01-network-manager-all.yaml /etc/netplan/01-network-manager-all.yaml.bak
-
使用vim 进行修改:
-
使修改生效:
shell
sudo netplan apply
然后在Windows下ping 以下这个地址:
ping 通了,如果失败的话,要记得使用备份恢复回来
二、网络传输
2.1 端口
端口,是设备与外界通讯交流的出入口。端口可以分为:物理端口和虚拟端口两类
- 物理端口:又可称之为接口,是可见的端口,如USB接口,RJ45网口,HDMI端口等
- 虚拟端口:是指计算机内部的端口,是不可见的,是用来操作系统和外部进行交互使用的
物理端口
虚拟端口
- 物理端口我们日常生活中经常见到,也能知晓它的作用。
- 但是虚拟端口,有什么用?为什么需要它呢?
- 通过IP地址即可
- 计算机程序之间的通讯,通过IP只能锁定计算机,但是无法锁定具体的程序。
通过端口可以锁定计算机上具体的程序,确保程序之间进行沟通 - IP地址相当于小区地址,在小区内可以有许多住户(程序),而门牌号(端口)就是各个住户(程序)的联系地址
Linux系统是一个超大号小区,可以支持65535个端口,这6万多个端口分为3类进行使用:
- 公认端口:1~1023,通常用于一些系统内置或知名程序的预留使用,如SSH服务的22端口,HTTPS服务的443端口,非特殊需要,不要占用这个范围的端口
- 注册端口:1024~49151,通常可以随意使用,用于松散的绑定一些程序\服务
- 动态端口:49152~65535,通常不会固定绑定程序,而是当程序对外进行网络链接时,用于临时使用
如图中,计算机A的微信连接计算机B的微信,A使用的50001即动态端口,临时找一个端口作为出口
计算机B的微信使用端口5678,即注册端口,长期绑定此端口等待别人连接
2.2 查看端口占用
使用nmap命令可以查看端口的占用情况
语法:
nmap 查看的IP
如果没有下载nmap这个程序,可以通过apt命令来下载
shell
sudo apt install -y nmap
安装后,可以查看到相应的端口信息,比如我们查看本机回环地址:
shell
nmap 127.0.0.1
其中,22端口及提供SSH服务的端口,目前正在被FinalShell使用
可以使用netstat命令来查看指定端口的占用情况,没安装的话需要下载一下:
shell
sudo apt install -y net-tools
通过管道符结合grep命令,可以筛选出感兴趣的部分
shell
sudo netstat -anp | grep 26890
可以查看到端口的信息
三、进程状态
3.1 进程
程序运行在操作系统中,是被操作系统所管理的。
-
为管理运行的程序,每一个程序在运行的时候,便被操作系统注册为系统中的一个:进程
-
并会为每一个进程都分配一个独有的:进程ID(进程号)
-
Windows系统任务管理器
- Linux系统查看进程
3.2 查看进程
通过ps命令可以查看Linux系统中的进程信息
语法:
ps [-e -f]
- 选项:-e,显示出全部的进程
- 选项:-f,以完全格式化的形式展示信息(展示全部信息)
- 一般来说,固定用法就是: ps -ef 列出全部进程的全部信息
从左到右分别是:
- UID:进程所属的用户ID
- PID:进程的进程号ID
- PPID:进程的父ID(启动此进程的其它进程)
- C:此进程的CPU占用率
- (百分比)
- STIME:进程的启动时间TTY:启动此进程的终端序号,如显示?,表示非终端启动
- TIME:进程占用CPU的时间
- CMD:进程对应的名称或启动路径或启动命令
3.3 查看指定进程
在FinalShell中,执行命令:tail,可以看到,此命令一直阻塞在那里
- 在FinalShell中,复制一个标签页,执行:ps -ef 找出tail这个程序的进程信息
- 问题:是否会发现,列出的信息太多,无法准确的找到或很麻烦怎么办?
我们可以使用管道符配合grep来进行过滤,如:
shell
ps -ef | grep tail
可以找到tail占用的进程
我们可以通过kill 命令关闭这个进程
语法:
kill [-9] 进程ID
选项:-9,表示强制关闭进程。不使用此选项会向进程发送信号要求其关闭,但是否关闭看进程自身的处理机制。
比如,我们可以强制关闭刚刚的tail占用的进程:
shell
kill -9 45386
可以发现进程被终止了
四、主机状态
4.1 查看系统资源占用
可以使用top命令来查看CPU、内存使用情况,类似Windows中的任务管理器
语法:
shell
top
这个命令默认没5s刷新一次,使用ctrt+c 或者q退出:
top命令内容详解
-
第一行:top:命令名称,23:29:46,当前系统时间,up 1:53:启动了1小时53分钟,2 users:2个用户登录,load:1、5、15分钟负载
-
第二行:Tasks:241个进程,1 running:1个进程子在运行,170 sleeping:174个进程睡眠,0个停止进程,0个僵尸进程
-
第三行:%Cpu(s):CPU使用率,us:用户CPU使用率,sy:系统CPU使用率,ni:高优先级进程占用CPU时间百分比,id:空闲CPU率,wa:IO等待CPU占用率,hi:CPU硬件中断率,si:CPU软件中断率,st:强制等待占用CPU率
-
第四、五行:Kib Mem:物理内存,total:总量,free:空闲,used:使用,buff/cache:buff和cache占用。KibSwap:虚拟内存(交换空间),total:总量,free:空闲,used:使用,buff/cache:buff和cache占用
- PID:进程id
- USER:进程所属用户
PR:进程优先级,越小越高 - NI:负值表示高优先级,正表示低优先级
- VIRT:进程使用虚拟内存,单位KB
- RES:进程使用物理内存,单位KB
- SHR:进程使用共享内存,单位KB
- S:进程状态(S休眠,R运行,Z僵死状态,N负数优先级,I空闲状态)%CPU:进程占用CPU率
- %MEM:进程占用内存率
- TIME+:进程使用CPU时间总计,单位10毫秒
- COMMAND:进程的命令或名称或程序文件路径
top命令选项
top命令也支持选项
- 比如,让进程信息1s刷新一次
shell
top -d 1
- 让进程刷新输出5次后退出
shell
top -n 5
可以发现,5次后自动退出了
- 也可以配合一起使用,比如每次5s刷新,刷新3次后退出:
shell
top -d 5 -n 3
top交互式选项
当top以交互式运行(非-b选项启动),可以用以下交互式命令进行控制
- 比如,输入top命令后,按下h可以进入帮助页面
shell
top
- 按下P可以按照CPU占有率进行从大到小进行排序
4.2 磁盘信息监控
使用df命令,可以查看硬盘的使用情况
语法:
df [-h]
- 选项:-h,以更加人性化的单位显示
可以观察到使用-h的区别:
shell
df -h
磁盘信息监控
可以使用iostat查看CPU、磁盘的相关信息
语法:
iostat [-x] [num1] [num2]
- 选项:-x,显示更多信息
- num1:数字,刷新间隔,num2:数字,刷新几次
使用前需要下载sysstat
shell
sudo apt install -y sysstat
监控当前磁盘信息:
shell
iostat -x
可以查看到CPU相关的信息
具体的信息如下:
- rrqm/s: 每秒这个设备相关的读取请求有多少被Merge了(当系统调用需要读取数据的时候,VFS将请求发到各个FS,如果FS发现不同的读取请求读取的是相同Block的数据,FS会将这个请求合并Merge, 提高IO利用率, 避免重复调用);
- wrqm/s: 每秒这个设备相关的写入请求有多少被Merge了。
- rsec/s: 每秒读取的扇区数;sectors
- wsec/: 每秒写入的扇区数。
- rKB/s: 每秒发送到设备的读取请求数
- wKB/s: 每秒发送到设备的写入请求数
- avgrq-sz 平均请求扇区的大小
- avgqu-sz 平均请求队列的长度。毫无疑问,队列长度越短越好。
- await: 每一个IO请求的处理的平均时间(单位是微秒毫秒)。
- svctm 表示平均每次设备I/O操作的服务时间(以毫秒为单位)
- %util: 磁盘利用率
4.3 网络状态监控
可以使用sar命令查看网络的相关统计(sar命令非常复杂,这里仅简单用于统计网络)
语法:
sar -n DEV num1 num2
- 选项:-n,查看网络,DEV表示查看网络接口
- num1:刷新间隔(不填就查看一次结束),num2:查看次数(不填无限次数)
比如,我们可以查看当前网络的相关统计,每3s刷新一次,共查看2次
shell
sar -n DEV 3 2
信息解读:
- IFACE 本地网卡接口的名称
- rxpck/s 每秒钟接受的数据包
- txpck/s 每秒钟发送的数据包
- rxKB/S 每秒钟接受的数据包大小,单位为KB
- txKB/S 每秒钟发送的数据包大小,单位为KB
- rxcmp/s 每秒钟接受的压缩数据包
- txcmp/s 每秒钟发送的压缩包
- rxmcst/s 每秒钟接收的多播数据包