- 发布日期
Linux实用操作(二):软连接、时间、网络身份与固定 IP
- 作者
- 姓名
- 缘
- 社交账号
文章目录
本篇学习范围
上一章解决了“怎样在系统中安装并管理服务”。接下来要解决的是:怎样让文件、时间和一台 Linux 主机在网络中有稳定、可理解的身份。
本篇按下面这条关系展开:
软连接 → 正确引用文件
日期 / 时区 / 时间同步 → 正确记录时间
IP / 主机名 / hosts → 正确定位主机
虚拟网络配置 → 让地址长期稳定
固定 IP 部分保留课件中 VMware + CentOS 7 的实际操作。它不是所有 Linux 的唯一写法,因此会明确标记哪些是课程环境的旧式网络脚本配置,哪些是通用概念。
软连接:给路径起一个可维护的别名
软连接(symbolic link,也叫符号链接)可以理解为 Windows 的“快捷方式”:链接本身保存的是另一个路径,而不是复制目标文件内容。
课件的命令格式:
ln -s 被链接文件或文件夹 目的地
其中 -s 表示创建软连接。若省略它,ln 默认尝试创建硬连接;硬连接和软连接的限制不同,本课程这里应明确使用 -s。
例如:
# 在当前用户家目录下,为配置文件创建一个快捷入口
ln -s /etc/yum.conf ~/yum.conf
# 为目录创建快捷入口
ln -s /etc/yum ~/yum
查看时,ls -l 会把它显示为以 l 开头的类型,并用 -> 指出目标:
lrwxrwxrwx 1 alice alice ... yum.conf -> /etc/yum.conf
使用软连接时有四个要点:
- 推荐使用绝对路径。 相对路径会相对于“链接所在目录”解释,移动链接后很容易失效。
- 软连接不复制数据。 修改链接等同于访问目标;删除链接通常不会删除目标。
- 目标可以不存在。 这会形成“悬空链接”,创建时未必报错,但后续访问会失败。因此先确认目标路径更稳妥。
- 目标移动或删除后链接会失效。 用
ls -l 链接名和readlink -f 链接名排查实际指向。
日期、时区与时间同步
日志、证书有效期、定时任务和分布式系统都会依赖时间。先区分三个概念:
| 概念 | 解决的问题 |
|---|---|
| 系统时间 | 当前机器认为“现在几点”。 |
| 时区 | 如何把时间显示为当地时间,例如 Asia/Shanghai。 |
| 时间同步 | 通过 NTP 等服务定期校准时钟,避免机器逐渐漂移。 |
date:显示、格式化与计算时间
基础命令:
date
课件中的通用格式:
date [-d] [+格式化字符串]
常用格式化占位符如下:
| 写法 | 含义 | 示例用途 |
|---|---|---|
%Y | 四位年份 | 2026 |
%y | 两位年份 | 26 |
%m | 月份 | 09 |
%d | 日期 | 04 |
%H | 24 小时制小时 | 21 |
%M | 分钟 | 40 |
%S | 秒 | 08 |
%s | Unix 时间戳(从 1970-01-01 UTC 起的秒数) | 常用于程序和日志关联。 |
例如:
date '+%Y-%m-%d %H:%M:%S'
date +%s
-d 用于对给定时间进行解析或计算,含空格的表达式应加引号:
date -d 'next day'
date -d '+1 month'
date -d '2026-09-04 08:30:00'
课件还用 %Y%m%d 统一输出日期,并分别演示前后一天、前后一个月和前后一年:
date -d "+1 day" +"%Y%m%d"
date -d "-1 day" +"%Y%m%d"
date -d "-1 month" +"%Y%m%d"
date -d "+1 month" +"%Y%m%d"
date -d "-1 year" +"%Y%m%d"
date -d "+1 year" +"%Y%m%d"
当格式字符串中包含空格时必须用引号,例如 date "+%Y-%m-%d %H:%M:%S";即使没有空格,统一加引号也能避免 Shell 对特殊字符作意外解释。
设置时区:保留课程写法,也认识现代写法
课件在 CentOS 7 环境中通过替换 /etc/localtime 的软连接设置上海时区:
sudo rm -f /etc/localtime
sudo ln -s /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
这两条命令需要管理员权限。第一条会删除原有的时区文件或链接,执行前可以先查看当前状态:
ls -l /etc/localtime
date
在采用 systemd 的较新发行版上,优先使用更明确的接口通常更安全:
sudo timedatectl set-timezone Asia/Shanghai
timedatectl
两种方式的目标相同:让本机以 Asia/Shanghai 解释本地时间。不要把“改时区”误当成“校准系统时钟”。
NTP 时间同步
课件使用 ntp 服务:
sudo yum -y install ntp
sudo systemctl start ntpd
sudo systemctl enable ntpd
需要立刻手工校时时,课件示例为:
sudo ntpdate -u ntp.aliyun.com
-u 表示使用非特权端口发起校时请求,在某些权限或网络条件下更容易工作。现代 RHEL / Ubuntu 往往由 chronyd、systemd-timesyncd 或其他时间服务负责同步;不要在不了解当前系统的情况下同时启动多个时间同步服务。先检查:
timedatectl status
systemctl status ntpd chronyd systemd-timesyncd
IP、主机名与 hosts:一台主机怎样被定位
IPv4 和网卡信息
IPv4 地址由四段十进制数组成,每段范围是 0 到 255,例如:
192.168.88.130
在课件的 CentOS 环境中,用下面命令查看网卡和地址:
ifconfig
如果命令不存在,可安装提供它的工具包:
sudo yum -y install net-tools
新系统更推荐同时会用:
ip addr
ip route
ifconfig 是传统工具,ip 属于现代 iproute2 工具集;两者看到的是同一类网络事实,只是输出形式不同。
127.0.0.1 和 0.0.0.0 不是一回事
| 地址 | 常见含义 | 不能误解成 |
|---|---|---|
127.0.0.1 | IPv4 回环地址,只回到当前机器;localhost 常解析到它或 IPv6 回环地址。 | 局域网中其他主机可访问的地址。 |
0.0.0.0 | 语义依上下文变化:服务监听时常指“所有本机 IPv4 网卡”;路由中可指默认路由;防火墙规则中可能表示任意地址。 | 一个可像普通主机 IP 一样直接连通的地址。 |
例如 netstat 或 ss 出现 0.0.0.0:6000 时,通常表示该程序监听本机所有 IPv4 接口的 6000 端口,而不是“服务器的 IP 就是 0.0.0.0”。
查看和设置主机名
hostname
sudo hostnamectl set-hostname 新主机名
hostnamectl set-hostname 会写入持久化配置。设置后重新登录终端,提示符通常才会完整显示新名字。主机名用于人类辨识、日志和局域网访问;它不自动替代 DNS 配置。
/etc/hosts 和 DNS 解析
当输入一个域名或主机名时,系统需要把名称解析为 IP。课件强调的顺序是:
/etc/hosts 本地静态映射 → DNS 查询
因此可以在 Linux 客户端的 /etc/hosts 写入:
192.168.88.130 linux-server
之后通过名称测试:
ping -c 2 linux-server
Windows 的本地 hosts 文件通常位于:
C:\Windows\System32\drivers\etc\hosts
修改 hosts 适合实验环境、临时调试或内部固定映射;它需要在每台客户端分别维护,不能取代正式 DNS。保存后可用 getent hosts linux-server、ping 或 curl 验证解析到了预期地址。
VMware + CentOS 7 固定 IP:从虚拟网络到来宾机配置
固定 IP 的本质不是“挑一个顺眼的地址写进去”,而是让以下几项彼此匹配:
VMware 的 VMnet8 子网
↓
NAT 网关地址、子网掩码、DHCP 地址池
↓
Linux 网卡的 IPADDR / NETMASK / GATEWAY / DNS
课件示例采用:
| 项目 | 课件示例 |
|---|---|
| NAT 网络 | VMnet8 |
| 子网 | 192.168.88.0 |
| 子网掩码 | 255.255.255.0 |
| NAT 网关 | 192.168.88.2 |
| Linux 固定地址 | 192.168.88.130 |
这些数字仅是示例。你的 VMware 可能已使用另一网段;不要把 192.168.88.130 配到不属于本机 VMnet8 子网的环境中,也不要和 DHCP 正在租出的地址冲突。
1. VMware Workstation:确认 VMnet8 NAT 网络
课件操作路径:
Edit → Virtual Network Editor → Change Settings → 选择 VMnet8
在 VMnet8 中确认:
- 使用 NAT 模式;
- 子网地址和子网掩码与计划一致;
- 打开 NAT Settings,确认网关地址;
- DHCP 可保持开启,但固定 IP 要避开其地址池,或在 DHCP 侧做保留。
改完虚拟网络后,再配置来宾机。先改来宾再改 VMnet8,很容易让网关和地址段不匹配。
2. CentOS 7:编辑 ifcfg-ens33
这是课程中 CentOS 7 网络脚本写法,网卡名以 ens33 为例:
sudo vim /etc/sysconfig/network-scripts/ifcfg-ens33
可按课件配置为:
TYPE="Ethernet"
PROXY_METHOD="none"
BROWSER_ONLY="no"
BOOTPROTO="static"
DEFROUTE="yes"
IPV4_FAILURE_FATAL="no"
IPV6INIT="yes"
IPV6_AUTOCONF="yes"
IPV6_DEFROUTE="yes"
IPV6_FAILURE_FATAL="no"
IPV6_ADDR_GEN_MODE="stable-privacy"
NAME="ens33"
UUID="保留本机原有 UUID,不要照抄别人的值"
DEVICE="ens33"
ONBOOT="yes"
IPADDR="192.168.88.130"
NETMASK="255.255.255.0"
GATEWAY="192.168.88.2"
DNS1="192.168.88.2"
关键字段解释:
| 字段 | 作用 |
|---|---|
BOOTPROTO="static" | 不再由 DHCP 自动获取 IPv4 地址。 |
ONBOOT="yes" | 系统启动时启用此网卡。 |
IPADDR | 来宾机计划使用的固定 IPv4 地址。 |
NETMASK | 子网掩码,应与 VMnet8 匹配。 |
GATEWAY | NAT 网关地址。 |
DNS1 | 域名解析服务器;课件用 NAT 网关作为 DNS 转发入口。 |
UUID | 网卡连接的本机唯一标识,应保留当前机器已有值。 |
保存后应用课程中的网络服务重启方式:
sudo systemctl restart network
ifconfig
然后按层次验证:
# 先确认网卡已有预期 IP
ip addr show ens33
# 再确认默认路由指向预期网关
ip route
# 测试网关连通性
ping -c 2 192.168.88.2
# 测试域名解析和外网访问
ping -c 2 www.baidu.com
远程 SSH 操作网络配置前尤其要谨慎:重启网络可能直接断开当前会话。最好打开 VMware 控制台,或先保留可回滚的配置副本。
3. 新系统为何找不到 ifcfg-ens33 或 network
RHEL/CentOS Stream、Rocky、AlmaLinux 的新版以及 Ubuntu 可能使用 NetworkManager / nmcli 或 Netplan,网卡也可能叫 ens160、enp0s3、eth0 等。先用以下命令确认环境:
ip link
systemctl status NetworkManager network
也就是说,课件这一节要掌握的是“IP、掩码、网关、DNS 必须成套匹配”,而不是把 ifcfg-ens33 当成所有 Linux 的固定文件名。
4. VMware Fusion:课件中的 macOS 宿主机改网段步骤
课件还给出 VMware Fusion 的宿主机配置思路。它会直接改 Fusion 偏好目录下的网络文件,因此应先备份,并以管理员身份执行:
sudo su -
cp /Library/Preferences/VMware\ Fusion/networking /Library/Preferences/VMware\ Fusion/networking.backup
vim /Library/Preferences/VMware\ Fusion/networking
在包含 VNET_8_HOSTONLY_SUBNET 的配置项中,课件示例设为:
answer VNET_8_HOSTONLY_SUBNET 192.168.88.0
接着备份并编辑 NAT 配置:
cp /Library/Preferences/VMware\ Fusion/vmnet8/nat.conf /Library/Preferences/VMware\ Fusion/vmnet8/nat.conf.backup
vim /Library/Preferences/VMware\ Fusion/vmnet8/nat.conf
在 [host] 与 # NAT gateway address 附近,将示例网关设为:
ip = 192.168.88.2
netmask = 255.255.255.0
不同 Fusion 版本的文件位置、自动生成机制和配置格式可能不同,因此不要机械按“第 11 行”修改;应搜索键名、确认已有值,并保留备份。重新启动 Fusion 或相关虚拟网络服务后,再使用上一节的来宾机配置。
本篇命令清单
# 软连接
ln -s /etc/yum.conf ~/yum.conf
ln -s /etc/yum ~/yum
# 时间
date
date -d 'next day'
date '+%Y-%m-%d %H:%M:%S'
date +%s
sudo timedatectl set-timezone Asia/Shanghai
sudo yum -y install ntp
sudo systemctl start ntpd
sudo systemctl enable ntpd
sudo ntpdate -u ntp.aliyun.com
# 网络身份
ifconfig
sudo yum -y install net-tools
hostname
sudo hostnamectl set-hostname 新主机名
# CentOS 7 固定 IP 应用和检查
sudo systemctl restart network
ip addr
ip route
下一篇会把网络从“地址与身份”推进到“连通性、端口和进程”:如何确认一台主机可达、一个端口由谁监听、一个异常进程该怎样安全结束。