Appearance
系统初始化与目录结构
新机器初始化的几个基本步骤:确认系统版本、设置主机名、同步时间、了解目录结构。这些是后续所有操作的基础,排障时也经常需要回到这些信息。
一、发行版
Linux 服务器常见的发行版大致分为两个系列。不同系列的命令有差异,比如安装软件时 RHEL 系用 yum/dnf,Debian 系用 apt。
| 系列 | 常见发行版 | 包管理 | 服务管理 |
|---|---|---|---|
| RHEL 系 | RHEL、CentOS、Rocky、AlmaLinux | rpm / yum / dnf | systemd |
| Debian 系 | Debian、Ubuntu | dpkg / apt | systemd |
查看当前系统的版本信息:
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-01、mysql-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 | 普通用户家目录 |
/root | root 用户家目录 |
/tmp | 临时文件 |
/proc | 内核和进程信息(虚拟) |
/sys | 设备和内核对象(虚拟) |
/dev | 设备文件 |
六、新机器基础检查
下面这些命令只读取信息、不会修改系统,新机器到手可以放心跑一遍:
bash
cat /etc/os-release # 系统版本
uname -r # 内核版本
hostnamectl # 主机名和系统信息
timedatectl # 时区和时间状态
ip addr # 网卡和 IP
ip route # 路由表
df -h # 磁盘使用情况
free -h # 内存使用情况这些信息也是交接机器时需要收集的基本资料,后面做初始化脚本也基本从这里开始。