이것은 매우 수수께끼입니다. 이 hostname
명령이 호스트 이름을 저장하고 읽는 위치를 아는 사람이 있습니까 ?
나는 그것이 /etc/hostname이라고 생각했지만 내가 사용하고 있는 Linux 시스템에는 그러한 파일이 없습니다. strace를 사용하여 위치를 찾으려고 시도했지만 읽기 호출에서 다음을 반환하지 않았습니다.
$ strace hostname 2>&1 | grep read
read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0\340^\0\0\0\0\0\0"..., 832) = 832
read(3, "\177ELF\2\1\1\3\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0\340\30\2\0\0\0\0\0"..., 832) = 832
read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0\320\16\0\0\0\0\0\0"..., 832) = 832
read(3, "nodev\tsysfs\nnodev\trootfs\nnodev\tr"..., 1024) = 248
read(3, "", 1024) = 0
그런 다음 uname 시스템 호출을 실행하고 다음 정보를 반환한 것을 확인했습니다.
uname({sys="Linux", node="server-name", ...}) = 0
/etc/의 재귀 grep은 아무것도 반환하지 않습니다.
grep "server-name" -r /etc
uname은 이 정보를 어디에 저장합니까? 그냥 기억 속에?
ベストアンサー1
다음과 같은 관련 U&L Q&A를 확인하세요.uname은 어디서 정보를 얻나요?. 시스템이 실행되는 동안 호스트 이름과 같은 정보는 Linux 커널의 데이터 구조에 유지됩니다. 이 정보는 배포판과 관련된 다양한 메커니즘을 통해 시스템 부팅 중에 다시 얻을 수 있습니다.
매뉴얼 페이지를 보면 man 2 uname
데이터 구조가 언급되어 있는 것을 볼 수 있습니다.
struct utsname {
char sysname[]; /* Operating system name (e.g., "Linux") */
char nodename[]; /* Name within "some implementation-defined
network" */
char release[]; /* Operating system release (e.g., "2.6.28") */
char version[]; /* Operating system version */
char machine[]; /* Hardware identifier */
#ifdef _GNU_SOURCE
char domainname[]; /* NIS or YP domain name */
#endif
};
구조의 두 번째 요소 nodename[]
는 호스트 이름이 저장되는 Linux 커널의 위치입니다.
/프로세스
살펴보면 /proc/sys/kernel/hostname
여기에도 호스트 이름이 노출되어 있습니다. 이는 가상 위치이지만 /proc
호스트 이름에 액세스하는 대체 방법을 제공합니다. 시스템의 도메인 이름도 여기에 있지만 /proc/sys/kernel/domainname
실제로는 NIS/YP 인증 시스템에만 사용됩니다.
노트:흥미롭게도 이 값은UTS 네임스페이스 특정.
예
$ sudo hostname
oldhost
$ sudo unshare --uts /bin/bash
$ sudo echo newhost > /proc/sys/kernel/hostname
$ hostname
newhost
$ exit
$ hostname
oldhost
호스트 이름 조작
Systemd가 있는 시스템에서는 cli 도구를 사용하여 hostnamectl
호스트 이름을 가져오거나 설정할 수 있습니다. 이렇게 하면 재부팅 사이에 영구적으로 변경됩니다.
$ sudo hostnamectl set-hostname --static somehostname
다음을 통해 그 가치를 확인할 수도 있습니다 sysctl
.
$ sudo sysctl -a | grep kernel.hostname
kernel.hostname = myhostname
Fedora 릴리스의 경우 이 Ask.fedoraproject.org Q&A에서는 다음과 같은 주제를 매우 포괄적으로 다룹니다.호스트 이름을 올바르게 설정하기 - Amazon EC2의 Fedora 20.