Bir Linux sunucusunu, yeniden adlandırmanın geçerli olması için yeniden başlatmaya gerek duymadan nasıl yeniden adlandırabilirim?


26

Serverfault üzerinde bu sorunun cevabını aradım ve bulamadım. Bunun mümkün olduğunu biliyorum, ama nasıl yapıldığını hatırlayamıyorum. Bir Linux ana bilgisayarının ana bilgisayar adını nasıl değiştiririm ve bu değişikliğin yeniden başlatmadan yürürlüğe girmesini nasıl sağlayabilirim?

Ubuntu 16 ve Ubuntu 18 kullanıyorum.

Ubuntu'nun büyük bir özelliği, grafik masaüstü ve grafik sistem yardımcı programlarıdır. Ancak, üretim ortamımızda Ubuntu'yu çalıştırıyoruz, bu yüzden bu özelliklerin üretim ortamımızda ihtiyaç duyduğumuz kaynakları tüketmemesi için grafik masaüstü ya da yardımcı programlarını kullanmamayı tercih ettik.

Ana bilgisayarı yeniden adlandırmak için dosyaları düzenlediğimi biliyorum:

  • /etc/hostname
  • /etc/hosts

Gelen /etc/hostnamebir sadece mevcut ana makine adını değiştirir yeni hostname'iyle (yakında eski hostname olmak).

/etc/hostsDosyadaki Ubuntu satırına sahiptir:

127.0.1.1 your-hostname your-hostname

Sunucunuz yeniden başlatılırken ve ağınız içinde kendini kurarken önyükleme işlevi görür. Ana bilgisayar adını değiştirmeden önce, geçerlidir your-hostname(yakında eski ana bilgisayar adı olur) ve ana bilgisayarınızın ana bilgisayar adını değiştirmenin bir parçası olarak, bu ad yeni adla değiştirilir.

Aşina olduğum şey yukarıdaki iki adımı yerine getirip ardından sunucunuzu yeniden başlatmak. Ancak bir yapım sunucusunda olduğu gibi, çoğu zaman bu yeniden adlandırmayı yapmak ister, ancak ana bilgisayarını yeniden başlatmak istemez.

Bir ana bilgisayardaki ana bilgisayar adını nasıl değiştirebilirim ve bu değişikliği ana bilgisayarı yeniden başlatmadan yürürlüğe girmesini nasıl sağlayabilirim?


1
"Ubuntu 16" ve "Ubuntu 18" diye bir şey yoktur, 16.04 ile 16.10 arasında, 16.10 ile 17.04 arasında olduğu gibi büyük farklılıklar olabilir.
boru

Yanıtlar:


49

Çekirdeğin ana bilgisayar adı konusundaki fikrini, hostnamectlaracı kullanarak sistem tabanlı bir sistemde değiştirebilirsiniz . Örneğin:

hostnamectl set-hostname whatever

Sistemin ana bilgisayar adı konusundaki fikrini şu şekilde görüntüleyebilirsiniz:

hostnamectl             # equivalent to hostnamectl status

Bunun, çalışan bir işlemin ana bilgisayar adı hakkındaki fikrini değiştirmediğini unutmayın. Böyle bir işlemin güncellenebilmesi için ana bilgisayar adını tekrar kontrol etmesi gerekir ve neredeyse hiçbir işlem yapmaz. Dolayısıyla, böyle bir işlemin yeniden başlatılması gerekecektir. İçin için her yeni ana makine kullanmaya başlaması süreci, bunlar yeniden başlatılmalıdır. Sistemi sadece yeniden başlatmak, her hizmeti tek tek yeniden başlatmaktan daha kolaydır.


1
Yeniden adlandırdıktan sonra yeniden başlatmak istemiyorsam sunucumdaki ağı yeniden başlatmam gerekir mi? Bunu buldum: sudo /etc/init.d/network restart Bunun dışında, bu komutla sunucumdaki ağları yeniden başlatmak, sunucunun adının geçerli olduğunu bilmesi gereken tüm çalışan işlemleri yeniden başlatmak konusundaki amacınız. Ana bilgisayarı yeniden başlatmanın bu sorunu çözeceği kabul edildi. Bu, gerçekten bir ev sahibini yeniden adlandırmak istediğim, ancak onu yeniden başlatmak istemediğim zamanlar olduğunu söyledi. sudo /etc/init.d/network restartYeni ana bilgisayar adının yürürlüğe girmesinde etkili olacağı hakkında herhangi bir görüş ve faydası w \ out reboot?
Peter Jirak Eldritch

3
@ PeterJirak: Tamamen işe yaramaz. Bu programlar (ana bilgisayar adını bilmesi gereken), daha önce ana bilgisayar adı güncellemelerini izlemek için uğraşmadıysa, şimdi rahatsız etmeyeceklerdir. Sisteme IP adreslerini eth0 üzerinde yeniden yapılandırmalarını söylemek, biraz bile etkilemeyecektir.
yer

@PeterJirak "Etkili olacak yeni ana bilgisayar adını almak" derken ne demek istiyorsunuz? Daha önce tartışıldığı gibi, derhal yürürlüğe girer ve yeni başlatılan herhangi bir işlem bunun farkında olacaktır. Ağı neden yeniden başlatmayı istediğinizi de anlamıyorum? Bunun hostname ile ne ilgisi var?
Michael Hampton

5
"Ağ" ın bütününün, bunun gibi bir /etc/init.d betiği olduğu için yeniden başlatılabilen bir kullanıcı alanı hizmeti olduğu yaygın bir yanılgıdır.
Gravity

2
@PeterJirak Bir yandan not olarak, /etc/init.dsistemli sistemlerde servis çalıştırmak yanlış bir yoldur. Eski System V ile geriye dönük uyumluluk için var sadece
rexkogitans

22

Çekirdek ana bilgisayar adını aşağıdakileri kullanarak değiştirebilirsiniz:

hostname NEWNAME

Linux'ta bu pratik olarak aşağıdakilerden birine eşittir:

sysctl kernel.hostname=NEWNAME

echo NEWNAME > /proc/sys/kernel/hostname

Bu, sistemd'e ( systemd-hostnamed gerektiren hostnamectl'den farklı olarak ) veya diğer standart olmayan araçlara bağlı değildir ve genellikle (özellikle shellscript-init sistemlerinde), ilk ana bilgisayar adının ilk sırada nasıl ayarlandığına bağlıdır.

Çoğu program ve hizmet aslında ana bilgisayar adını kullanmaz ; bunlardan bazıları (örneğin Postfix veya Kerberos kullanan hizmetler) tek tek başlatılabilir.

(Bazı programlar yeniden başlatılıncaya kadar ana bilgisayar adını önbelleğe alır, diğerleri her istediklerinde sorgular. Programlar ayrıca değişiklik bildirimleri almak için (2) / proc / sys / kernel / hostname öğesini yoklama yeteneğine de sahiptir, ancak çok azı bunu yapar.)


2
Bu yöntemlerin kalıcı olmadığını ve yeniden başlatmaya devam edemeyeceğini unutmayın.
Michael Hampton

3
Neyse ki, OP zaten kendi sorularında ısrar etti.
yerçekimi

1
postfix, ana bilgisayar adını bir veya iki yerde kodlanmış /etc/postfix/main.cfve /etc/mailnamebu yüzden de düzeltilmeleri gerekebilecek şekilde içerebilir .
Mark Plotnick
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.