Điều này khá khó hiểu. Có ai biết hostname
lệnh lưu trữ và đọc tên máy chủ từ đâu không?
Tôi nghĩ đó là / etc / hostname nhưng không có tệp nào trên hệ thống Linux này mà tôi đang sử dụng. Tôi đã thử sử dụng strace để tìm vị trí của nó nhưng không có cuộc gọi đọc nào trả về thông tin này:
$ 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
Sau đó, tôi nhận thấy nó đã phá hủy tòa nhà đã trả lại thông tin này:
uname({sys="Linux", node="server-name", ...}) = 0
Một grep đệ quy trong / etc / không trả về gì:
grep "server-name" -r /etc
Trường hợp nào uname lưu trữ thông tin này? Chỉ trong ký ức?