linux下hostname获取过程分析

linux下hostname获取过程分析

Posted by lwk on October 8, 2022

hostname是centos内置的获取主机名的命令,该命令对应的源码是net-tools [root@] /data0/src/os/net-tools$ ls hostname* hostname hostname.c hostname.o

其中hostname二进制是编译出来的可执行文件 通过GDB hostname可以看到,最终是通过系统调用gethostname获取主机名 image 看下内核源码,本文以内核5.5.0版本为主 image gethostname通过utsname获取对应nodename,结构是struct new_utsname image 从utsname函数可以看出,是通过获取current这个task_struct的nsproxy->uts_ns->name成员从而返回主机信息 image image 其中count表示的是进程数,增加一个进程count数就加一 image image

这里还涉及到一个kernel的知识点就是namespace,hostname涉及到了kernel的UTS namespace,关于namespace本文不做阐述,以后有机会再详细分析