Chcę zmienić nazwę hosta systemu operacyjnego, ale nie chcę restartować.
Zredagowałem, /etc/hostname
ale wymaga ponownego uruchomienia w celu wdrożenia. Jak tego uniknąć?
Chcę zmienić nazwę hosta systemu operacyjnego, ale nie chcę restartować.
Zredagowałem, /etc/hostname
ale wymaga ponownego uruchomienia w celu wdrożenia. Jak tego uniknąć?
Odpowiedzi:
To jest łatwe. Po prostu kliknij ikonę koła zębatego (znajdującą się w prawym górnym rogu ekranu), otwórz ekran „Informacje o tym komputerze” (znajdujący się pod ikoną koła zębatego) i edytuj „Nazwa urządzenia”.
Lub w terminalu użyj następującego polecenia:
sudo hostname your-new-name
Spowoduje to ustawienie nazwy hosta na twoją nową nazwę do momentu ponownego uruchomienia. Zobacz man hostname
i jak zmienić nazwę komputera? w celu uzyskania dalszych informacji. Nie używaj _
w swoim imieniu.
Uwaga
Po ponownym uruchomieniu twoje zmiany /etc/hostname
zostaną wykorzystane, więc (jak powiedziałeś w pytaniu), powinieneś nadal używać
sudo -H gedit /etc/hostname
(lub inny edytor), aby plik zawierał nazwę hosta.
Aby sprawdzić, czy plik jest poprawnie skonfigurowany, uruchom:
sudo service hostname start
Powinieneś również edytować /etc/hosts
i zmienić wiersz o treści:
127.0.1.1 your-old-hostname
aby zawierała teraz nową nazwę hosta. (Jest to wymagane, w przeciwnym razie wiele poleceń przestanie działać.)
/etc/hosts
(patrz inne odpowiedzi)
hostname
spowoduje, że nowa nazwa zacznie obowiązywać natychmiast, nie będzie ona jednak „trwała”, chyba że ulegniesz zmianie, /etc/hostname
a /etc/hosts
ponieważ są to pliki, które zostaną odczytane po ponownym uruchomieniu lub awarii, co oczywiście może nie być oczekując z wyprzedzeniem.
hostnamectl
Komenda jest częścią domyślnej instalacji na obu wydań Desktop i Server.
Łączy ustawianie nazwy hosta za pomocą hostname
polecenia i edycji /etc/hostname
. Oprócz ustawienia statycznej nazwy hosta, można ustawić „ładną” nazwę hosta, która nie jest używana w Ubuntu. Niestety, edycja /etc/hosts
musi być jeszcze wykonana osobno.
hostnamectl set-hostname new-hostname
To polecenie jest częścią systemd-services
pakietu (który, począwszy od Ubuntu 14.04, zawiera także polecenia timedatectl
i localectl
). W miarę migracji Ubuntu systemd
to narzędzie jest przyszłością.
hostnamectl
nie istnieje. Zgadnij, niektóre smaki Ubuntu nie używają jeszcze systemd.
Zmiana nazwy hosta lub nazwy komputera w Ubuntu bez restartu
Edytuj / etc / hostname i zmień na nową wartość,
nano /etc/hostname
Edytuj plik / etc / hosts i zmień stary wiersz 127.0.1.1 na nową nazwę hosta
127.0.0.1 localhost
127.0.1.1 ubuntu.local ubuntu # change to your new hostname/fqdn
Uwaga : przeczytałem go na forum> Edytuj / etc / hosts i zmieniłem stary wiersz 127.0.1.1 na nową nazwę hosta (jeśli tego nie zrobisz, nie będziesz już mógł używać sudo. Jeśli już to zrobiłeś , naciśnij ESC w menu grub, wybierz odzyskiwanie i edytuj plik hosta, aby uzyskać prawidłowe ustawienia)
Teraz po ponownym uruchomieniu twoja nazwa hosta będzie nową, którą wybrałeś
Aby zmienić bez ponownego uruchomienia , możesz po prostu użyć hostname.sh po edycji / etc / hostname. Musisz zachować obie nazwy hostów w / etc / hosts (127.0.0.1 newhost oldhost), dopóki nie wykonasz poniższej komendy:
sudo service hostname start
Uwaga : powyższe polecenie, aby aktywować zmianę. Nazwa hosta zapisana w tym pliku (/ etc / hostname) zostanie zachowana przy ponownym uruchomieniu systemu (i zostanie ustawiona przy użyciu tej samej usługi).
sudo: unable to resolve host old-hostname
. W tej części rozwiązanie @jesperado działa dobrze.
/etc/hosts
, niektóre rzeczy zaczną zawieść 12.04.2 LTS, w tym w
polecenie, Apache /sbin/reboot
i wiele innych. Zaktualizuj/etc/hosts
127.0.0.1
do niestandardowej nazwy hosta, jak localhost
i 127.0.1.1
do niej. Dobrze? Następnie, pod koniec swojej odpowiedzi, w przypadku akcji bez ponownego uruchomienia odwołujesz się /etc/hosts
i 127.0.0.1 newhost oldhost
. Więc nie potrzebujesz 127.0.1.1
adresu?
sudo nano /etc/hosts
aby zmiana zaczęła obowiązywać; bez sudo, po prostu nano /etc/hosts
nie
Domyślna nazwa została ustawiona podczas instalacji Ubuntu. Możesz łatwo zmienić to, co chcesz na komputerze i serwerze, edytując pliki hostów i nazwy hostów. Poniżej znajduje się, jak:
sudo hostname NEW_NAME_HERE
Spowoduje to zmianę nazwy hosta do następnego uruchomienia. Zmiana nie będzie widoczna od razu w twoim obecnym terminalu. Uruchom nowy terminal, aby zobaczyć nową nazwę hosta.
Aby trwale zmienić nazwę, uruchom polecenie, aby edytować pliki hosta:
sudo -H gedit /etc/hostname
i sudo -H gedit /etc/hosts
Na serwerze Ubuntu bez GUI, uruchom sudo vi /etc/hostname
i sudo vi /etc/hosts
i edytować je jeden po drugim. W obu plikach zmień nazwę na odpowiednią i zapisz ją.
Na koniec uruchom ponownie komputer, aby zastosować zmiany.
Oto skrypt, który zmienia nazwę hosta w określony sposób. Zapewnia to, że nie tylko, sudo
ale także aplikacje X11 będą nadal działać bez konieczności restartu.
Stosowanie: sudo ./change_hostname.sh new-hostname
#!/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}')"
su $SUDO_USER -c "xauth add $(xauth list | sed 's/^.*\//'"$NEW_HOSTNAME"'\//g' | awk 'NR==1 {sub($1,"\"&\""); print}')"
? Po prostu ciekawy.
xauth list
) i zastępuje starą nazwę hosta nową nazwą hosta ( sed
). Następnie awk
umieszcza cudzysłowy wokół pierwszego argumentu, xauth add
ponieważ xauth
format wejściowy i wyjściowy nie są symetryczne.
Bez ponownego uruchomienia:
/etc/hostname
/etc/hosts
odpowiedniosudo sysctl kernel.hostname=mynew.local.host
Sprawdź swoją bieżącą nazwę hosta za pomocą hostname -f
sudo: unable to resolve host oldname
, sysctl: setting key "kernel.hostname": Read-only file system
. Może dlatego, że jest CT wewnątrz Proxmox.
Chociaż powyższe podejścia ( hostnamectl
, etc/hostname
itp) pracować dla natychmiastowej zmiany nazwy hosta, wraz z pojawieniem się chmury inicjalizacji - które może kontrolować ustawienia nazwy hosta - amoungst wiele innych rzeczy. Więc nie pozostanie po ponownym uruchomieniu, jeśli zainstalowana jest inicjacja chmurowa. Jeśli chcesz, aby zmiana pozostała po ponownym uruchomieniu, musisz edytować pliki konfiguracyjne inicjowania chmury, wyłącz moduł ustawiania / aktualizacji nazwy hosta chmury :
sudo sed 's/preserve_hostname: false/preserve_hostname: true/' /etc/cloud/cloud.cfg
lub całkowicie wyłącz chmurę:
sudo touch /etc/cloud/cloud-init.disabled
/etc/cloud/cloud.cfg
. Jaka jest nazwa pakietu? Po prostu cloud-init
?
/etc/hostname
na żądaną nazwę hosta (możesz edytować za pomocą sudo nano /etc/hostname
)/etc/hosts
zastąp wpis obok 127.0. 1 .1 z żądaną nazwą hosta (można edytować za pomocą sudo nano /etc/hosts
)sudo service hostname restart; sudo service networking restart
# if you do nothing you'll end up with: # * /etc/hostname (and 'hostname') managed via: 'preserve_hostame: false' # if you do not change /etc/hostname, it will be updated with the cloud # provided hostname on each boot. If you make a change, then manual # maintenance takes over, and cloud-init will not modify it.
Obecnie nie mam Ubuntu 18, więc nie mogę go przetestować do weekendu.
Jest to bez ponownego uruchamiania i bez użycia terminala.
Otwórz terminal. Sprawdźcie sami.
(W starszych wersjach pola tekstowego nie można edytować).
Klasyczna odpowiedź na pytanie oryginalnego plakatu jest taka, że po edycji /etc/hostname
wprowadzasz ją bez ponownego uruchamiania, uruchamiając nazwę hosta (1) z opcją -F
( --file
) jako root:
sudo hostname -F /etc/hostname
Hosta (5) postępowania z /etc/hostname
a wspomniany program jest taki sam w Debianie i jego pochodne od ponad dwudziestu lat, a pakiet pod warunkiem, że zostały oznaczone istotne i potrzebne , i IIRC skrypty startowe dosłownie stosować to samo dla dziesięciolecia ( /etc/init/hostname.conf
wciąż go zawiera), więc muszę powiedzieć, że jestem naprawdę zdziwiony tym, że nikt już o tym nie wspominał :)
sudo hostname your-new-name
sudo /etc/init.d/networking restart
To powinno wystarczyć do pracy
Przeczytałem odpowiedzi, ale myślę, że prawdopodobnie tego szukasz:
Wystarczy wykonać te dwa polecenia po edycji /etc/hostname
pliku.
$ sudo service hostname restart
$ exec bash
To wszystko. Nie ma potrzeby ponownego uruchamiania. Upewnij się również, że zmienisz nazwę w /etc/hosts
pliku.
/etc/hosts
(potwierdziłem 14.04).
Rozwiązanie oparte na odpowiedzi od DigitalOcean Comunity.
Edytuj plik hosts .
$ sudo nano /etc/hosts
Zastąp starą nazwę nową.
127.0.0.1 localhost newname
Ustaw nową nazwę hosta.
$ sudo hostnamectl set-hostname newname