Làm cách nào để thay đổi tên máy chủ mà không cần khởi động lại?


497

Tôi muốn thay đổi tên máy chủ hệ điều hành nhưng tôi không muốn khởi động lại.

Tôi đã chỉnh sửa /etc/hostnamenhưng nó yêu cầu khởi động lại để được thực hiện. Làm thế nào để tránh điều này?


3
Cảnh báo: sẽ không hoạt động với Ubuntu 18+ đang chạy cloud-init theo mặc định, điều khiển tên máy chủ khi khởi động.
nslntmnx

@nslntmnx, Cảm ơn bạn!
MiB

Câu trả lời:


642

Dễ thôi. Chỉ cần nhấp vào biểu tượng Bánh răng (nằm ở góc trên bên phải màn hình), mở màn hình "Giới thiệu về máy tính này" (nằm ở biểu tượng Bánh răng) và chỉnh sửa "Tên thiết bị".

Hoặc, trong một thiết bị đầu cuối, sử dụng lệnh sau:

sudo hostname your-new-name

Điều này sẽ đặt tên máy chủ thành tên mới của bạn cho đến khi bạn khởi động lại. Xem man hostnamelàm cách nào để thay đổi tên máy tính? để biết thêm thông tin. Không sử dụng _tên của bạn.

Ghi chú

Sau khi khởi động lại, những thay đổi của bạn /etc/hostnamesẽ được sử dụng, vì vậy (như bạn đã nói trong câu hỏi), bạn vẫn nên sử dụng

sudo -H gedit /etc/hostname

(hoặc một số trình soạn thảo khác) để tệp đó chứa tên máy chủ.

Để kiểm tra xem tập tin có được thiết lập chính xác không, hãy chạy:

sudo service hostname start

Bạn cũng nên chỉnh sửa /etc/hostsvà thay đổi dòng có nội dung:

127.0.1.1     your-old-hostname

để bây giờ nó chứa tên máy chủ mới của bạn. (Điều này là bắt buộc nếu không nhiều lệnh sẽ ngừng hoạt động.)


4
tôi không muốn khởi động lại
Deepak Rajput

23
Tôi biết. đó là lý do tại sao bạn nên sử dụng lệnh 'hostname'. Tôi chỉ muốn làm rõ rằng lệnh 'tên máy chủ' chỉ thay đổi tên máy chủ cho đến khi bạn khởi động lại / crash / etc. Sau đó nó sẽ đọc tên từ tệp một lần nữa.
jasperado

5
Phụ thuộc. Nếu bạn đã nhập lệnh, bạn không cần phải khởi động lại. Tên máy chủ đã được thay đổi. Nhưng chỉ UNTIL khởi động lại tiếp theo của bạn.
jasperado

19
Lưu ý rằng bạn cũng phải thay đổi /etc/hosts(xem câu trả lời khác)
JB.

9
Nói tóm lại, mặc dù hostnamesẽ khiến tên mới có hiệu lực ngay lập tức, nhưng nó không phải là "vĩnh viễn" trừ khi bạn cũng thay đổi /etc/hostname/etc/hosts, vì đó là những tệp sẽ được đọc sau khi khởi động lại hoặc gặp sự cố, tất nhiên, bạn có thể không mong đợi trước thời hạn.
Tim Parenti

280

Ubuntu 13.04 trở đi

Các hostnamectllệnh là một phần của quá trình cài đặt mặc định trên cả hai máy tính để bàn và các phiên bản Server.

Nó kết hợp thiết lập tên máy chủ thông qua hostnamelệnh và chỉnh sửa /etc/hostname. Cũng như đặt tên máy chủ tĩnh, nó có thể đặt tên máy chủ "đẹp", không được sử dụng trong Ubuntu. Thật không may, chỉnh sửa /etc/hostsvẫn phải được thực hiện riêng.

hostnamectl set-hostname new-hostname

Lệnh này là một phần của systemd-servicesgói (kể từ Ubuntu 14.04, cũng bao gồm các lệnh timedatectllocalectl). Khi Ubuntu chuyển sang systemd, công cụ này là tương lai.


1
Lưu ý điều này không có sẵn ở mọi nơi. Chỉ cần nhìn vào bản cài đặt Ubuntu 14.04 LTS ARM-7 của tôi và hostnamectlkhông tồn tại. Đoán một số hương vị của Ubuntu chưa sử dụng systemd.
Stéphane

1
@ Stéphane các lệnh là một phần của bộ systemd, nhưng chúng có sẵn độc lập. Trong trường hợp này, 13.04-14.10 không sử dụng systemd như init, bởi lệnh có sẵn.
muru

1
@ H2ONaCl biến shell được thiết lập khi khởi động, chỉ cần mở shell khác và biến tên máy chủ sẽ ổn. Đối với sudo, lỗi về độ phân giải tên máy chủ chưa bao giờ thực sự ngăn cản tôi làm bất cứ điều gì.
muru

1
@ H2ONaCl ah, nhưng dao động HOSTNAME không phải là tiêu chuẩn - Dấu gạch ngang IIRC và ksh không có nó, zsh sử dụng HOST, theo như các biến shell, đó là đáy của heap.
muru

3
Vẫn hoạt động trong Ubuntu 18.04 LTS.
LucaM

63

Không khởi động lại

Thay đổi tên máy chủ hoặc tên máy tính trong Ubuntu mà không cần khởi động lại

Chỉnh sửa / etc / tên máy chủ và thay đổi giá trị mới,

nano /etc/hostname 

Chỉnh sửa / etc / hosts và thay đổi dòng 127.0.1.1 cũ thành tên máy chủ mới của bạn

127.0.0.1   localhost
127.0.1.1   ubuntu.local    ubuntu   # change to your new hostname/fqdn

Lưu ý : tôi đã đọc nó trên một diễn đàn> Chỉnh sửa / etc / hosts và thay đổi dòng 127.0.1.1 cũ thành tên máy chủ mới của bạn (nếu bạn không làm điều này, bạn sẽ không thể sử dụng sudo nữa. Nếu bạn đã làm xong , nhấn ESC trên menu grub, chọn recovery và chỉnh sửa tệp máy chủ của bạn để cài đặt chính xác)

Bây giờ sau khi khởi động lại, tên máy chủ của bạn sẽ là tên mới bạn chọn

Không khởi động lại

Để thay đổi mà không cần khởi động lại , bạn chỉ có thể sử dụng hostname.sh sau khi chỉnh sửa / etc / hostname. Bạn phải giữ cả tên máy chủ của mình trong / etc / hosts (127.0.0.1 newhost oldhost) cho đến khi bạn thực hiện lệnh bên dưới:

sudo service hostname start

Lưu ý : Lệnh trên để thực hiện thay đổi. Tên máy chủ lưu trong tệp này (/ etc / hostname) sẽ được giữ nguyên khi khởi động lại hệ thống (và sẽ được đặt bằng cùng một dịch vụ).


Trên Ubuntu 12.10, phần cuối cùng không hoạt động với thông báo lỗi sau sudo: unable to resolve host old-hostname. Về phần đó, giải pháp @jesperado hoạt động tốt.
Frédéric Grosshans

3
Nếu bạn không cập nhật /etc/hosts, mọi thứ sẽ bắt đầu thất bại vào ngày 12.04.2 LTS, bao gồm wlệnh, Apache /sbin/rebootvà nhiều thứ khác. Đảm bảo cập nhật/etc/hosts
Josh

Bạn tham khảo cả 127.0.0.1cho localhost127.0.1.1cho một tên máy chủ tùy chỉnh. Đúng? Sau đó, đến cuối câu trả lời của bạn, cho một hành động không có rebot , bạn tham khảo /etc/hosts127.0.0.1 newhost oldhost. Vì vậy, không cần một 127.0.1.1địa chỉ?
Nikos Alexandris

1
không làm việc cho tôi. tôi đã phải sử dụng sudo nano /etc/hostsđể thay đổi có hiệu lực; không có sudo, chỉ nano /etc/hostskhông lưu thay đổi
conman253

2
Sự khác biệt giữa khởi động lại và khởi động lại là gì?
bão

43

Tên mặc định được đặt khi bạn cài đặt Ubuntu. Bạn có thể dễ dàng thay đổi nó thành bất cứ điều gì bạn muốn trong cả Desktop & Server bằng cách chỉnh sửa các tập tin máy chủ và tên máy chủ. Dưới đây là cách thực hiện:

  1. Nhấn CtrlAltttrên bàn phím để mở thiết bị đầu cuối. Khi nó mở, chạy lệnh dưới đây:sudo hostname NEW_NAME_HERE

Điều này sẽ thay đổi tên máy chủ cho đến khi khởi động lại tiếp theo. Thay đổi sẽ không được nhìn thấy ngay lập tức trong thiết bị đầu cuối hiện tại của bạn. Bắt đầu một thiết bị đầu cuối mới để xem tên máy chủ mới.

  1. Để thay đổi tên vĩnh viễn, hãy chạy lệnh để chỉnh sửa các tệp máy chủ:

    sudo -H gedit /etc/hostnamesudo -H gedit /etc/hosts

Đối với máy chủ Ubuntu mà không có một giao diện đồ họa, chạy sudo vi /etc/hostnamesudo vi /etc/hostsvà chỉnh sửa chúng từng cái một. Trong cả hai tệp, thay đổi tên thành những gì bạn muốn và lưu chúng.

Cuối cùng, khởi động lại máy tính của bạn để áp dụng các thay đổi.


16

Đây là một kịch bản thay đổi tên máy chủ theo cách quy định. Nó đảm bảo rằng không chỉ sudocác ứng dụng X11 tiếp tục hoạt động mà không cần khởi động lại.

Sử dụng: 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}')"

Dòng cuối cùng trong kịch bản su $SUDO_USER -c "xauth add $(xauth list | sed 's/^.*\//'"$NEW_HOSTNAME"'\//g' | awk 'NR==1 {sub($1,"\"&\""); print}')"làm gì? Chỉ tò mò thôi.
Fr0zenFyr

4
@ Fr0zenFyr: cần mã thông báo xác thực X11 hợp lệ ( xauth list) và thay thế tên máy chủ cũ bằng tên máy chủ mới ( sed). Sau đó awkđặt dấu ngoặc kép xung quanh đối số đầu tiên xauth addxauthđịnh dạng đầu vào và đầu ra không đối xứng.
Lucas

Cảm ơn đã giải thích. Tôi đã luôn luôn khởi động lại để những thay đổi có hiệu lực. +1
Fr0zenFyr

@trakz: Trên thực tế 127.abc dù là số nào, đều là localhost theo IETF RFC. (hầu hết mọi người không biết điều này, nhưng vì hầu hết không, chỉnh sửa đã được phê duyệt)
Fabby 7/1/2015

14

Không khởi động lại:

  1. thay đổi tên máy chủ trong /etc/hostname
  2. cập nhật cho /etc/hostsphù hợp
  3. sudo sysctl kernel.hostname=mynew.local.host

Kiểm tra tên máy chủ hiện tại của bạn với hostname -f


Với 16,04, sysctl sudo: unable to resolve host oldname, sysctl: setting key "kernel.hostname": Read-only file system. Có lẽ vì là một CT bên trong Proxmox.
Pablo A

14

Sự tồn tại của tên máy chủ Cloud-init (Ubuntu 18+)

Trong khi các cách tiếp cận trên ( hostnamectl, etc/hostnamev.v.) hoạt động để thay đổi tên máy chủ ngay lập tức, với sự ra đời của cloud-init - có thể kiểm soát cài đặt của tên máy chủ - có nhiều thứ khác. Vì vậy, nó sẽ không dính sau khi khởi động lại nếu cài đặt cloud-init. Nếu bạn muốn thay đổi ở lại sau khi khởi động lại thì bạn sẽ cần chỉnh sửa các tệp cấu hình đám mây-init , tắt mô-đun bộ / cập nhật tên máy chủ của đám mây-init :

sudo sed 's/preserve_hostname: false/preserve_hostname: true/' /etc/cloud/cloud.cfg

hoặc vô hiệu hóa hoàn toàn init-init:

sudo touch /etc/cloud/cloud-init.disabled

1
Hãy upvote câu trả lời này. Nó hiệu quả tuyệt vời đối với tôi. Các câu trả lời khác không hoạt động với việc áp dụng cloud-init.
nslntmnx

@nslntmnx nó được cài đặt mặc định trên máy tính để bàn 18.04, chỉ máy chủ duy nhất? Máy tính để bàn không có /etc/cloud/cloud.cfg. Tên gói là gì? Chỉ là cloud-init?
Ciro Santilli 新疆 心 心

1
Ngoài ra, có cách nào để thay đổi tên máy chủ bằng cloud-init thay vì chỉ vô hiệu hóa ghi đè của nó không?
Ciro Santilli 新疆 心 心

1
Có, bạn có thể thay đổi nhiều cài đặt bằng cách sử dụng cloud-init - xem liên kết tài liệu trong câu trả lời của tôi - đây là liên kết để đặt tên máy chủ: cloudinit.readthedocs.io/en/latest/topics/ trộm
Pierz

7

Để có được tên máy chủ hiện tại của bạn:

cat /etc/hostname

Điều này có thể được thay đổi trong bất kỳ trình soạn thảo văn bản. Bạn cũng sẽ cần cập nhật mục nhập khác với localhost so với 127.0.0.1 trong / etc / hosts.


1
Hoặc chỉ cần chạy lệnh "hostname" từ dòng lệnh.
elomage

4
  1. Thay thế nội dung /etc/hostnamebằng tên máy chủ mong muốn (bạn có thể chỉnh sửa bằng sudo nano /etc/hostname)
  2. Trong /etc/hosts, thay thế mục bên cạnh 127.0. 1 .1 với tên máy chủ mong muốn (bạn có thể chỉnh sửa bằng sudo nano /etc/hosts)
  3. Thi hành, hành hình sudo service hostname restart; sudo service networking restart

Cảnh báo: sẽ không hoạt động với Ubuntu 18+ đang chạy cloud-init theo mặc định, điều khiển tên máy chủ khi khởi động.
nslntmnx

@nslntmnx bạn có chắc về điều này? Tôi thấy trong đám mây-config.txt # 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.Tôi hiện không có Ubuntu 18 vì vậy tôi không thể kiểm tra nó cho đến cuối tuần.
George

4

Ubuntu 16.04

Điều này là không có khởi động lại và không có bất kỳ sử dụng thiết bị đầu cuối.

  • Chuyển đến Cài đặt hệ thống -> Chi tiết .
  • Nó đây rồi Bên cạnh tên thiết bị , có một văn bản hộp.
  • Chỉnh sửa hộp văn bản và đóng cửa sổ.

Mở thiết bị đầu cuối. Xem cho chính mình.

(Đối với các phiên bản cũ hơn, hộp văn bản không thể chỉnh sửa.)


4

Câu trả lời cổ điển cho câu hỏi của người đăng ban đầu là, khi bạn đã chỉnh sửa /etc/hostname, bạn áp dụng nó mà không cần khởi động lại bằng cách chạy tên máy chủ (1) với tùy chọn -F( --file) làm gốc:

sudo hostname -F /etc/hostname

Việc xử lý tên máy chủ (5) với /etc/hostnamevà chương trình đã nói giống nhau trong Debian và các dẫn xuất của nó trong hơn hai mươi năm nay và gói cung cấp nó đã được gắn thẻ thiết yếubắt buộc , và IIRC, các tập lệnh init đã sử dụng cùng một thứ cho hàng thập kỷ ( /etc/init/hostname.confvẫn chứa nó), vì vậy tôi phải nói rằng tôi thực sự bối rối về việc không ai đã đề cập đến điều này rồi :)


Cảnh báo: sẽ không hoạt động với Ubuntu 18+ đang chạy cloud-init theo mặc định, điều khiển tên máy chủ khi khởi động.
nslntmnx

@nslntmnx erm, cái gì? Ubuntu 18 đã phụ thuộc vào sự phụ thuộc mới nào để kéo theo cloud-init theo mặc định? Bạn có thể nghĩ về một số hình ảnh phù hợp với đám mây, trong trường hợp đó, không có gì ngạc nhiên khi chúng chạy các công cụ cung cấp đám mây tùy chỉnh.
Josip Rodin

3
sudo hostname your-new-name
sudo /etc/init.d/networking restart

Điều đó nên làm công việc tôi nghĩ


5
Tôi không nghĩ rằng điều này sẽ tồn tại khi khởi động lại
Collin Anderson

Cảnh báo: sẽ không hoạt động với Ubuntu 18+ đang chạy cloud-init theo mặc định, điều khiển tên máy chủ khi khởi động.
nslntmnx

3

Tôi đã đọc câu trả lời, nhưng tôi nghĩ Có lẽ bạn đang tìm kiếm điều này:

Chỉ cần thực hiện hai lệnh này sau khi chỉnh sửa /etc/hostnametập tin.

$ sudo service hostname restart
$ exec bash

Đó là tất cả. Không cần phải khởi động lại. Cũng đảm bảo bạn cũng thay đổi tên trong /etc/hoststệp.


Không giống như nhiều câu trả lời khác, điều này không cập nhật /etc/hosts(tôi đã xác nhận vào ngày 14.04).
IsaacS

Cảnh báo: sẽ không hoạt động với Ubuntu 18+ đang chạy cloud-init theo mặc định, điều khiển tên máy chủ khi khởi động.
nslntmnx

2

Ubuntu 16.04

Giải pháp dựa trên câu trả lời từ DigitalOcean Comunity.

Chỉnh sửa tập tin máy chủ .

$ sudo nano /etc/hosts

Thay oldname với cái mới.

127.0.0.1 localhost newname

Thiết lập tên máy chủ mới.

$ sudo hostnamectl set-hostname newname


Cảnh báo: sẽ không hoạt động với Ubuntu 18+ đang chạy cloud-init theo mặc định, điều khiển tên máy chủ khi khởi động.
nslntmnx
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.