Questo è abbastanza sconcertante. Qualcuno sa da dove il hostname
comando memorizza e legge il nome host?
Ho pensato che fosse / etc / hostname ma non ci sono file simili su questo sistema Linux che sto usando. Ho provato a usare strace per trovare dove si trovava ma nessuna chiamata in lettura ha restituito queste informazioni:
$ 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
Poi ho notato che ha reso univoco syscall che ha restituito queste informazioni:
uname({sys="Linux", node="server-name", ...}) = 0
Un grep ricorsivo in / etc / non restituisce nulla:
grep "server-name" -r /etc
Dove uname memorizza queste informazioni? Solo nella memoria?