Setting new hostname on CentOS, it changes back after restart

Solution 1:

Add the following lines into your /etc/sysctl.conf configuration file.

kernel.hostname = hostname
kernel.domainname = domain.com

And execute the command sysctl -p /etc/sysctl.conf to read and apply the changes of your /etc/sysctl.conf configuration file.

Solution 2:

Did you edit the /etc/sysconfig/network file? Or are you just showing it's contents? The hostname command does not actually edit these files. When the system starts the init scripts read the host name from the configuration files and this setting is then passed to the hostname command. In additoion as mentioned by other posts be sure to edit your hosts file so that the mapping for your hostname <-> ip is correct on the local host.

More information is available in the Red Hat documentation

Also are you using Network Manager to manage your network interfaces? If so you will need to go into NM and make sure the settings jive there as well.

Solution 3:

I didn't edit the files /etc/sysconfig/network and /etc/hosts because these already contained the hostname I wanted (localhost.localdomain), so just by command hostname localhost.localdomain it didn't remain saved after reboot.

But then my host edited these two files to a different host name, rebooted the server (without any other command, just editing) and the new hostname applied and remained changed. Then I edited files again and set them to localhost.localdomain as they are on some other of my VPS and now they updated and remained to localhost as I wanted.