缘博客
发布日期

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

使用软连接时有四个要点:

  1. 推荐使用绝对路径。 相对路径会相对于“链接所在目录”解释,移动链接后很容易失效。
  2. 软连接不复制数据。 修改链接等同于访问目标;删除链接通常不会删除目标。
  3. 目标可以不存在。 这会形成“悬空链接”,创建时未必报错,但后续访问会失败。因此先确认目标路径更稳妥。
  4. 目标移动或删除后链接会失效。ls -l 链接名readlink -f 链接名 排查实际指向。

日期、时区与时间同步

日志、证书有效期、定时任务和分布式系统都会依赖时间。先区分三个概念:

概念解决的问题
系统时间当前机器认为“现在几点”。
时区如何把时间显示为当地时间,例如 Asia/Shanghai
时间同步通过 NTP 等服务定期校准时钟,避免机器逐渐漂移。

date:显示、格式化与计算时间

基础命令:

date

课件中的通用格式:

date [-d] [+格式化字符串]

常用格式化占位符如下:

写法含义示例用途
%Y四位年份2026
%y两位年份26
%m月份09
%d日期04
%H24 小时制小时21
%M分钟40
%S08
%sUnix 时间戳(从 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 往往由 chronydsystemd-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.10.0.0.0 不是一回事

地址常见含义不能误解成
127.0.0.1IPv4 回环地址,只回到当前机器;localhost 常解析到它或 IPv6 回环地址。局域网中其他主机可访问的地址。
0.0.0.0语义依上下文变化:服务监听时常指“所有本机 IPv4 网卡”;路由中可指默认路由;防火墙规则中可能表示任意地址。一个可像普通主机 IP 一样直接连通的地址。

例如 netstatss 出现 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-serverpingcurl 验证解析到了预期地址。


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 中确认:

  1. 使用 NAT 模式;
  2. 子网地址和子网掩码与计划一致;
  3. 打开 NAT Settings,确认网关地址;
  4. 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 匹配。
GATEWAYNAT 网关地址。
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-ens33network

RHEL/CentOS Stream、Rocky、AlmaLinux 的新版以及 Ubuntu 可能使用 NetworkManager / nmcli 或 Netplan,网卡也可能叫 ens160enp0s3eth0 等。先用以下命令确认环境:

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

下一篇会把网络从“地址与身份”推进到“连通性、端口和进程”:如何确认一台主机可达、一个端口由谁监听、一个异常进程该怎样安全结束。