方案1:
在终端上可以使用下列命令完成hostname的修改
sudo hostname your-new-name
但这样修改后有一个问题,下次重启后此配置丢失;因此,需要进行下面的修改:
使用文本编辑工具,如vi修改/etc/hostname,使其包含你修改的hostname名字
sudo gedit /etc/hostname
同时,你需要修改/etc/hosts,并替换下面的行,使其包含最新的hostname的名字
127.0.1.1 your-old-hostname
方案2:
参考方案1,首先进行/etc/hostname和/etc/hosts的修改,修改完成后,使用service服务是hostname生效。
sudo /etc/init.d/hostname.sh start
那让我们一起看看hostname.sh完成了哪些工作
ubuntu@sv-33-71:~$ more /etc/init.d/hostname.sh
#! /bin/sh
### BEGIN INIT INFO
# Provides: hostname
# Required-Start:
# Required-Stop:
# Should-Start: glibc
# Default-Start: S
# Default-Stop:
# Short-Description: Set hostname based on /etc/hostname
# Description: Read the machines hostname from /etc/hostname, and
# update the kernel value with this value. If
# /etc/hostname is empty, the current kernel value
# for hostname is used. If the kernel value is
# empty, the value 'localhost' is used.
### END INIT INFO
PATH=/sbin:/bin
. /lib/init/vars.sh
. /lib/lsb/init-functions
do_start () {
[ -f /etc/hostname ] && HOSTNAME="$(cat /etc/hostname)"
# Keep current name if /etc/hostname is missing.
[ -z "$HOSTNAME" ] && HOSTNAME="$(hostname)"
# And set it to 'localhost' if no setting was found
[ -z "$HOSTNAME" ] && HOSTNAME=localhost
[ "$VERBOSE" != no ] && log_action_begin_msg "Setting hostname to '$HOSTNAME'"
hostname "$HOSTNAME"
ES=$?
[ "$VERBOSE" != no ] && log_action_end_msg $ES
exit $ES
}
case "$1" in
start|"")
do_start
;;
restart|reload|force-reload)
echo "Error: argument '$1' not supported" >&2
exit 3
;;
stop)
# No-op
;;
*)
echo "Usage: hostname.sh [start|stop]" >&2
exit 3
;;
esac
hostname.sh完成的就是从/etc/hostname中读取用户的配置,并调用hostname命令进行设置;此处考虑了异常的处理。
方案3
当然,你可以自己编写shell脚本来完成此项工作,change_hostname.sh脚本的内容如下:
#!/usr/bin/env bash
NEW_HOSTNAME=$1
echo $NEW_HOSTNAME > /proc/sys/kernel/hostname
sed -i 's/127.0.1.1.*/127.0.1.1\t'"$NEW_HOSTNAME"'/g' /etc/hosts
echo $NEW_HOSTNAME > /etc/hostname
service hostname start
su $SUDO_USER -c "xauth add $(xauth list | sed 's/^.*\//'"$NEW_HOSTNAME"'\//g' | awk 'NR==1 {sub($1,"\"&\""); print}')"
可以使用下面的命令,来完成hostname的修改
sudo ./change_hostname.sh new-hostname