hostnamectl 명령어: 호스트 이름 확인과 변경, static과 pretty 차이

hostnamectl 명령어는 리눅스 서버의 호스트 이름과 섀시 종류, 위치 같은 관련 설정을 확인하고 바꾸는 systemd 명령어입니다. Debian 12 서버에서 상태 보기 명령을 실행해 확인한 결과, 호스트 이름은 static과 transient, pretty 세 가지로 나뉘어 있었고 이 서버는 static 값을 사용하며 pretty는 비어 있었습니다.
아래 결과 상자는 Debian 12 테스트 서버(systemd 252)의 일반 계정에서 실행한 출력이며, 호스트 이름과 Machine ID, Boot ID, 하드웨어 업체와 모델은 예시 값으로 바꿨습니다. 호스트 이름을 바꾸는 명령은 같은 계정에서 인증이 필요하다는 문구와 함께 거절되어, 바뀌는 동작은 공식 매뉴얼 기준으로 적었습니다.
1️⃣ hostnamectl 사용법과 상태 보기
기본 꼴은 [hostnamectl 명령 값]이며, 명령을 적지 않으면 status로 실행됩니다. hostnamectl만 실행한 결과와 [hostnamectl status]의 출력은 열한 줄 모두 같았습니다.
hostnamectl Static hostname: server1.example.com
Icon name: computer-vm
Chassis: vm 🖴
Machine ID: 3f8a1c2e9b7d4e6fa0c5b2d18e7f9a41
Boot ID: 7c2e5a9d1b3f4086a2e4c6b8d0f1a3c5
Virtualization: microsoft
Operating System: Debian GNU/Linux 12 (bookworm)
Kernel: Linux 6.1.0-53-amd64
Architecture: x86-64
Hardware Vendor: ExampleCloud
Hardware Model: VM-1맨 위 Static hostname이 지금 사용하는 호스트 이름입니다. Icon name과 Chassis는 일부 그래픽 프로그램이 이 서버를 나타낼 때 사용하는 값이고, 이 서버는 가상 머신이라 Chassis가 vm으로 나왔습니다.
Machine ID와 Boot ID 아래로는 가상화 방식과 운영체제, 커널, 하드웨어 정보가 이어집니다.
명령 이름을 잘못 적으면 [Unknown command verb]가 나오고 종료 코드는 1입니다.
hostnamectl statussUnknown command verb statuss.2️⃣ hostnamectl 호스트 이름 세 가지
hostnamectl은 호스트 이름을 세 가지로 나눠 관리합니다. static은 사용자가 설정한 호스트 이름, transient는 네트워크 설정에서 받아 오는 대체 값이며, pretty는 공백과 특수 문자를 넣을 수 있는 이름입니다. static 값이 올바르게 설정되어 있으면 transient는 사용하지 않습니다(공식 매뉴얼 기준).
상태 보기에 --static이나 --transient를 붙이면 그 이름 한 줄만 출력되며, 이 서버는 두 값이 같았습니다.
hostnamectl --staticserver1.example.comhostnamectl --transientserver1.example.com--pretty는 빈 줄 하나만 출력되었습니다. 이 서버에는 pretty 호스트 이름이 설정되어 있지 않습니다.
hostnamectl --pretty[hostnamectl hostname]처럼 인자를 적지 않으면 지금 호스트 이름 한 줄을 출력합니다. 리눅스 기본 명령 hostname과 /etc/hostname 파일의 내용도 같은 값이었습니다.
hostnamectl hostnameserver1.example.comcat /etc/hostnameserver1.example.com--json=pretty를 붙이면 같은 정보가 JSON으로 나와 스크립트에서 칸 이름으로 값을 읽을 수 있습니다. HostnameSource가 static이라 지금 이름은 static 값에서 왔고, PrettyHostname은 null이었습니다.
hostnamectl --json=pretty{
"Hostname" : "server1.example.com",
"StaticHostname" : "server1.example.com",
"PrettyHostname" : null,
"DefaultHostname" : "localhost",
"HostnameSource" : "static",
"IconName" : "computer-vm",
"Chassis" : "vm",
"Deployment" : null,
"Location" : null,
"KernelName" : "Linux",
"KernelRelease" : "6.1.0-53-amd64",
"KernelVersion" : "#1 SMP PREEMPT_DYNAMIC Debian 6.1.187-1 (2026-09-07)",
"OperatingSystemPrettyName" : "Debian GNU/Linux 12 (bookworm)",
"OperatingSystemCPEName" : null,
"OperatingSystemHomeURL" : "https://www.debian.org/",
"HardwareVendor" : "ExampleCloud",
"HardwareModel" : "VM-1",
"HardwareSerial" : null,
"FirmwareVersion" : null,
"ProductUUID" : null
}3️⃣ hostnamectl 호스트 이름 변경
hostnamectl 명령어는 nmtui 명령어에 비해 사용 빈도가 적습니다. 두 명령어 모두 리눅스 서버의 호스트 이름을 바꿀 수 있지만, hostnamectl은 호스트 이름 변경 자체가 목적인 명령어라 스크립트나 최소 설치된 리눅스 환경에서 호스트 이름 설정만 바꿀 때 사용합니다.
테스트 서버의 일반 계정에서는 호스트 이름을 바꾸는 명령이 거절되어, 아래 꼴과 동작은 systemd 252 공식 매뉴얼 기준입니다. 바꿀 때는 hostname 명령 뒤에 새 이름을 적고, 옵션 없이 바꾸면 pretty와 static, transient 세 이름이 함께 바뀝니다. 호스트 이름을 바꾸는 일은 권한이 필요한 작업이며, 공식 매뉴얼은 이런 작업에서 인증을 묻지 않게 하는 옵션으로 --no-ask-password를 둡니다.
hostnamectl hostname web01.example.com일반 계정에서 --no-ask-password를 붙여 같은 이름으로 실행하자, 인증이 필요하다는 문구가 나오고 종료 코드 1로 끝났습니다. 다시 확인한 static 호스트 이름은 그대로였습니다.
hostnamectl --no-ask-password hostname web01.example.comCould not set static hostname: Interactive authentication required.--static, --transient, --pretty를 붙이면 붙인 이름만 바뀝니다. 공백이 든 pretty 이름은 따옴표로 감싸 적습니다.
hostnamectl --pretty hostname 'Web Server 01'옵션 없이 공백이나 특수 문자가 든 이름을 적으면 pretty에는 적은 그대로 들어가고, static과 transient에는 공백과 특수 문자를 뺀 이름이 들어갑니다. static과 transient 이름은 소문자 ASCII로 된 DNS 라벨이나 점으로 이은 FQDN이어야 하며, 리눅스 제한으로 64자까지입니다(공식 매뉴얼 기준).
[set-hostname]은 systemd 252 도움말의 명령 목록에 없고 매뉴얼의 --static 설명에만 남아 있으며, 테스트 서버의 hostnamectl 프로그램 안에도 이 이름이 들어 있었습니다. systemd 249에서 set-hostname 같은 옛 명령 이름이 hostname 하나로 바뀌었고, 공식 NEWS는 옛 이름도 호환을 위해 계속 받는다고 적고 있어 예전 글의 [hostnamectl set-hostname 새 이름]도 같은 일을 합니다. 일반 계정에서 --no-ask-password를 붙인 set-hostname도 같은 문구로 거절되었습니다.
4️⃣ hostnamectl chassis와 location
호스트 이름 말고도 섀시 종류와 아이콘 이름, 배포 환경, 위치를 같은 방식으로 확인하고 바꿉니다. 인자 없이 실행하면 지금 값을 출력하며, chassis는 vm, icon-name은 computer-vm이 나왔습니다.
hostnamectl chassisvmhostnamectl icon-namecomputer-vmdeployment와 location은 빈 줄만 출력되어, 이 서버에는 두 값이 설정되어 있지 않았습니다.
hostnamectl location값을 넣는 꼴은 명령 뒤에 값을 적는 것이며, 이 글에서는 실행하지 않았습니다. chassis는 desktop, laptop, convertible, server, tablet, handset, watch, embedded와 가상 시스템용 vm, container 가운데 하나를 적습니다(공식 매뉴얼 기준).
hostnamectl chassis serverdeployment는 development, integration, staging, production 가운데 하나를 권하고, location은 [Berlin, Germany]나 [Left Rack, 2nd Shelf]처럼 사람이 읽는 자유 문구로 적습니다(공식 매뉴얼 기준).
hostnamectl deployment productionlocation 값에 공백이 들어가면 따옴표로 감싸 적습니다.
hostnamectl location 'Rack 2'값을 넣은 뒤 같은 명령을 인자 없이 실행하면 바뀐 값이 출력됩니다(공식 매뉴얼 기준).
5️⃣ hostnamectl 명령어 옵션
옵션은 hostnamectl 바로 뒤에 적습니다. --version은 hostnamectl이 들어 있는 systemd 버전을 출력하며, 둘째 줄의 빌드 기능 목록은 길어서 첫 줄만 옮겼습니다.
hostnamectl --versionsystemd 252 (252.39-1~deb12u2)📌 주요 옵션: 이 글에서 실행한 결과
| 옵션 | 하는 일 | 이 글에서 본 결과 | |
|---|---|---|---|
| --static | 상태 보기에서 static 호스트 이름만 출력 | server1.example.com 한 줄 | |
| --transient | 상태 보기에서 transient 호스트 이름만 출력 | static과 같은 server1.example.com 한 줄 | |
| --pretty | 상태 보기에서 pretty 호스트 이름만 출력 | 설정되지 않아 빈 줄 하나 | |
| --json=pretty | 결과를 JSON으로 출력, short는 한 줄, off는 JSON 끔 | 스무 칸이 나오고 HostnameSource는 static, PrettyHostname은 null | |
| --version | systemd 버전 출력 | 첫 줄 systemd 252 | |
| -h, --help | 짧은 도움말 출력 | Commands와 Options 목록, set-hostname은 목록에 없음 | |
| --no-ask-password | 권한이 필요한 작업에서 인증을 묻지 않음 | 일반 계정에서 호스트 이름을 바꾸자 Interactive authentication required로 거절, 종료 코드 1 |
📎 그 밖의 옵션: 공식 매뉴얼 기준
| 옵션 | 하는 일 | |
|---|---|---|
| -H, --host | 다른 서버에서 실행, [계정@]서버 꼴로 적으며 SSH로 접속 | |
| -M, --machine | 이 서버의 컨테이너에서 실행 |
🔲 hostnamectl 명령어 시뮬레이터
아래 시뮬레이터에서는 root 계정의 가상 서버에 상태 보기와 바꾸기 명령을 입력해 볼 수 있습니다. 바꾸는 명령은 공식 매뉴얼을 따른 흉내이며, 이 화면의 값만 바뀝니다.
🔢 FAQ & 추천 콘텐츠
ℹ️ 제휴 안내
본 사이트의 콘텐츠에는 제휴 링크가 포함되어 있습니다. 방문자가 이 링크를 통해 상품 또는 서비스를 구매하면 본 사이트는 판매처로부터 수수료를 지급받습니다. 이 과정에서 구매자가 지불하는 금액(이벤트 할인 시 금액이 내려갑니다↓)은 오르지 않습니다. 게시된 가격·할인·재고 정보는 작성 시점 기준이며 실제와 다를 수 있으므로, 구매 전 판매처에서 최종 확인하시기 바랍니다. 상품 선정과 평가는 자체 기준에 따라 작성되며, 수수료 지급 여부가 소개 순서나 평가 내용에 영향을 주지 않습니다.