缘博客
发布日期

Linux实用操作(三):网络请求、端口与进程管理

作者
  • 姓名
    社交账号

本篇学习范围

一台主机有 IP 之后,仍然可能“能 ping 不能访问”“端口没人监听”“服务卡住但不知道谁在运行”。这一篇把课件里的网络和进程工具串成一个排查链:

ping → 判断基础连通性
wget / curl → 发送实际网络请求
端口 → 确认服务入口
nmap / netstat → 从外部和本机观察端口
ps / kill → 找到并处置对应进程

所有扫描、探测和结束进程的命令都只应在自己拥有或获明确授权的系统上使用。


ping:检查基础可达性

课件命令格式:

ping [-c 次数] IP 或主机名

例如:

ping www.baidu.com
ping 192.168.88.2
ping -c 4 www.baidu.com

不带 -c 时,ping 通常会持续发送探测包;用 Ctrl + C 停止并查看汇总统计。-c 4 则只发送 4 次后自动结束,适合脚本、课堂验证和避免一直占着终端。

如何理解 ping 结果

ping 主要依赖 ICMP 回显,因此它能帮助确认:

  1. 名称能否解析(使用主机名时);
  2. 本机是否有路由能到达目标网络;
  3. 目标或中间网络是否允许 ICMP 回显。

但“ping 通”不等于 Web、SSH、数据库等服务一定正常;“ping 不通”也不必然代表机器宕机,防火墙可能只是禁止 ICMP。服务访问失败时,下一步应直接测试对应协议、端口或 HTTP 请求。


wgetcurl:把“能到”变成“实际请求成功”

wget:以下载为中心

课件格式:

wget [-b] URL

最简单的下载:

wget https://example.com/file.tar.gz

-b 表示后台下载:

wget -b https://example.com/file.tar.gz

后台模式会把日志写入当前目录下的 wget-log,终端可继续做其他操作。可以在另一个终端持续查看进度:

tail -f wget-log

Ctrl + C 可以退出 tail -f 的跟踪,不会停止后台下载。后台下载结束前,目标文件可能已出现但仍不完整,因此部署或解压前应检查下载日志、文件大小或校验和,而不是只看文件名存在。

curl:以请求和输出为中心

课件格式:

curl [-O] URL

例如:

# 把响应输出到终端
curl cip.cc

# 按远程文件名保存
curl -O https://example.com/file.tar.gz

-O(大写字母 O)表示使用远端 URL 中的文件名保存。没有 -O 时,curl 默认把响应内容直接输出到终端,特别适合查看接口返回、网页内容或一段文本。

wgetcurl 的取舍

工具更适合课件中需要掌握的点
wget直接下载文件、后台下载-b 后台,日志为 wget-log
curl发起 HTTP 请求、查看响应、按远端名下载-O 保存远端同名文件;不带它时输出响应。

两者都可能遇到 HTTPS 证书、代理、重定向、认证和网络限制。实际排错时先看状态码和报错信息,不要为了“让命令成功”随意跳过证书验证。


端口:IP 找到机器,端口找到程序

物理设备上的端口是网线、USB 等接口;网络中的端口是操作系统用来区分同一台主机上不同网络程序的编号。

一条网络连接可以简化理解为:

协议 + IP 地址 + 端口号

例如 Web 服务常使用 80443,SSH 常使用 22。端口范围是 1 到 65535,课件按用途分为:

范围分类说明
1–1023知名端口传统常用系统服务端口。非 root 进程在许多系统上不能直接绑定这些低端口。
1024–49151注册端口可由应用或厂商登记使用。
49152–65535动态 / 私有端口客户端临时连接和应用自定义端口常见。

端口号本身不是“服务身份保证”:程序可以配置到不同端口,防火墙也可能放行或阻断某个端口。因此排查要同时看监听程序、监听地址和防火墙规则。


nmapnetstat:分别从外部和本机看端口

nmap:探测目标开放端口

课件先安装 nmap

sudo yum -y install nmap

再扫描目标 IP:

nmap IP地址

例如只对自己的实验虚拟机扫描:

nmap 192.168.88.130

nmap 看到的是从扫描端视角可探测到的结果。端口显示为关闭、过滤或开放,都可能受目标服务状态、路由、防火墙和扫描方式影响。请不要对公共网络或未获许可的主机进行扫描。

netstat:查看本机监听与连接

课件使用 net-tools 提供的 netstat

sudo yum -y install net-tools
netstat -anp | grep 端口号

例如:

sudo netstat -anp | grep 6000

参数拆开看:

| 参数 | 含义 | | ---- | --------------------------------------------------- | ---------------------------- | | -a | 显示监听和非监听 socket。 | | -n | 以数字形式显示地址和端口,避免名称解析影响结果。 | | -p | 尝试显示 PID / 程序名;通常需要管理员权限才能看全。 | | | grep 6000 | 只保留包含端口号 6000 的行。 |

假如输出中出现:

tcp  0  0  0.0.0.0:6000  0.0.0.0:*  LISTEN  1234/program

可这样读:

  1. 0.0.0.0:6000:程序绑定到本机所有 IPv4 网卡的 6000 端口;
  2. LISTEN:它正在等待新的连接;
  3. 1234/program:PID 为 1234,程序名为 program

较新的系统也常用 ss,可作为 netstat 的替代观察工具:

sudo ss -lntp

但课件要求的核心仍是 netstat -anp | grep 端口号:先用端口找到 PID,再进一步核实进程。


进程:用 ps 定位,用 kill 有序结束

进程可以理解为“正在运行中的程序实例”。同一个程序可同时有多个进程,每个进程有唯一 PID(进程 ID)。

ps -ef:列出进程快照

ps -ef

常见字段如下:

字段含义
UID启动该进程的用户。
PID进程 ID,后续 kill 常用它定位目标。
PPID父进程 ID。
CCPU 使用相关的调度统计值。
STIME启动时间或日期。
TTY所属终端;? 常表示没有控制终端的后台进程。
TIME累计占用 CPU 时间。
CMD启动命令及参数。

筛选某个关键词:

ps -ef | grep tail
ps -ef | grep 30001

这里有一个初学者常见现象:输出里可能包含 grep tail 本身,因为 grep 也是一个短暂运行的进程。看到这一行不代表真的有另一个 tail 服务;应根据 CMD 和 PID 区分。

如果刚刚通过 netstat 找到 PID,也可以直接按 PID 过滤:

ps -fp 1234

这比只按模糊字符串 grep 更精确。

kill:先礼后兵

课件格式:

kill [-9] 进程号

例如:

kill 1234
kill -9 1234

不带信号时,kill 1234 通常发送可处理的终止信号,让程序有机会关闭文件、释放端口和清理临时资源。kill -9 1234 发送不可捕获、不可忽略的强制终止信号,应作为最后手段。

推荐顺序:

# 1. 再确认 PID 属于哪个程序、由谁启动
ps -fp 1234

# 2. 优先正常请求退出
kill 1234

# 3. 检查是否仍存在
ps -fp 1234

# 4. 确认无误且仍卡死时,才强制结束
kill -9 1234

不要把 kill -9 当作服务重启的默认做法。对数据库、下载任务、编辑器或写文件程序强制终止,可能造成未写完的数据、锁文件或恢复流程。


一条可复用的网络与进程排错链

当“某服务访问不了”时,可按下面顺序缩小问题范围:

# 1. 地址/路由层:目标能否基础连通
ping -c 4 目标IP或主机名

# 2. 应用层:若是 HTTP,实际请求返回什么
curl 目标URL

# 3. 本机服务层:端口是否在监听、PID 是谁
sudo netstat -anp | grep 端口号

# 4. 进程层:确认启动命令和父子关系
ps -fp PID

# 5. 必要时先优雅终止,再复查
kill PID

每一步都在回答不同问题。不要因为 ping 成功就跳过端口检查,也不要发现端口占用就直接 kill -9


本篇命令清单

# 连通性与请求
ping [-c 次数] IP或主机名
wget [-b] URL
curl [-O] URL

# 端口
sudo yum -y install nmap
nmap IP地址
sudo yum -y install net-tools
sudo netstat -anp | grep 端口号

# 进程
ps -ef
ps -ef | grep 关键词
kill 进程号
kill -9 进程号

下一篇进入日常运维收尾:用 topdfiostatsar 看资源,再理解环境变量、文件上传下载和压缩归档。