Change hostname in Linux

Changing hostname in Linux based system requires root privileges.

If you want to change hostname in current session, you can use hostname command with the parameter of new hostname:

$ sudo hostname new-hostname

But most of the time you want to change hostname permanently. To do this, you have to enter new hostname into correct file which can be different for distributions.

For the Debian based distributions, you must change the contents of the /etc/hostname file with the new hostname:

$ cat /etc/hostname
SRV-DB-01

For the Redhat based distributions, you must change the HOSTNAME variable in /etc/sysconfig/network file:

$ cat /etc/sysconfig/network
NETWORKING=yes
HOSTNAME="SRV-DB-01"

Changes will be permanent after reboot.

If you change the hostname permanently, it is good to check /etc/hosts file against new hostname. Some programs wants to try to resolve ip address of your hostname. For this reason, installation programs of distributions puts an entry into /etc/hosts file like that:

127.0.1.1        SRV-DB-01

To make these types of programs happy and prevent ip lookup timeouts, you have to change the hostname entry in /etc/hosts too.