【Linux】IP地址、主机名、网络传输、进程管理、主机状态

一、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 每秒钟接收的多播数据包
相关推荐
-Harvey1 小时前
ubuntu为Docker配置代理
linux·ubuntu·docker
thehunters1 小时前
win10 ubuntu 使用Android ndk 问题:clang-14: Exec format error
android·linux·ubuntu
大丈夫立于天地间2 小时前
OSPF - 1类LSA(Router-LSA)
网络·网络协议·学习·信息与通信
黑客Jack2 小时前
网络安全应急响应技术原理与应用
网络·安全·web安全
黑客K-ing2 小时前
什么是黑客和白帽子
网络·安全·web安全
迷茫的小技术4 小时前
OSPF使能配置
运维·服务器·网络
寻找优秀的自己4 小时前
WebSocket 设计思路
网络·websocket·网络协议·golang
soragui4 小时前
【Ubuntu】想知道怎么通过命令行查看笔记本电池健康程度吗?
linux·ubuntu·电脑
云计算DevOps-韩老师5 小时前
【网络云SRE运维开发】2025第2周-每日【2025/01/07】小测-【第7章 GVRP链路捆绑】理论和实操
服务器·网络·计算机网络·云计算·运维开发
小学导航员5 小时前
centos服务器 /1ib64/libm.so.6: version “GLIBc 2.27’ not found 异常
linux·服务器·centos