Linux – How to rename a Linux host without needing to reboot for the rename to take effect

hostnamelinuxUbuntu

I searched for an answer to this question on serverfault and could not find it. I know it is possible, but I can't remember how to do it. How do I change a Linux host's hostname and get that change to take effect without a reboot?

I am using Ubuntu 16 and Ubuntu 18.

A big feature of Ubuntu is the graphical desktop and graphical system utilities. However, we are running Ubuntu in our production environment so we chose not to use the graphical desktop or utilities in order not to have those features consume resources we need in our production environment.

I know that to rename the host, I edit the files:

  • /etc/hostname
  • /etc/hosts

In the /etc/hostname one just replaces the current hostname (soon to be former hostname) with the new hostname.

Ubuntu in the /etc/hosts file has the line:

127.0.1.1 your-hostname your-hostname

It acts as bootstrapping while your host is booting up and establishing itself within your network. Prior to changing the hostname, your-hostname is the current (soon to be former hostname) and as a part of changing your host's hostname, one replaces that name with the new name.

What I am familiar with is executing the above two steps and then rebooting your host. But plenty of times, like with a production server, one would like to execute that rename, but not reboot one's host.

How can I change hostname on a host and get that change to take effect without rebooting the host?

Best Answer

You can change the kernel's idea of the hostname on a systemd-based system using the hostnamectl tool. For example:

hostnamectl set-hostname whatever

You can view the system's current idea of the hostname with:

hostnamectl             # equivalent to hostnamectl status

Keep in mind that this does not change a running process's idea of the hostname. Such a process would have to check the hostname again in order to be updated, and almost no process does. Thus such a process would need to be restarted. In order for every process to begin using the new hostname, they must be restarted. It's generally easier to just reboot the system than to restart every service individually.