CentOS 主机名配置技巧
一、核心概念与查看方式
hostnamectl statushostnamectl status --static|--transient|--prettyhostname二、按版本的高效做法
hostnamectl set-hostname <name>(等价于修改 /etc/hostname 并立即更新内核中的瞬态主机名)。hostnamectl set-hostname <name> --static|--transient|--pretty。hostnamectl status 或 hostname。hostname <name>(重启后失效)。HOSTNAME=<name>,然后 reboot 生效。三、实用技巧与排错清单
hostnamectl set-hostname <name> 后,注销并重新登录或新开终端即可看到新的提示符主机名。127.0.0.1 localhost localhost.localdomain <your-hostname>::1 localhost localhost.localdomain <your-hostname><本机IP> <your-hostname> <your-domain>。hostnamectl set-hostname <name> --static(在 DHCP 环境下可避免被覆盖)。sysctl kernel.hostname=<name> 改过内核参数,后续以 hostnamectl 或写入 /etc/hostname 为准,避免多处配置不一致。web-01.prod.example.com),避免下划线;美观名可用 hostnamectl set-hostname "Dev Server" --pretty 单独设置展示用名称。四、一键标准化脚本示例
#!/usr/bin/env bash
set -Eeuo pipefail
NEW_HOST="$1"
[[ -z "$NEW_HOST" ]] && { echo "Usage: $0 <new-hostname>"; exit 1; }
# 设置静态主机名(立即生效,持久化)
hostnamectl set-hostname "$NEW_HOST"
# 备份并替换 /etc/hosts 中的旧主机名(若存在)
HOSTS=/etc/hosts
BACKUP=${HOSTS}.bak.$(date +%F-%T)
cp -a "$HOSTS" "$BACKUP"
# 简单策略:替换 127.0.0.1 与 ::1 行中的旧主机名;追加本机IP映射(可按需调整)
sed -i.bak "/^127\.0\.0\.1[[:space:]]/ s/\\<$(hostname)\\>/$NEW_HOST/g" "$HOSTS"
sed -i "/^::1[[:space:]]/ s/\\<$(hostname)\\>/$NEW_HOST/g" "$HOSTS"
# 可选:如本机有固定 IP,追加一行(示例 eth0,请按实际网卡名调整)
# IP=$(ip -4 addr show scope global | awk '/inet /{print $2; exit}' | cut -d/ -f1)
# [[ -n "$IP" ]] && ! grep -qE "^$IP[[:space:]]" "$HOSTS" && \
# echo "$IP $NEW_HOST $(hostname -d 2>/dev/null || echo '')" >> "$HOSTS"
echo "Hostname set to: $(hostname)"
echo "Backup created: $BACKUP"
echo "Please re-login or open a new terminal to see the updated prompt."
./set-hostname.sh web-01.prod.example.com