零
更新中
先看目录
我在Linux学习过程中遇到的问题
Linux里"下载命令"和"下载软件包"有区别吗
本质上"下载命令"和"下载软件包"都是一个东西,没有区别
apt install python3这个命令,本质上就是 :
你的电脑向"Linux官方软件服务器(Linux官方仓库,官方服务的远程软件服务器)"发送下载请求--->下载Python3的软件包--->自动安装到你的系统--->安装完成后,你就可以使用python3这个命令了
为什么"下载软件包"与"下载命令"没有区别
先说一句绝对正确的话 : 在Linux中,所有的命令,本质都是软件包,所有你能执行的软件本质上都是命令------命令和软件是"一体两面"的东西,只是叫法不一样
下载软件包 = 为了获取对应的命令
能执行命令 = 已经安装好了对应的软件包
apt下载过程
我使用的Linux发行版是Ubuntu
以apt install python3为例,整个过程是这样的 :
- 我的电脑向位置在欧洲的Ubuntu官方服务器(默认源)发送请求-------(准确来说应该是 : 我的电脑会查看/etc/apt/sources/list这个文件中的默认下载地址是哪里,向这个地址的服务器发送请求)
- 从这个服务器下载python3对应的完整软件包+所有运行依赖
- 自动完成软件包的解压,安装,配置
- 安装完成后,python3命令就可以使用了
为什么在国内使用 默认源 速度慢
源=软件仓库的服务器地址
Ubuntu默认源=欧洲的Ubuntu官方服务器地址
国内网络访问欧洲服务器,跨洋链路长,延迟高,宽带受限,导致下载软件包时速度经常只有几十KB/s,甚至出现下载失败/校验错误等问题(总之就是 : 物理距离远 + 跨国网络链路限制)
怎么解决"默认源"下载数据慢的问题
国内镜像源-------简单来说,就是国内的公司/机构把Ubuntu官方服务器里的所有软件包,完整的复制到自己的国内服务器上,形成的"官方内容副本"
为什么国内镜像源下载快?
这个可以用「快递送货」的例子理解:
默认欧洲源 :相当于你在国内网购,商家却从欧洲仓库发货,快递要跨越大洋,路上要走几天,速度很慢
国内镜像源:相当于商家在国内建了个仓库,和欧洲仓库里的商品一模一样,你下单后直接从国内仓库发货,当天就能到,速度飞快
国内镜像源好处 :
- 速度快---------在国内镜像源下载软件包不需要跨洋,国内网络链路短,宽带充足,所以下载速度从[几十KB/s]直接跳到[几 MB/s ~ 几十 MB/s]
- 完全免费且合法---------这个是公益服务
- 内容和官方源完全一致---------国内镜像源会定期和官方Ubuntu服务器同步,软件包完全一致
- 不改变任何命令用法---------更换镜像源之后,apt install/update等命令的用法完全不变,只是下载地址变了
怎么配置清华大学镜像源
配置清华镜像源本质就是把/etc/apt/sources.list里的下载地址,替换为清华大学的国内服务器地址
(配置完成之后pat install的下载速度直接拉满)
- 1.查看Ubuntu版本代号(确认版本代号是多少)
- 2.备份原来的默认源文件(保命用的)
- 3.打开源配置文件进行编辑
- 4.清空所有内容+粘贴清华镜像源地址(不同版本代号的Ubuntu,粘贴的内容不一样)
- 5.保存之后退出编辑器
- 6.刷新源缓存(如新配置生效,如果没有error就是成功了)
- (这个修改镜像源的过程,和apt install命令执行过程有异曲同工之妙)
ip地址
ip(internet protocol address) : 网络部分 + 主机部分
IP地址的组成
网络部分 : 用来标识一个网络,代表ip地址所属网络(具体怎么标识一个网络,后面再说)
主机部分 : 用来去区分一个网络中的不同主机,能唯一标识网段上的某台设备
子网掩码(网络掩码) : 区分一个ip地址中的网络部分和主机部分
eg :
ip : 192.168.1.1/24
这个24代表32位中有24位是1,固定住前24位是网络位 后面的范围是[0,255]
一共256个机位,减去特殊的两个,还有254个可用的机位
假设网络位为n位,主机位有32-n位,范围[0,232-n-1] 一共232-n-2个主机位
IP地址的分类
IP地址总数是232个
127.0.0.1是永远指向本机
按照第一个十进制段[1,255]分类 :A类 1~126 --------/8 默认子网掩码 : 255.0.0.0
B类 128~191 --------/16 默认子网掩码 : 255.255.0.0
C类 192~223 --------/24 默认子网掩码 : 255.255.255.0
...
这样分类可以通过IP地址的第一个十进制数,快速知道这个IP属于哪种规模的网络
网卡(network card)
网卡是电脑/服务器上面的一个硬件设备(现很多都集成在主板上),也可以是虚拟网卡(WSL中的虚拟网卡)
核心作用 :
- 1.是数据进出电脑的唯一通道(电脑要上网,要和其他电脑出数据,数据必须通过网卡"进出")
- 2.每一块网卡都有一个"全球唯一的物理地址MAC地址",相当于大门的身份证,全球唯一
子网掩码(网络掩码)
是和IP地址成对出现的一组数据(比如 : 255.255.255.0)
核心作用 : 把IP地址和子网掩码做"与运算",结果相同就是同一个局域网
网关(gateway)
是一个网络的出口设备,通常是路由器的IP地址(如 192.168.1.1)
核心作用 :
- 如果两台设备在同一个局域网,数据直接通过网卡互传,不需要网关
- 如果两台设备不在同一个局域网(比如 你要访问百度) : 数据必须先发给网关,再有网关转发到目标网络
以你的电脑要访问百度为例
- 你的电脑的IP地址(192.168.1.100)要访问百度服务器(公网IP 180.101.50.188)
- 子网掩码判断 : 你电脑IP和百度IP不在同一个局域网
- 你的电脑必须需要网关,先把数据包发给网关(比如路由器IP 192.168.1.1)
- 网关把数据发送给互联网,最终送到百度的服务器
- 百度服务器返回数据,再通过网关传回你的电脑
"在同一个网段"和"在同一个局域网"一样吗?
答案 : 不一样
一个局域网可以包含多个网段
一个路由器可以有多个网段
下面详细讲讲 :
路由器的核心功能之一 : 划分网段+转发不同网段的数据
举个具体的技术例子:
子网掩码规则:255.255.255.0(意思是 IP 地址前 3 段相同,就是同一个网段)
设备 A IP:192.168.1.100
设备 B IP:192.168.1.200
设备 C IP:192.168.2.50
按照规则 :
A和B属于同一个网段,可以直接通信,不需要网关
C和A不在同一个网段,通信需要经过网关转发
DNS(Domain Name System)域名解析系统
DNS是互联网的一项服务,是将域名和IP地址相互映射的一共分布式数据库
www.baidu.com----------DNS------>IP地址
到底是怎么从www.baidu.com------>百度IP地址
在浏览器访问www.baidu.com 系统会在Linux系统中检查/etc/hosts
文件中有没有对应关系的记录,有直接打开对应IP地址的网站,没有就来联网去DNS服务器询问是否有记录,找到百度服务器的IP地址
hostname主机名
bash
hostname # 显示主机名
hostnamectl set-hostname lixiangCP # 把主机名设置为lixinagCP
固定IP
当前我们虚拟机的Linux系统,其IP地址是通过DHCP服务获得
DHCP : 动态获得IP地址,即每一次重启一次设备后都会获取一次,导致IP地址频繁更换
ping命令
ping命令,检查指定的网络服务器是否是可连通状态
bash
ping -c num ip/主机名
# 检查服务器的IP地址/主机名的IP地址是否是联通的
wget(web get)命令
wget(从网络上获取文件),是非交互式的文件下载器,可以在命令行内下载网络文件
安装wget
bash
apt update && apt install wget -y
# 刷新软件商店 && 安装wget
使用wget命令
bash
wget https://ww.exapmle.com/test/txt
# 下载的文件会保存在当前终端所在的目录下
# 下载过程会显示进度条,文件大小,下载速度,剩余时间
# -b(background) 是后台下载,终端可以继续做其他事,会将日志写入到当前工作目录的wget-log文件,想看进度可以用tail -f wget-log查看
# -c(continue) 如果文件很大,用-c参数续传(中断后重新执行,从断电继续下载)
如果正在下载,想终止,就Ctrl + c,下载就终止了
bash
wget -O [新文件名] [文件URL]
# 不加-O,下载的文件名于服务器上面一样
# 加-O,下载的文件名命名位[新文件名]
URL(uniform resource locater 统一资源定位符)=网址
curl命令
curl(client url) : 客户端URL工具
核心 : 向指定的URL地址发送网络请求,并获取服务器 返回的内容
(既可以下载文件 ,也可以上传文件 ,发送请求 ,测试网站连通性 ,验证服务器状态)
curl的安装
bash
# 刷新并安装curl
apt update && apt install curl -y
使用curl命令
client uniform resource locator 客户端网址/客户端统一资源定位符
bash
curl www.baidu.com
# 终端直接输出www.baidu.com的全部HTL网页源代码
# 作用 : 快速验证网站是否可以正常访问+服务器是否返回内容,比ping更精准
# 对比ping : ping只是测试连通性,不关心服务器返回什么,curl是测试连通性+拿到服务器返回的实际内容,判断网页是否争夺能够打开
bash
curl -O url # 用于下载 url是网址
端口
计算机之间的通讯,IP地址只能锁定计算机,无法锁定一个具体的程序
通过端口可以锁定计算机上的具体程序
Linux系统有六万多个端口
分为公认端口,注册端口,动态端口
nmap(network mapper网络映射器)
用途 :
- 扫描局域网设备
- 检查端口开放/关闭
- 判断主机是否在线
- 查看服务器服务版本
安装nmap
bash
# 刷新软件商店 && 安装namp
apt update &&& apt install namp -y
nmap 127.0.0.1
127.0.0.1永远代表本机,等价于localhost
bash
# 用nmap扫描本机回环地址127.0.0.1
nmap 127.0.0.1
# 输出 :
Starting Nmap 7.80 ( https://nmap.org ) at 2026-01-16 19:33 CST # 开始nmap7,80在2026-01-16 19:33 CST
Nmap scan report for localhost (127.0.0.1) # nmap扫描报告对于localhost(127.0.0.1)
Host is up (0.0000020s latency). # 主机正常开机(延迟时间)
All 1000 scanned ports on localhost (127.0.0.1) are closed # 所有1000个被扫描的端口在本机上是关闭的
Nmap done: 1 IP address (1 host up) scanned in 0.08 seconds # nmap结束: 1个IP地址被扫描在0.008秒内
netstat(network statistics网络状态)
核心作用 : 查看本机(只看本机)所有网络接口,端口监听,网卡信息,路由表(不扫描外部设备,这是和nmap最核心区别)
已经有了ss命令,更加强大,所以直接学习ss命令
ss(socket statistics 套接字统计工具)命令
核心功能 : Linux系统原生的网络状态查询工具,直接读取内核网络数据
| 参数 | 中文作用 | 算法工程师使用场景 |
|---|---|---|
| -t(TCP) | 只显示 TCP 协议的套接字 / 连接信息 | 99% 的服务(SSH、Jupyter、TensorBoard)都用 TCP 协议,必加此参数 |
| -l(Listening) | 只显示 处于监听状态的端口 | 检查服务是否正常启动(比如 Jupyter 的 8888 端口是否在监听) |
| -n(Numeric) | 以纯数字形式显示 IP 地址和端口号,不解析域名 / 服务名 | 避免 DNS 解析卡顿,结果更简洁(比如直接显示 8888 而不是 jupyter) |
| -u(UDP) | 显示UDP协议的所有连接/端口 | |
| -4(IPv4) | 只显示IPv4协议的网络信息 | |
| -6(IPv6) | 只显示IPv6协议的网络信息 |
-tln 只显示本机上所有处于监听状态的TCP端口,且以纯数字形式输出
进程
ps(process)命令
bash
ps -e -f # 查看进程信息
# -e查看所有
# -f格式化显示
# 输出 :
UID PID PPID C STIME TTY TIME CMD
root 996 975 0 18:48 pts/0 00:00:00 su
root 1007 996 0 18:48 pts/0 00:00:00 bash
root 2402 1007 0 20:34 pts/0 00:00:00 ps -f
# 用户ID 进程ID 父进程(启动此进程的其他进程)ID 此进程的CPU占用率 starttime进程启动时间 启动此进程的终端信号 启动命令
kill命令
bash
kill -9 进程ID
# -9 表示强制关闭