นี่มันทำให้งงมาก ไม่มีใครทราบว่า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
จากนั้นฉันสังเกตเห็นว่ามันไม่ได้สร้างชื่อ syscall ที่ส่งคืนข้อมูลนี้
uname({sys="Linux", node="server-name", ...}) = 0
grep แบบเรียกซ้ำใน / etc / ไม่ส่งคืนอะไร:
grep "server-name" -r /etc
uname เก็บข้อมูลนี้ที่ไหน แค่ในความทรงจำ?