Ini cukup membingungkan. Adakah yang tahu di mana hostname
perintah menyimpan dan membaca nama host?
Saya pikir itu adalah / etc / hostname tetapi tidak ada file pada sistem Linux yang saya gunakan. Saya mencoba menggunakan strace untuk menemukan di mana ia berada tetapi tidak ada panggilan baca yang mengembalikan informasi ini:
$ 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
Lalu saya perhatikan itu syscall tidak sama yang mengembalikan informasi ini:
uname({sys="Linux", node="server-name", ...}) = 0
Grep rekursif di / etc / menghasilkan apa-apa:
grep "server-name" -r /etc
Di mana uname menyimpan informasi ini? Hanya dalam ingatan?