คำสั่ง SS ใน Linux คืออะไร?

What Is Ss Command Linux



ความสามารถในการดูและทำความเข้าใจการเชื่อมต่อซ็อกเก็ตเครือข่ายที่เกิดขึ้นในระบบ Linux ของคุณนั้นมีประโยชน์เมื่อแก้ไขปัญหาและรับสถานะระบบของคุณ

บทช่วยสอนนี้จะนำคุณไปสู่มุมมองเชิงลึกเกี่ยวกับยูทิลิตีบรรทัดคำสั่ง ss ที่ช่วยให้เราดูการเชื่อมต่อเครือข่ายและข้อมูลรายละเอียดอื่นๆ การใช้สิ่งที่คุณจะได้เรียนรู้จากคู่มือนี้ คุณควรทำความเข้าใจและใช้ยูทิลิตี ss เพื่อให้ได้ข้อมูลและประสิทธิผลสูงสุด







เรามาเริ่มกันเลย



เอสเอสคืออะไร?

โดยสรุป ss เป็นยูทิลิตีบรรทัดคำสั่งที่อนุญาตให้ผู้ใช้ดัมพ์ข้อมูลซ็อกเก็ตเครือข่าย คล้ายกับเครื่องมือ netstat ยอดนิยม แต่มีคุณสมบัติและข้อมูลมากกว่า netstat



Ss ช่วยให้คุณดูข้อมูลโดยละเอียดเกี่ยวกับวิธีที่เครื่องของคุณสื่อสารกับทรัพยากรอื่นๆ เช่น เครือข่าย บริการ และการเชื่อมต่อเครือข่าย





ด้วยการใช้ข้อมูล ss คุณสามารถเข้าใจได้อย่างชัดเจนว่าเกิดอะไรขึ้น เมื่อใด และอย่างไร จะมีประโยชน์มากในระหว่างกระบวนการแก้ไขปัญหา

การใช้คำสั่งพื้นฐาน

การใช้คำสั่ง ss นั้นง่ายพอๆ กับการพิมพ์ตัวอักษรสองตัวลงในเทอร์มินัลแล้วกด Enter แม้ว่าจะสนับสนุนอาร์กิวเมนต์จำนวนมาก การเรียกคำสั่ง ss โดยไม่มีตัวเลือกจะแสดงข้อมูลเกี่ยวกับการเชื่อมต่อทั้งหมด โดยไม่คำนึงถึงสถานะของพวกเขา



เมื่อใช้งานโดยไม่มีตัวเลือก คำสั่ง ss จะดัมพ์ข้อมูลจำนวนมากที่คุณสามารถอ้างอิงได้ในภายหลัง ในการบันทึกเอาต์พุตไปยังไฟล์ คุณสามารถใช้ตัวดำเนินการเปลี่ยนเส้นทางเอาต์พุตตามที่แสดงในคำสั่ง:

sudo ss > output.txt

บันทึก : ควรสังเกตว่าการรันคำสั่ง ss ทั้งที่มีและไม่มีสิทธิ์ sudo อาจให้ผลลัพธ์ที่แตกต่างกัน ซึ่งหมายความว่าคำสั่ง ss จะแสดงรายการข้อมูลตามบริบทของผู้ใช้

ตัวเลือกคำสั่งพื้นฐาน ss

ดังที่กล่าวไว้ คำสั่ง ss รองรับตัวเลือกต่างๆ ที่ให้คุณควบคุมเอาต์พุตและข้อมูลที่แสดง คุณสามารถดูตัวเลือกพื้นฐานโดยใช้คำสั่ง:

ss --help

ตัวเลือกพื้นฐานหลายอย่างที่รองรับโดยคำสั่ง ss ได้แก่:

  1. -V หรือ – รุ่น: ให้คุณดูยูทิลิตี้ ss เวอร์ชันที่ติดตั้ง
  2. -H หรือ –no-header: แฟล็กนี้ระงับบรรทัดส่วนหัว บรรทัดส่วนหัวเริ่มต้นของคำสั่ง ss ประกอบด้วยค่าต่อไปนี้: Netid, State, Recv-Q, Send-Q, Local Address:Port และ Peer Address:Port การปิดส่วนหัวมีประโยชน์เมื่อคุณต้องการประมวลผลเอาต์พุต ss โดยใช้เครื่องมืออื่นๆ
  3. -t หรือ –tcp: แจ้งคำสั่ง ss ให้แสดงเฉพาะการเชื่อมต่อ TCP
  4. -a หรือ – ทั้งหมด: แสดงการเชื่อมต่อทั้งการฟังและไม่ฟัง
  5. -e หรือ – ขยาย: แสดงข้อมูลเพิ่มเติมเกี่ยวกับซ็อกเก็ตเครือข่าย
  6. -u หรือ –udp: บอกคำสั่ง ss ให้แสดงเฉพาะการเชื่อมต่อ UDP
  7. -s หรือ – สรุป: แสดงสรุปสถิติการเชื่อมต่อ
  8. -l หรือ – ฟัง: แสดงซ็อกเก็ตการฟังที่ไม่ได้รวมอยู่ในค่าเริ่มต้น
  9. -p หรือ – กระบวนการ: แสดงกระบวนการโดยใช้ซ็อกเก็ต
  10. -4 หรือ –ipv4: แจ้งคำสั่ง ss ให้แสดงเฉพาะการเชื่อมต่อ IPv4
  11. -6 หรือ –ipv6: แสดงการเชื่อมต่อ IPv6 เท่านั้น
  12. -m หรือ –memory: แสดงการใช้หน่วยความจำซ็อกเก็ต

แม้ว่าข้างต้นจะเป็นอาร์กิวเมนต์พื้นฐานบางส่วนที่คุณจะใช้เมื่อทำงานกับ ss แต่ก็รองรับตัวเลือกเพิ่มเติมมากมาย ดูคู่มือสำหรับข้อมูลเพิ่มเติม

แสดงพอร์ตการฟังและไม่ฟัง

ในการแสดงข้อมูลเกี่ยวกับพอร์ตการรับฟังและไม่รับฟัง คุณสามารถใช้แฟล็ก -a ตามที่แสดงในคำสั่งด้านล่าง:

ss -a

คุณสามารถไพพ์เอาต์พุตจากคำสั่ง ss สำหรับข้อมูลเฉพาะเพิ่มเติมโดยใช้เครื่องมือเช่น grep

ตัวอย่างเช่น:

ss -a | grep ssh

แสดงการเชื่อมต่อ TCP

การใช้แฟล็ก -t ด้วยคำสั่ง ss คุณสามารถกรองเพื่อแสดงเฉพาะการเชื่อมต่อ TCP ตามที่แสดงในคำสั่งด้านล่าง:

ss -t

หากต้องการข้อมูลเพิ่มเติม คุณสามารถระบุให้แสดงการเชื่อมต่อ TCP ที่รับฟังโดยใช้แฟล็ก -l และ -t ตามที่แสดงในคำสั่งด้านล่าง:

sudo ss -tl

แสดงการเชื่อมต่อ UDP

หากต้องการแสดงการเชื่อมต่อ UDP ทั้งหมด ให้ใช้แฟล็ก -l ตามที่แสดงในคำสั่งด้านล่าง:

sudo ss -au

ทำความเข้าใจกับ Header Line

ดังที่คุณเห็นจากเอาต์พุตต่างๆ ที่ให้ไว้ในคำสั่งด้านบน ss จะแสดงข้อมูลจำนวนมาก รวมถึงรูปแบบส่วนหัวเว้นแต่จะระบุไว้อย่างชัดเจนโดยใช้แฟล็ก -H ซึ่งลบบรรทัดส่วนหัว

การทำความเข้าใจบรรทัดส่วนหัวจะเป็นประโยชน์ในการแสดงข้อมูลในส่วนใดส่วนหนึ่ง ประกอบด้วยแถวต่อไปนี้:

รัฐ, Recv-Q, Send-Q, ที่อยู่ในท้องถิ่น:พอร์ต, ที่อยู่เพียร์:Port
  1. สถานะ: แถวสถานะของส่วนหัวระบุสถานะของการเชื่อมต่อ เช่น LISTEN, ESTABLISHED, CLOSED, TIME-WAIT เป็นต้น แถวส่วนหัวนี้มีประโยชน์ในการเชื่อมต่อ TCP เนื่องจาก UDP ไม่ได้ติดตามสถานะของแพ็กเก็ต โปรโตคอลไร้สัญชาติ
  2. Recv-Q: นี่แสดงจำนวนไบต์ทั้งหมดที่โปรแกรมไม่ได้คัดลอกมาซึ่งเชื่อมต่อกับซ็อกเก็ตเฉพาะ
  3. ส่ง-Q: จำนวนไบต์ที่ไม่ใช่ ACK โดยโฮสต์ระยะไกล
  4. ที่อยู่ในท้องถิ่น:พอร์ต: นี่แสดงซ็อกเก็ตภายในเครื่องและหมายเลขพอร์ตที่ผูกไว้กับการเชื่อมต่อ
  5. ที่อยู่เพียร์:พอร์ต: ซ็อกเก็ตระยะไกลและหมายเลขพอร์ตที่ผูกไว้สำหรับการเชื่อมต่อ

แสดงกระบวนการ

ในการรับกระบวนการโดยใช้ซ็อกเก็ตเฉพาะ คุณสามารถใช้แฟล็ก -p ตามที่แสดงในคำสั่งด้านล่าง:

sudo ss - tp

ดังที่แสดงในผลลัพธ์ด้านบน คุณสามารถดูการเชื่อมต่อ TCP ของกระบวนการได้โดยใช้ซ็อกเก็ต รวมถึง PID

กรองตามสถานะการเชื่อมต่อ (TCP)

ดังที่คุณทราบ TCP รองรับสถานะต่างๆ ที่เราจะไม่กล่าวถึงในบทช่วยสอนนี้ อย่างไรก็ตาม คุณสามารถกรองเอาต์พุต ss เพื่อรับเฉพาะการเชื่อมต่อกับสถานะ TCP ที่รองรับ

sudo ss -t สถานะการฟัง

คุณจะสังเกตเห็นผลลัพธ์ในภาพที่แสดงด้านบนไม่มีสถานะในส่วนหัว เนื่องจากเรากรองผลลัพธ์โดยใช้สถานะที่ระบุ ดังนั้น จะแสดงเฉพาะการเชื่อมต่อการฟังเท่านั้น

บทสรุป

ในบทช่วยสอนนี้ เราได้พูดถึงวิธีใช้และทำความเข้าใจกับยูทิลิตี้คำสั่ง ss เป็นเครื่องมือที่ทรงพลังเมื่อคุณต้องการมองข้ามกระบวนการแสดงรายการ เพื่อทำความเข้าใจวิธีการทำงาน คุณสามารถเรียนรู้เพิ่มเติมจากคู่มืออย่างเป็นทางการ

พิจารณาทรัพยากรต่อไปนี้:

https://th.wikipedia.org/wiki/Iproute2

http://www.policyrouting.org/iproute2.doc.html