คำสั่ง ss: ตรวจสอบพอร์ตและโปรเซสบน Linux เทียบกับ netstat

สภาพแวดล้อมทดสอบตระกูล DebianDebian 12iproute2 6.1.0บัญชีผู้ใช้ทั่วไปตรวจสอบเมื่อ 2026-11-04
คำสั่งเครือข่ายssตำแหน่ง/usr/bin/ss

บนเซิร์ฟเวอร์ Linux คุณตรวจสอบได้ด้วยคำสั่ง ss ว่าพอร์ตใดเปิดอยู่และใครกำลังเชื่อมต่ออยู่ ss เป็นเครื่องมือดูซ็อกเก็ตของ iproute2 ที่มาแทน netstat เมื่อใช้ ss ดูพอร์ตที่รอรับ (LISTEN) และการเชื่อมต่อบนเซิร์ฟเวอร์ Debian 12 พบว่าในบัญชีทั่วไป แม้จะใส่ -p ก็ไม่มีชื่อโปรแกรมที่บัญชีอื่นเปิดไว้แสดงในคอลัมน์ Process

ผลลัพธ์ด้านล่างได้จากการรันด้วย locale ภาษาอังกฤษ ที่อยู่ของเซิร์ฟเวอร์และอีกฝั่งแสดงเป็นที่อยู่ตัวอย่าง

1️⃣ วิธีใช้คำสั่ง ss เบื้องต้นและคอลัมน์ในผลลัพธ์

ถ้ารัน ss โดยไม่ใส่ตัวเลือก พอร์ตที่รอรับจะไม่แสดง และจะเห็นเฉพาะซ็อกเก็ตที่เชื่อมต่อแล้ว บนเซิร์ฟเวอร์ทดสอบ บรรทัดแรก ๆ ทั้งหมดเป็นซ็อกเก็ต Unix (u_str, u_dgr) ที่โปรแกรมภายในเซิร์ฟเวอร์ใช้สื่อสารกันเอง

ss | head -n 5
Netid State Recv-Q Send-Q                              Local Address:Port       Peer Address:Port    Process
u_str ESTAB 0      0                                               * 1013903               * 1013904
u_dgr ESTAB 0      0                                               * 1013960               * 13394
u_str ESTAB 0      0                                               * 1013907               * 1013908
u_str ESTAB 0      0                                               * 46066198              * 46066199

ดังนั้นถ้าต้องการดูเฉพาะการเชื่อมต่อ TCP ให้ใส่ -t ซ็อกเก็ต Unix จะหายไป และตรงตำแหน่งพอร์ตจะแสดงชื่อบริการอย่าง ssh และ https แทนหมายเลข

ss -t
State Recv-Q Send-Q Local Address:Port  Peer Address:Port Process
ESTAB 0      0       203.0.113.10:ssh   198.51.100.7:51114
ESTAB 0      0       203.0.113.10:26676   192.0.2.15:https
ESTAB 0      0       203.0.113.10:29714   192.0.2.16:https

ถ้าใส่ -n ด้วย หมายเลขพอร์ตจะแสดงตามเดิมโดยไม่เปลี่ยนเป็นชื่อบริการ

ss -tn
State Recv-Q Send-Q Local Address:Port  Peer Address:Port Process
ESTAB 0      0       203.0.113.10:22    198.51.100.7:51114
ESTAB 0      0       203.0.113.10:26676   192.0.2.15:443
ESTAB 0      0       203.0.113.10:29714   192.0.2.16:443

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

ในซ็อกเก็ตที่รอรับ Recv-Q หมายถึงจำนวนการเชื่อมต่อที่ค้างอยู่ในคิว และ Send-Q หมายถึงขนาดสูงสุดของคิว ความหมายของสองคอลัมน์นี้มาจากคำอธิบายในหน้า man netstat(8) ของ net-tools

2️⃣ ตรวจสอบพอร์ตบน Linux (-tln, -uln, -tulpn)

ผลลัพธ์แบบไม่ใส่ตัวเลือกจะไม่แสดงพอร์ตที่รอการเชื่อมต่อ เวลาตรวจสอบพอร์ตที่เปิดอยู่จึงต้องใส่ -l ซึ่งเลือกเฉพาะซ็อกเก็ตที่รอรับ [ss -tln] แสดงพอร์ต TCP ที่รอรับอยู่เป็นหมายเลข

ss -tln
State  Recv-Q Send-Q Local Address:Port Peer Address:PortProcess
LISTEN 0      128          0.0.0.0:22        0.0.0.0:*
LISTEN 0      511          0.0.0.0:80        0.0.0.0:*
LISTEN 0      511          0.0.0.0:443       0.0.0.0:*
LISTEN 0      511        127.0.0.1:8080      0.0.0.0:*
LISTEN 0      128             [::]:22           [::]:*
LISTEN 0      511             [::]:80           [::]:*
LISTEN 0      511             [::]:443          [::]:*

ถ้า Local Address เป็น 0.0.0.0 จะรับการเชื่อมต่อที่เข้ามาทุกที่อยู่ IPv4 ของเซิร์ฟเวอร์ ถ้าเป็น 127.0.0.1 จะเชื่อมต่อได้จากภายในเซิร์ฟเวอร์เท่านั้น [::] หมายถึงทุกที่อยู่ของ IPv6 พอร์ต 22, 80 และ 443 จึงเปิดอยู่ทั้งฝั่ง IPv4 และ IPv6

ถ้าไม่ใส่ -n หมายเลขพอร์ตจะเปลี่ยนเป็นชื่อบริการ พอร์ต 8080 จะแสดงเป็น http-alt

ss -tl
State  Recv-Q Send-Q Local Address:Port     Peer Address:PortProcess
LISTEN 0      128          0.0.0.0:ssh           0.0.0.0:*
LISTEN 0      511          0.0.0.0:http          0.0.0.0:*
LISTEN 0      511          0.0.0.0:https         0.0.0.0:*
LISTEN 0      511        127.0.0.1:http-alt      0.0.0.0:*
LISTEN 0      128             [::]:ssh              [::]:*
LISTEN 0      511             [::]:http             [::]:*
LISTEN 0      511             [::]:https            [::]:*

UDP ไม่สร้างการเชื่อมต่อ แม้แต่ซ็อกเก็ตที่รอรับก็ไม่มีสถานะ LISTEN คอลัมน์สถานะในผลลัพธ์ของ [ss -uln] เป็น UNCONN ทั้งหมด พอร์ต 68 (bootpc) คือไคลเอนต์ DHCP และพอร์ต 123 (ntp) คือพอร์ตสำหรับซิงค์เวลา

ss -uln
State  Recv-Q Send-Q Local Address:Port Peer Address:PortProcess
UNCONN 0      0            0.0.0.0:68        0.0.0.0:*
UNCONN 0      0       203.0.113.10:123       0.0.0.0:*
UNCONN 0      0          127.0.0.1:123       0.0.0.0:*
UNCONN 0      0            0.0.0.0:123       0.0.0.0:*
UNCONN 0      0              [::1]:123          [::]:*
UNCONN 0      0               [::]:123          [::]:*

ถ้าต้องการดู TCP และ UDP พร้อมกัน ให้รวมตัวเลือกเข้าด้วยกันแบบ [ss -tulpn] เมื่อมีมากกว่าหนึ่งประเภท จะมีคอลัมน์ Netid เพิ่มขึ้นที่หน้าสุด

ss -tulpn
Netid State  Recv-Q Send-Q Local Address:Port Peer Address:PortProcess
udp   UNCONN 0      0            0.0.0.0:68        0.0.0.0:*
udp   UNCONN 0      0       203.0.113.10:123       0.0.0.0:*
udp   UNCONN 0      0          127.0.0.1:123       0.0.0.0:*
udp   UNCONN 0      0            0.0.0.0:123       0.0.0.0:*
udp   UNCONN 0      0              [::1]:123          [::]:*
udp   UNCONN 0      0               [::]:123          [::]:*
tcp   LISTEN 0      128          0.0.0.0:22        0.0.0.0:*
tcp   LISTEN 0      511          0.0.0.0:80        0.0.0.0:*
tcp   LISTEN 0      511          0.0.0.0:443       0.0.0.0:*
tcp   LISTEN 0      511        127.0.0.1:8080      0.0.0.0:*
tcp   LISTEN 0      128             [::]:22           [::]:*
tcp   LISTEN 0      511             [::]:80           [::]:*
tcp   LISTEN 0      511             [::]:443          [::]:*

3️⃣ ตรวจสอบโปรเซสด้วยคำสั่ง ss (-p)

-p คือตัวเลือกที่แสดงโปรแกรมที่ใช้ซ็อกเก็ตในคอลัมน์ Process แต่เมื่อรัน [ss -tlnp] ในบัญชีทั่วไปบนเซิร์ฟเวอร์ทดสอบ คอลัมน์ Process กลับว่างเปล่าดังด้านล่าง ดูเหมือนตัวเลือกไม่มีผล

ss -tlnp
State  Recv-Q Send-Q Local Address:Port Peer Address:PortProcess
LISTEN 0      128          0.0.0.0:22        0.0.0.0:*
LISTEN 0      511          0.0.0.0:80        0.0.0.0:*
LISTEN 0      511          0.0.0.0:443       0.0.0.0:*
LISTEN 0      511        127.0.0.1:8080      0.0.0.0:*
LISTEN 0      128             [::]:22           [::]:*
LISTEN 0      511             [::]:80           [::]:*
LISTEN 0      511             [::]:443          [::]:*

ss หาโปรเซสที่ใช้ซ็อกเก็ตโดยอ่านโฟลเดอร์ fd ของแต่ละโปรเซสใต้ /proc บัญชีทั่วไปเปิดโฟลเดอร์ fd ของโปรเซสที่บัญชีอื่นเปิดไว้ไม่ได้ ชื่อของโปรแกรมนั้นจึงไม่ปรากฏในคอลัมน์ ถ้าเปิดโฟลเดอร์ของโปรเซสหมายเลข 1 ที่ root เปิดไว้จากบัญชีทั่วไป จะเกิดข้อผิดพลาดเรื่องสิทธิ์

ls /proc/1/fd
ls: cannot open directory '/proc/1/fd': Permission denied

โปรแกรมที่เปิดด้วยบัญชีของคุณเองจะแสดงในคอลัมน์ Process แม้ในบัญชีทั่วไป ได้ตรวจสอบโดยเปิดเว็บเซิร์ฟเวอร์อย่างง่ายของ python3 ที่พอร์ต 8000 ของ 127.0.0.1

python3 -m http.server 8000 --bind 127.0.0.1 &

เมื่อเปิดแล้ว ให้ใส่ [sport = :8000] เพื่อดูเฉพาะบรรทัดของพอร์ต 8000

ss -tlnp sport = :8000
State  Recv-Q Send-Q Local Address:Port Peer Address:PortProcess
LISTEN 0      5          127.0.0.1:8000      0.0.0.0:*    users:(("python3",pid=343015,fd=3))

ในวงเล็บหลัง users จะมีชื่อโปรแกรม pid และหมายเลขตัวอธิบายไฟล์ (fd) เรียงตามลำดับ

เมื่อตรวจสอบเสร็จแล้ว ให้ปิดเว็บเซิร์ฟเวอร์อย่างง่ายด้วย [kill %1] หลังปิดแล้วถ้ารัน [ss -tln sport = :8000] อีกครั้ง จะเหลือเพียงบรรทัดหัวตาราง และไม่มีบรรทัดของพอร์ต 8000

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

ss -tlnp sport = :443
State  Recv-Q Send-Q Local Address:Port Peer Address:PortProcess
LISTEN 0      511          0.0.0.0:443       0.0.0.0:*    users:(("app",pid=2101,fd=6),("app",pid=2100,fd=6))
LISTEN 0      511             [::]:443          [::]:*    users:(("app",pid=2101,fd=7),("app",pid=2100,fd=7))

ถ้าต้องการหาโปรแกรมจากหมายเลขพอร์ต ก็ใช้ คำสั่ง lsof ในรูปแบบ [lsof -i :443] ได้เช่นกัน

คอลัมน์ Process เปลี่ยนไปอย่างไรตามบัญชี ดูเปรียบเทียบได้ในไดอะแกรมด้านล่างโดยสลับบัญชี

🧭 ss -p กับบัญชี: เงื่อนไขที่คอลัมน์ Process มีข้อมูล
แผนภาพอธิบาย
👤 บัญชี
$# ss -tlnp
ซ็อกเก็ตที่รอรับข้อมูลโปรเซสคอลัมน์ Process
0.0.0.0:22LISTEN
➜
/proc/812/fdเจ้าของ: root
➜
โปรเซสของบัญชีอื่น: อ่านไม่ได้root: อ่านได้ทุกโปรเซสคอลัมน์ Process ว่างusers:(("sshd",pid=812,fd=3))
127.0.0.1:8080LISTEN
➜
/proc/2100/fdเจ้าของ: root
➜
โปรเซสของบัญชีอื่น: อ่านไม่ได้root: อ่านได้ทุกโปรเซสคอลัมน์ Process ว่างusers:(("app",pid=2100,fd=3))
127.0.0.1:8000LISTEN
➜
/proc/343015/fdเจ้าของ: user
➜
โปรเซสของบัญชีฉัน: อ่านได้root: อ่านได้ทุกโปรเซสusers:(("python3",pid=343015,fd=3))
บัญชีทั่วไปอ่านข้อมูล /proc ของโปรเซสที่บัญชีอื่นเปิดไว้ไม่ได้ คอลัมน์ Process ในบรรทัดเหล่านั้นจึงว่าง และมีข้อมูลเฉพาะบรรทัด python3 ที่เปิดด้วยบัญชีของคุณเอง
root อ่านข้อมูลของทุกโปรเซสได้ จึงมีชื่อโปรแกรมและ pid ของแต่ละซ็อกเก็ตที่รอรับแสดงในคอลัมน์ Process

4️⃣ ตัวเลือกกรองสถานะและพอร์ตของ ss

  • ↪️ state, dport, sport

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

ถ้าเขียนชื่อสถานะต่อท้าย state จะเหลือเฉพาะซ็อกเก็ตในสถานะนั้น ผลลัพธ์ของ [ss -tn state established] ไม่มีคอลัมน์ State และเริ่มที่คอลัมน์ Recv-Q

ss -tn state established
Recv-Q Send-Q Local Address:Port  Peer Address:Port Process
0      0       203.0.113.10:22    198.51.100.7:51114
0      0       203.0.113.10:26676   192.0.2.15:443
0      0       203.0.113.10:29714   192.0.2.16:443

พอร์ตกรองได้ด้วย dport (พอร์ตของอีกฝั่ง) และ sport (พอร์ตฝั่งเรา) การเชื่อมต่อที่ออกจากเซิร์ฟเวอร์ไปยังเซิร์ฟเวอร์ https ภายนอกเลือกได้ด้วย [dport = :443]

ss -tn dport = :443
State Recv-Q Send-Q Local Address:Port  Peer Address:PortProcess
ESTAB 0      0       203.0.113.10:26676   192.0.2.15:443
ESTAB 0      0       203.0.113.10:29714   192.0.2.16:443

ถ้าใช้ sport ร่วมกับ -l จะตรวจสอบได้เพียงว่าพอร์ตนั้นกำลังรอรับอยู่หรือไม่

ss -tln sport = :22
State  Recv-Q Send-Q Local Address:Port Peer Address:PortProcess
LISTEN 0      128          0.0.0.0:22        0.0.0.0:*
LISTEN 0      128             [::]:22           [::]:*

ถ้ามีหลายเงื่อนไข ให้รวมด้วยวงเล็บและ or แล้วครอบด้วยเครื่องหมายคำพูดเดี่ยว เพื่อไม่ให้เชลล์อ่านวงเล็บก่อน ด้านล่างคือผลลัพธ์ที่เลือกเฉพาะการเชื่อมต่อ ssh ตามตัวอย่างในหน้า man

ss -tn state established '( dport = :ssh or sport = :ssh )'
Recv-Q Send-Q Local Address:Port Peer Address:Port Process
0      0       203.0.113.10:22   198.51.100.7:51114

TIME-WAIT คือสถานะที่ค้างอยู่ครู่หนึ่งหลังการเชื่อมต่อถูกตัด สถานะนี้ไม่แสดงในผลลัพธ์ปกติ จึงต้องเลือกแยกด้วย [state time-wait] จึงจะเห็น

ss -tn state time-wait
Recv-Q Send-Q Local Address:Port  Peer Address:PortProcess
0      0          127.0.0.1:28750    127.0.0.1:80
0      0          127.0.0.1:57698    127.0.0.1:8080
0      0              [::1]:31936        [::1]:80

ถ้าเขียนชื่อสถานะผิด คำสั่งจะจบทันทีโดยเหลือเพียงข้อผิดพลาด [wrong state name] หนึ่งบรรทัด ด้านล่างคือผลลัพธ์ที่ตั้งใจใส่ foo ชื่อที่ใช้ได้ดูได้จากบรรทัด TCP-STATES ในผลลัพธ์ของ [ss -h]

ss -tn state foo
ss: wrong state name: foo

📌 ตัวเลือกหลัก: ผลที่รันในบทความนี้

ตัวเลือกหน้าที่ผลที่เห็นในบทความนี้
-tแสดงเฉพาะซ็อกเก็ต TCPซ็อกเก็ต Unix หายไป และตรงตำแหน่งพอร์ตแสดงชื่อบริการอย่าง ssh และ https
-nแสดงเป็นหมายเลขพอร์ตแทนชื่อบริการใน ss -tn แสดง ssh เป็น 22 และ https เป็น 443
-lแสดงเฉพาะซ็อกเก็ตที่รอรับ (LISTEN)ss -tln แสดงพอร์ตที่รอรับอย่าง 22, 80 และ 443
-uแสดงเฉพาะซ็อกเก็ต UDPคอลัมน์สถานะของ ss -uln เป็น UNCONN ทั้งหมด
-pแสดงโปรแกรมที่ใช้ซ็อกเก็ตในคอลัมน์ Processในบัญชีทั่วไป มีเพียง python3 ที่บัญชีฉันเปิดไว้ที่แสดงชื่อและ pid ส่วนโปรแกรมของบัญชีอื่นว่าง
-sสรุปจำนวนตามประเภทแทนรายการซ็อกเก็ตestab 9 ในบรรทัด TCP ตรงกับ 9 บรรทัดของผลลัพธ์ state established เมื่อไม่นับบรรทัดหัวตาราง
-4แสดงเฉพาะซ็อกเก็ต IPv4ใน ss -t4ln บรรทัดที่ขึ้นต้นด้วย [::] หายไป
-6แสดงเฉพาะซ็อกเก็ต IPv6ใน ss -t6ln บรรทัดที่ขึ้นต้นด้วย 0.0.0.0 และ 127.0.0.1 หายไป
-Hแสดงเฉพาะบรรทัดซ็อกเก็ตโดยไม่มีบรรทัดหัวตารางจำนวนบรรทัดของ ss -H -tln | wc -l ไม่นับบรรทัดหัวตาราง
state สถานะเหลือเฉพาะซ็อกเก็ตในสถานะนั้นผลลัพธ์ของ state established เริ่มที่ Recv-Q โดยไม่มีคอลัมน์ State ส่วนชื่อที่ไม่มีอยู่จะได้ [wrong state name: foo]
dport = :พอร์ตกรองตามพอร์ตของอีกฝั่งdport = :443 แสดงการเชื่อมต่อที่ออกไปยังเซิร์ฟเวอร์ https ภายนอกสองบรรทัด
sport = :พอร์ตกรองตามพอร์ตฝั่งเราsport = :22 ที่ใช้ร่วมกับ -l แสดงพอร์ต 22 ที่รอรับสองบรรทัด ทั้ง IPv4 และ IPv6
src ที่อยู่เหลือเฉพาะซ็อกเก็ตของที่อยู่นั้นss -tln src 127.0.0.1 แสดงเฉพาะพอร์ตฝั่ง 127.0.0.1 ที่รับการเชื่อมต่อจากภายในเซิร์ฟเวอร์เท่านั้น

📎 ตัวเลือกอื่น: ตามคู่มือทางการ

ตัวเลือกหน้าที่
-a, --allแสดงซ็อกเก็ตที่รอรับและที่เชื่อมต่ออยู่พร้อมกัน
-r, --resolveแปลงที่อยู่และหมายเลขพอร์ตเป็นชื่อ
-e, --extendedแสดงข้อมูลละเอียดของแต่ละซ็อกเก็ต เช่น uid และ inode
-o, --optionsแสดงข้อมูลตัวจับเวลา เช่น การส่งซ้ำของ TCP และ keepalive
-m, --memoryแสดงหน่วยความจำที่แต่ละซ็อกเก็ตใช้
-i, --infoแสดงข้อมูลภายในของ TCP (rtt, cwnd เป็นต้น)
-x, --unixแสดงเฉพาะซ็อกเก็ตโดเมน Unix
-w, --rawแสดงเฉพาะซ็อกเก็ต RAW
-f ตระกูลเลือกตามตระกูลซ็อกเก็ต เช่น unix, inet, inet6, link หรือ netlink
-Q, --no-queuesแสดงผลโดยไม่มีคอลัมน์ Recv-Q และ Send-Q
-K, --killบังคับปิดซ็อกเก็ตที่ตรงกับตัวกรอง ซ็อกเก็ตที่เคอร์เนลไม่รองรับจะถูกข้าม
-E, --eventsแสดงซ็อกเก็ตที่กำลังปิดอย่างต่อเนื่อง
-V, --versionแสดงข้อมูลเวอร์ชัน

🔲 ตัวจำลองคำสั่ง ss

ในตัวจำลองด้านล่าง คุณพิมพ์ตัวเลือกและตัวกรองที่กล่าวมาทั้งหมดได้เอง และเปรียบเทียบผลลัพธ์กับ [netstat -tln] ได้

ตัวจำลองคำสั่ง ssiproute2 6.1.0
[root@server work]#
หน้าจอบัญชีทั่วไป (user) นี้ทำงานภายในเบราว์เซอร์เท่านั้น กด ↑↓ เพื่อเรียกคำสั่งที่พิมพ์ไว้ก่อนหน้า

5️⃣ สรุปซ็อกเก็ตด้วย ss (-s)

-s แสดงสรุปจำนวนตามประเภทแทนรายการซ็อกเก็ต ตามหน้า man ระบบไม่ได้นับรายการทีละรายการ แต่รวบรวมตัวเลขจากข้อมูลสถิติหลายแหล่ง

ss -s
Total: 340
TCP:   48 (estab 9, closed 15, orphaned 0, timewait 13)

Transport Total     IP        IPv6
RAW       0         0         0
UDP       8         4         4
TCP       33        25        8
INET      41        29        12
FRAG      0         0         0

estab ในบรรทัด TCP คือจำนวนการเชื่อมต่อที่เกิดขึ้นอยู่ตอนนี้ จึงนำไปเทียบกับจำนวนบรรทัดที่ [state established] แสดงในเวลาเดียวกันได้

ss -tn state established | wc -l
10

เมื่อหักบรรทัดหัวตารางหนึ่งบรรทัดจากผลลัพธ์ 10 บรรทัด จะเหลือ 9 บรรทัด เท่ากับ estab 9 ของ -s ส่วน timewait 13 คือจำนวนซ็อกเก็ต TIME-WAIT ที่เห็นได้เฉพาะเมื่อเลือกด้วย [state time-wait]

6️⃣ เปรียบเทียบคำสั่ง ss กับ netstat

netstat อยู่ในแพ็กเกจ net-tools ซึ่งหน้า man ระบุว่า netstat เป็นโปรแกรมที่แทบไม่มีใครใช้แล้ว (mostly obsolete) และแนะนำให้ใช้ ss แทน อย่างไรก็ตาม สคริปต์ที่เขียนตามรูปแบบผลลัพธ์ของ netstat จะอ่านผลลัพธ์ของ ss ตรง ๆ ไม่ได้ เพราะลำดับคอลัมน์และรูปแบบการเขียนที่อยู่ต่างกัน

เมื่อแสดงพอร์ต TCP ที่รอรับบนเซิร์ฟเวอร์เดียวกันด้วยทั้งสองคำสั่ง netstat วางสถานะไว้ท้ายสุด และเขียนที่อยู่ IPv6 แบบ :::22

netstat -tln
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN
tcp        0      0 0.0.0.0:80              0.0.0.0:*               LISTEN
tcp        0      0 0.0.0.0:443             0.0.0.0:*               LISTEN
tcp        0      0 127.0.0.1:8080          0.0.0.0:*               LISTEN
tcp6       0      0 :::22                   :::*                    LISTEN
tcp6       0      0 :::80                   :::*                    LISTEN
tcp6       0      0 :::443                  :::*                    LISTEN

ใน ss สถานะอยู่หน้าสุด และที่อยู่ IPv6 ครอบด้วยวงเล็บเหลี่ยมแบบ [::]:22

ss -tln
State  Recv-Q Send-Q Local Address:Port Peer Address:PortProcess
LISTEN 0      128          0.0.0.0:22        0.0.0.0:*
LISTEN 0      511          0.0.0.0:80        0.0.0.0:*
LISTEN 0      511          0.0.0.0:443       0.0.0.0:*
LISTEN 0      511        127.0.0.1:8080      0.0.0.0:*
LISTEN 0      128             [::]:22           [::]:*
LISTEN 0      511             [::]:80           [::]:*
LISTEN 0      511             [::]:443          [::]:*

ตัวเลือกของ netstat ที่ใช้บ่อย เมื่อเปลี่ยนเป็นคำสั่ง ss และ ip จะเป็นดังนี้

netstatคำสั่งที่ใช้แทน / สิ่งที่แสดง
netstat -tlnss -tlnพอร์ต TCP ที่รอรับ แสดงเป็นหมายเลข
netstat -tulpnss -tulpnพอร์ต TCP และ UDP ที่รอรับ พร้อมโปรแกรม
netstat -tanss -tanซ็อกเก็ต TCP ทั้งหมด แสดงเป็นหมายเลข
netstat -rip routeตารางเส้นทาง
netstat -iip -s linkสถิติของอินเทอร์เฟซเครือข่าย
คำสั่ง ip ที่ใช้แทน netstat -r และ netstat -i ระบุไว้ในส่วน NOTES ของหน้า man netstat(8) ของ net-tools

🔢 FAQ & เนื้อหาแนะนำ

ใส่ -4 จะเหลือเฉพาะซ็อกเก็ต IPv4 ใส่ -6 จะเหลือเฉพาะซ็อกเก็ต IPv6 ใน [ss -t4ln] บรรทัดที่ขึ้นต้นด้วย [::] หายไป และใน [ss -t6ln] บรรทัดที่ขึ้นต้นด้วย 0.0.0.0 และ 127.0.0.1 หายไป

ถ้าเขียนที่อยู่ต่อท้าย src จะเหลือเฉพาะซ็อกเก็ตที่รอรับของที่อยู่นั้น [ss -tln src 127.0.0.1] แสดงเฉพาะพอร์ตฝั่ง 127.0.0.1 ที่เชื่อมต่อจากภายนอกเซิร์ฟเวอร์ไม่ได้

ใส่ -H จะแสดงเฉพาะบรรทัดซ็อกเก็ตโดยไม่มีบรรทัดหัวตาราง เวลานับจำนวนบรรทัดแบบ [ss -H -tln | wc -l] บรรทัดหัวตารางจะไม่ถูกนับรวม

🧭 เนื้อหาคำสั่งเครือข่ายแนะนำ บทความ 13 · อ้างอิง 3
🗂️ คำสั่งเครือข่าย
📄 คำสั่ง ip 📄 คำสั่ง netstat · ifconfig 📄 คำสั่ง nmtui 📄 คำสั่ง ss
📄 คำสั่ง SSH 📄 คำสั่ง rsync 📄 คำสั่ง wget 📄 คำสั่ง rz · sz
📄 คำสั่ง host 📄 คำสั่ง nslookup
📄 คำสั่ง iptables 📄 คำสั่ง firewall-cmd 📄 คำสั่ง certbot
การใช้ ip --help
Linux · เครือข่าย
[Linux] คำสั่ง ip: จัดการอินเทอร์เฟซเครือข่ายและการตั้งค่า
คำสั่ง ip เป็นเครื่องมือหลักในการจัดการเครือข่ายบน Linux และทำงานด้านเครือข่ายได้หลากหลาย
อ่านบทความ →เนื้อหาปัจจุบัน
คำสั่ง netstat ของ Linux
Linux · เครือข่าย
คำสั่ง netstat และคำสั่ง ifconfig ของ Linux
ถ้าจะรันคำสั่ง netstat และ ifconfig บน Linux ต้องติดตั้ง net-tools ไว้บนเซิร์ฟเวอร์ Linux
อ่านบทความ →เนื้อหาปัจจุบัน
systemctl status NetworkManager
Linux · เครือข่าย
[Linux] NetworkManager | nmtui
วิธีตั้งค่าเครือข่ายของ Linux ใน CentOS 5 ใช้บริการ network เป็นค่าเริ่มต้น และสามารถติดตั้ง NetworkManager มาใช้ได้
อ่านบทความ →เนื้อหาปัจจุบัน
หน้าจอตัวจำลองคำสั่ง ss: ในผลลัพธ์ ss -tlnp มีเพียงบรรทัด python3 ของบัญชีฉันที่คอลัมน์ Process มีข้อมูล
Linux · เครือข่าย
คำสั่ง ss: ตรวจสอบพอร์ตและโปรเซสบน Linux เทียบกับ netstat
บนเซิร์ฟเวอร์ Linux ตรวจสอบได้ด้วยคำสั่ง ss ว่าพอร์ตใดเปิดอยู่และใครกำลังเชื่อมต่ออยู่ โดย ss เป็นเครื่องมือดูซ็อกเก็ตของ iproute2 ที่มาแทน netstat
อ่านบทความ →เนื้อหาปัจจุบัน
Linux SSH (Secure Shell)
Linux · การเชื่อมต่อ
คำสั่ง SSH: ตัวเลือกและวิธีใช้
ใน Linux SSH (Secure Shell) เป็นโปรโตคอลที่ช่วยให้เชื่อมต่อกับระบบอื่นผ่านเครือข่ายได้อย่างปลอดภัย
อ่านบทความ →เนื้อหาปัจจุบัน
คำสั่ง rsync_ส่งจากโลคัลไปยังระยะไกล
Linux · การส่งไฟล์
คำสั่ง rsync ของ Linux: ตัวเลือก | ตัวอย่างการใช้งาน
ถ้าคัดลอกใหม่ทั้งหมดทุกครั้งเพื่อให้โฟลเดอร์ของเซิร์ฟเวอร์ 2 เครื่องตรงกัน แม้จะมีไฟล์ที่เปลี่ยนเพียงไฟล์เดียว ปริมาณข้อมูลที่ส่งก็ยังเท่ากับขนาดทั้งหมด
อ่านบทความ →เนื้อหาปัจจุบัน
คำสั่ง TOP ของ Linux: อินเทอร์เฟซบรรทัดคำสั่ง (CLI-Command-Line Interface)
Linux · การส่งไฟล์
คำสั่ง wget ของ Linux
คำสั่ง wget ใช้เรียกลิงก์ดาวน์โหลดบนเว็บจากบรรทัดคำสั่งของ Linux เพื่อดาวน์โหลดไฟล์
อ่านบทความ →เนื้อหาปัจจุบัน
ติดตั้งเครื่องมือ lrzsz บน Rocky Linux
Linux · การส่งไฟล์
Linux: ติดตั้งเครื่องมือ lrzsz และอัปโหลด (rz) กับดาวน์โหลด (sz) ไฟล์
ถ้าจะใช้คำสั่ง rz และ sz อัปโหลดและดาวน์โหลดไฟล์บน Linux ต้องติดตั้ง lrzsz ไว้บนเซิร์ฟเวอร์
อ่านบทความ →เนื้อหาปัจจุบัน

ℹ️ ประกาศเรื่องลิงก์แอฟฟิลิเอต
เนื้อหาของเว็บไซต์นี้มีลิงก์แอฟฟิลิเอต หากผู้เข้าชมซื้อสินค้าหรือบริการผ่านลิงก์เหล่านี้ เว็บไซต์นี้จะได้รับค่าคอมมิชชันจากผู้ขาย ในกระบวนการนี้ ราคาที่ผู้ซื้อจ่าย(ราคาจะลดลงเมื่อมีโปรโมชัน↓)จะไม่สูงขึ้นแต่อย่างใด ราคา ส่วนลด และข้อมูลสต็อกที่แสดงเป็นข้อมูล ณ เวลาที่เขียนและอาจต่างจากความเป็นจริง โปรดตรวจสอบกับผู้ขายอีกครั้งก่อนซื้อ การเลือกและการประเมินสินค้าเขียนตามเกณฑ์ของเราเอง และการได้รับค่าคอมมิชชันหรือไม่ไม่มีผลต่อลำดับการแนะนำหรือเนื้อหาการประเมิน

ใส่ความเห็น

อีเมลของคุณจะไม่แสดงให้คนอื่นเห็น ช่องข้อมูลจำเป็นถูกทำเครื่องหมาย *

Prove your humanity: 2   +   9   =