Writing
接手 Debian 或 Ubuntu 主机,先看名称、时间和磁盘
不急着调优或清理,先确认主机名、时间、语言环境,以及磁盘空间和 inode 是否处于可解释的状态。
维护记录里的名字对不上当前机器、两份日志差了几个小时、磁盘还有余量却创建不了文件——这些问题都值得在调整服务前看一眼。下面的命令适用于使用 systemd 的 Debian、Ubuntu 主机;容器和裁剪系统可能没有对应服务。
主机名要能对应到记录
hostnamectl 会把主机名、操作系统和内核等信息放在一起:
hostnamectl
cat /etc/hostname
把输出与监控、日志和运维记录对应起来。如果需要改名,先确认 DNS、自动化脚本、集群或证书有没有引用旧名。hostnamectl set-hostname 只调整本机名称,不会替你更新这些外部引用;云主机还要检查 cloud-init 是否会在启动时重设名称。改名应作为单独变更安排,而不是基础检查的附带动作。
顺便用 cat /etc/os-release 记录发行版及版本。Debian 和 Ubuntu 的命令看起来相近,默认服务和配置位置却未必相同,操作记录不能只凭外观照搬。
时区正确,不等于时钟已经同步
很多排障会按时间线还原事件,先看:
timedatectl status
timedatectl timesync-status
前一条展示时间、时区和同步状态。timesync-status 专门查询 systemd-timesyncd,不是所有 NTP 客户端的统一入口;主机使用 chrony 时,应改查 chronyc tracking、chronyc sources -v,不要因为前一条查询失败就另启一套时间同步服务。
NTP service: active 和 System clock synchronized: yes 回答的也不是同一个问题。还应核对时间源和偏差,尤其是域成员、证书认证及依赖准确时间的任务。修改时区只改变时间的解释与显示,不是校准时钟;日历定时任务也可能因此换一个实际触发时刻。
locale 会进入脚本的运行环境
locale 会影响命令输出的语言、排序和字符处理,一些脚本还会直接解析命令输出。检查命令很简单:
locale
locale -a
前者显示当前会话的设置,后者列出可用的 locale。Debian 系通常使用 locale-gen 和 update-locale 管理相关配置,但系统默认值不一定等于某个服务的实际环境。脚本若依赖固定的英文输出,可为那条命令显式指定 LC_ALL=C;处理中文文件名或文本时则要确认编码需求,不能把这一设置无差别地套给所有任务。
容量和 inode 分开看
df -h 看各挂载点的容量与使用率,df -i 看 inode。ext4 的 inode 总数受到文件系统创建时配置及大小的限制,大量小文件可能先耗尽 inode,磁盘空间仍有余量却无法新建文件。不同文件系统的 inode 分配方式不同,不能只用这一项概括所有写入失败。
df -hT
df -i
findmnt
findmnt -T /var/log
findmnt 能补上“这个路径实际挂在哪个文件系统”的信息,避免把容器挂载、网络盘或单独的数据卷误判成根分区问题。发现使用率高时,先定位增长来源并保留必要日志;不要把 rm -rf、全盘清缓存或强制日志轮转当成例行动作。删掉证据后,磁盘可能暂时好看了,问题反而更难解释。
findmnt -T /var/log 可以直接查日志目录归属的挂载点。若容量和 inode 都未耗尽,继续检查文件系统是否只读、账户配额及目录权限;不要为了得到一个“磁盘正常”的结论而忽略实际报错。交接时把异常挂载点、时间源和需要单独安排的变更留下来即可。
参考资料:
- Ubuntu Server CLI 参考:
hostnamectl、timedatectl、df、systemctl等基础检查命令。 - systemd timedatectl 手册:时区和时间同步状态的查询与设置接口。
- Debian Reference:Debian 系 locale 的概念和系统使用约定。
- GNU coreutils df 手册:容量与 inode 统计字段的含义。
- chrony 文档:
tracking与sources的查询含义。