Skip to content

系统初始化与目录结构

新机器初始化的几个基本步骤:确认系统版本、设置主机名、同步时间、了解目录结构。这些是后续所有操作的基础,排障时也经常需要回到这些信息。

一、发行版

Linux 服务器常见的发行版大致分为两个系列。不同系列的命令有差异,比如安装软件时 RHEL 系用 yum/dnf,Debian 系用 apt。

系列常见发行版包管理服务管理
RHEL 系RHEL、CentOS、Rocky、AlmaLinuxrpm / yum / dnfsystemd
Debian 系Debian、Ubuntudpkg / aptsystemd

查看当前系统的版本信息:

bash
cat /etc/os-release   # 发行版名称、版本号
uname -a              # 内核版本、架构
hostnamectl           # 主机名、系统信息

/etc/os-release 是 freedesktop 规范的一部分,主流发行版都遵循。uname -a 看内核版本,有时候发行版相同但内核版本不同,命令参数也可能不一样。

排障时先把这两个命令的输出贴出来,能让后续的排查命令更准确。

二、首次登录

登录一台新机器后,先确认当前用户身份和登录来源:

bash
whoami     # 当前登录的用户名
id         # uid、gid、所属组
w          # 当前在线用户及其操作
last -n 5  # 最近 5 条登录记录

id 的输出比 whoami 更完整——除了用户名,还能看到 uid、gid 和附加组列表。排查权限问题时,用户名本身不能说明全部权限,要看组关系。

w 能看到当前有哪些用户在登录、从哪个 IP 来的、正在执行什么命令。last 看历史登录记录。如果在新机器上发现不认识的登录来源,需要保留记录再做处理。

三、主机名

主机名用来在服务器之间区分身份。如果没有规划,多台机器都叫 localhost,批量管理和排查时容易混淆。

bash
hostname                       # 查看当前主机名
hostnamectl status             # 查看完整的主机名信息
hostnamectl set-hostname web-01  # 设置新主机名

命名通常遵循一定的规范,比如 业务名-编号web-01mysql-02),有的团队会在前面加上环境标识(prod-web-01)。具体用哪种看团队约定,重点是保持统一。

主机名修改后,建议同步检查 /etc/hosts 里是否有对应的解析记录,部分服务在启动时会依赖本机名解析。

四、时间和时区

系统时间不准确会影响很多组件:日志时间戳错乱、TLS 证书校验失败、定时任务在不预期的时间执行、集群节点间时间偏差导致数据不一致。

bash
timedatectl                        # 查看时区、NTP 状态、当前时间
timedatectl set-timezone Asia/Shanghai  # 设置时区

时间同步服务推荐 chrony,比传统的 ntpd 同步更快、更适合偶尔断网的场景:

bash
# RHEL / CentOS / Rocky
yum install chrony -y
systemctl enable --now chronyd

# Ubuntu / Debian
apt install chrony -y
systemctl enable --now chrony

检查同步状态:

bash
chronyc sources -v     # 查看时间源列表和状态
chronyc tracking       # 查看当前同步的详细指标

chronyc sources -v 输出的 ^* 表示当前正在使用的时间源,^+ 表示候选源。如果所有源前面都是 ^?,说明没有成功连接到任何 NTP 服务器。

容器环境里需要注意:容器默认会继承宿主机的系统时间,但它自己的时区配置可能和宿主机不一样。遇到过宿主机时区是 Asia/Shanghai,容器里还是 UTC,两边日志时间对不上。

五、目录结构

Linux 的目录结构遵循 FHS(Filesystem Hierarchy Standard)。不需要全部背诵,但几个高频目录应该熟悉。

/etc 集中了几乎所有系统和服务的配置文件。改配置、备份配置、排查"配置为什么不生效"时都会经常访问这个目录。

/var 存放运行时数据,包括日志(/var/log)、缓存(/var/cache)、锁文件(/var/lock)等。日志目录最容易满,需要定期清理或做 logrotate。

/opt/usr/local 的区别:/opt 通常放第三方或独立的软件包,/usr/local 放手工编译安装的软件。实际使用中,很多运维习惯把自建服务放在 /opt 下,再配合软链接做版本管理。

/proc/sys 是虚拟文件系统,不占用磁盘空间,内容由内核在运行时动态生成。/proc 里的信息在排障时经常用到——/proc/cpuinfo/proc/meminfo/proc/loadavg/proc/PID/cmdline 等等。

/tmp 是临时文件目录。有一部分发行版配置了重启后清空 /tmp(通过 tmp.mount 或 systemd-tmpfiles),所以重要的东西不适合长期放在这里。

几个常用目录速查:

目录用途
/etc系统和服务配置
/var/log各类日志
/opt第三方软件
/usr/local手工编译/部署的软件
/home普通用户家目录
/rootroot 用户家目录
/tmp临时文件
/proc内核和进程信息(虚拟)
/sys设备和内核对象(虚拟)
/dev设备文件

六、新机器基础检查

下面这些命令只读取信息、不会修改系统,新机器到手可以放心跑一遍:

bash
cat /etc/os-release   # 系统版本
uname -r              # 内核版本
hostnamectl           # 主机名和系统信息
timedatectl           # 时区和时间状态
ip addr               # 网卡和 IP
ip route              # 路由表
df -h                 # 磁盘使用情况
free -h               # 内存使用情况

这些信息也是交接机器时需要收集的基本资料,后面做初始化脚本也基本从这里开始。