ฉันใช้ RHEL 5.7 และhostnameคำสั่งนั้นให้ชื่อโฮสต์ที่ถูกต้องกับฉัน
แต่hostname -sและกลับ:hostname -f Unknown hostทำไม?
/etc/hostnameคืออะไร?
hostname -fใช้ DNS คุณมีรายการ DNS ย้อนกลับสำหรับ IP ของคุณหรือไม่
ฉันใช้ RHEL 5.7 และhostnameคำสั่งนั้นให้ชื่อโฮสต์ที่ถูกต้องกับฉัน
แต่hostname -sและกลับ:hostname -f Unknown hostทำไม?
/etc/hostnameคืออะไร?
hostname -fใช้ DNS คุณมีรายการ DNS ย้อนกลับสำหรับ IP ของคุณหรือไม่
คำตอบ:
(คัดลอกมาจากคำตอบของฉันเกี่ยวกับ SF )
hostnameคำสั่งส่งกลับผลลัพธ์ที่ได้จาก DNS /etc/hostsและ
hostnameเทียบเท่ากับuname -nและเป็น "ชื่อโฮสต์" จริงหรือ "ชื่อโหนด" ของกล่อง อาร์กิวเมนต์
อื่นทั้งหมดhostnameใช้ชื่อโหนดนี้เพื่อค้นหาข้อมูล
ดังนั้นก่อนที่จะไปเพิ่มเติมฉันควรอธิบาย/etc/hostsรูปแบบไฟล์
ฟิลด์แรกนั้นค่อนข้างชัดเจนคือที่อยู่ IP ของชื่อโฮสต์ทั้งหมดในบรรทัดควรแก้ไข ฟิลด์ที่สองคือชื่อโฮสต์หลักสำหรับ IP นั้น ฟิลด์ที่เหลือเป็นนามแฝง
ดังนั้นหากคุณเรียกใช้hostname -fมันจะพยายามแก้ไข IP สำหรับชื่อโหนดของคุณก่อน ขึ้นอยู่กับว่าคุณมีhosts:รายการที่กำหนดค่าใน/etc/nsswitch.confวิธีนี้จะแตกต่างกันไป
/etc/resolv.confจนกว่าจะได้รับ IP กลับมาจาก DNS /etc/hostsเพื่อค้นหาบรรทัดที่ชื่อโฮสต์หลักหรือชื่อแทนเป็นชื่อโหนดปัจจุบันของคุณ ( uname -n) จากนั้นส่งคืนที่อยู่ IP ในบรรทัดนั้น เมื่อมี IP แล้วจะลองค้นหาแบบย้อนกลับบน IP นั้น อีกครั้งก็จะใช้ DNS nsswitch.confสำหรับนี้และไฟล์โฮสต์ของคุณขึ้นอยู่กับคุณ ในกรณีที่ใช้ไฟล์โฮสต์ไฟล์นั้นจะส่งคืนรายการหลัก (ซึ่งเป็นฟิลด์แรกหลังจาก IP ในไฟล์)
hostname -aจะทำงานกับไฟล์โฮสต์ได้เนื่องจากทำการค้นหาแบบย้อนกลับใน DNS ให้ผลลัพธ์ 1 รายการเท่านั้น ด้วยไฟล์ hosts จะส่งคืน alises ในบรรทัดที่ตรงกัน (ซึ่งเป็นทุกอย่างหลังจากรายการแรกคือชื่อโฮสต์หลัก)
ดังนั้นโดยย่อเหตุผลที่เป็นไปได้สำหรับปัญหาของคุณคือคุณไม่มีรายการ/etc/hostsที่มีชื่อโฮสต์ของคุณ ( uname -n)
ตัวอย่าง
ถ้าชื่อโหนดของคุณคือ 'foobar' และคุณมีรายการ/etc/hostsเช่นนี้:
127.0.0.1 foobar.example.com foobar localhost.localdomain localhost
จากนั้นคุณจะได้รับผลลัพธ์คำสั่งต่อไปนี้:
# hostname
foobar
# uname -n
foobar
# hostname -f
foobar.example.com
# hostname -a
foobar localhost.localdomain localhost