I added
hostname `hostname -I`
to '/etc/rc.local` and that set the hostname correctly to the currently-assigned IP address.
Как можно настроить виртуальную машину сервера Ubuntu /etc/hostname/
на значение, автоматически назначенное виртуальному IP-адресу при запуске?
Я создаю образ виртуальной машины сервера Ubuntu для запуска Hadoop. Когда клиент взаимодействует с Hadoop, он возвращает адреса узлов в кластере (даже если в этом случае они все процессы на одном компьютере) для взаимодействия с клиентом. Эти адреса определяются разрешением имени хоста Java, которое, как я понимаю, не совсем надежно. Мне посоветовали лучший способ обойти это - /etc/hostname/
назначить IP-адрес единственного сетевого интерфейса. В качестве альтернативы может быть подход установки переменной окружения и последующей передачи ее JVM, выполняющей каждый процесс Hadoop.
I added
hostname `hostname -I`
to '/etc/rc.local` and that set the hostname correctly to the currently-assigned IP address.
Using a fixed IP would be the simplest solution. If you can do that, just change /etc/hostname
on the guest so that it looks like this (using the right IP of course):
192.168.1.10
If you can't/don't want to use that, you can set up a cronjob that reads the system's IP and updates /etc/hostname
accordingly. This command will give you your IP:
ifconfig | grep Bcast | awk '' | sed 's/addr://'
Now add a new crontab for root:
sudo crontab -e
This will bring up whicever editor you have defined. Add this line to the crontab file:
@reboot ifconfig | grep Bcast | awk '' | sed 's/addr://' > /etc/hostname
This will run the command once each time the machine boots and save its output (the IP) to /etc/hostname
. A possible problem is that the cron daemon is started before an IP is assigned. In that case, you could set it to be run every five minutes or so:
*/5 * * * * ifconfig | grep Bcast | awk '' | sed 's/addr://' > /etc/hostname