这很令人困惑。有人知道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 syscall,返回了此信息:
uname({sys="Linux", node="server-name", ...}) = 0
/ etc /中的递归grep不返回任何内容:
grep "server-name" -r /etc
uname在哪里存储此信息?只是在记忆中?