W przeciwieństwie do edycji / etc / hostname, czy gdziekolwiek jest to istotne?
Musi być dobry powód (mam nadzieję) - ogólnie wolę „stary” sposób, w którym wszystko było plikiem tekstowym. Nie próbuję się kłócić - naprawdę chciałbym wiedzieć i sam zdecydować, czy to dobry powód. Dzięki.
Odpowiedzi:
tło
hostnamectl
jest częścią systemd i zapewnia odpowiedni interfejs API do radzenia sobie z ustawianiem nazw hostów serwera w znormalizowany sposób.Wcześniej każda dystrybucja, która nie korzystała z systemd, miała swoje własne metody, które powodowały niepotrzebną złożoność.
hostnamectl
gromadzi również wiele różnych danych w jednym miejscu, aby uruchomić:Info tutaj pochodzi
/etc/*release
,uname -a
itp tym nazwa serwera.Co z plikami?
Nawiasem mówiąc, wszystko wciąż jest w plikach,
hostnamectl
po prostu upraszcza sposób, w jaki musimy wchodzić w interakcje z tymi plikami lub znać ich każdą lokalizację.Na dowód tego możesz użyć
strace -s 2000 hostnamectl
i zobaczyć, z których plików pobiera:systemd-hostname.service?
Dla bystrego obserwatora powinieneś zauważyć w powyższym,
strace
że nie wszystkie pliki są obecne.hostnamectl
faktycznie wchodzi w interakcję z usługą,systemd-hostnamectl.service
co w rzeczywistości powoduje „interakcję” z większością plików, które zna większość administratorów, np/etc/hostname
.Dlatego po uruchomieniu
hostnamectl
otrzymujesz szczegółowe informacje z usługi. Jest to usługa na żądanie, więc nie zobaczysz, czy działa przez cały czas. Tylko gdyhostnamectl
działa. Możesz to zobaczyć, jeśli uruchomiszwatch
polecenie, a następnie zaczniesz uruchamiaćhostnamectl
wiele razy:Źródło tego znajduje się tutaj: https://github.com/systemd/systemd/blob/master/src/hostname/hostnamed.c, a jeśli je przejrzysz, zobaczysz odniesienia do
/etc/hostname
itp.Bibliografia
źródło
-e open,openat
?strace
8-). Mimo wszystko, szczerze mówiąc, nadal potrzebowałbym tego,grep
aby uzyskać wynik w sposób, w jaki chciałem go pokazać, b / cstrace
nadal pokazywałby wynikhostnamectl
polecenia cmd, więc moja droga była krótsza.rpm -qf $(type -P hostnamectl)
muszę pamiętać!Jest to nadal plik tekstowy, możesz go edytować i nie będzie problemu.
Plik tekstowy został znormalizowany do
/etc/hostname
.Według opiekuna usługi systemowe nazwa-hosta, czas systemowy itp. Zostały bardzo zaprojektowane dla istniejących GUI, takich jak GNOME. systemd-hostnamed pozwala GUI zażądać zmiany nazwy hosta bez działania jako root (w zależności od zasad polkit). Dbus zapewnia również metodę subskrybowania zmian, która jest dostosowana do potrzeb GUI. W takich przypadkach może być używana przez jedną aplikację :). Nie wiem, może zegary używają systemowego pomiaru czasu do nasłuchiwania rekonfiguracji strefy czasowej?
Pomyśl o hostnamectl jako kodzie do wykonywania backendu GUI, który może, ale nie musi, być użytecznym narzędziem CLI. Systemd-hostnamed nie ma na celu dodawania całych funkcji, które nie są obsługiwane przez kod GUI.
Usługa systemd o nazwie hosta nie ma na celu streszczenia różnic między dystrybucjami. Upstream systemizowany na pojedynczy plik konfiguracyjny
/etc/hostname
, w którym wcześniej były różne pliki konfiguracyjne np. W dystrybucjach opartych na Debianie i Redhat.Zakłada się, że hostnamectl mówi o standardowej implementacji systemd-hostnamed. Ale AFAIK nie ma aktualnej dystrybucji, która łatałaby używaną nazwę pliku.
Chcę
/etc/hostname
zauważyć , że ładowanie w czasie rozruchu jest wykonywane wcześnie przez systemd PID 1. Nie zależy to od uruchomienia systemd-hostnamed.Wyobrażam sobie, że możesz zauważyć jedną nieszkodliwą różnicę, jeśli masz otwarty GUI ustawień systemowych i jednocześnie wyświetla nazwę hosta. Jeśli edytujesz,
/etc/hostname
a następnie używasz,hostname --file /etc/hostname
aby zastosować zmianę do działającego systemu, ekran GUI może nie zostać natychmiast zaktualizowany. systemd-hostnamed zapewnia powiadomienia dbus o zmianach we wszystkich wersjach nazwy hosta, którą utrzymuje, więc GUI może nie zadać sobie trudu, aby wysłuchać powiadomień o nazwie hosta systemu dostępnych w nowoczesnych jądrach Linuksa.(Tradycyjnie zmiana nazwy hosta w czasie wykonywania nie jest dobrym pomysłem . Może to powodować problemy z oprogramowaniem takim jak X. Jestem pewien, że ten problem nie został rozwiązany przez systemd . Być może został rozwiązany przez dystrybucje korzystające z systemd) .
źródło