คำสั่ง ss: ตรวจสอบพอร์ตและโปรเซสบน Linux เทียบกับ netstat
บนเซิร์ฟเวอร์ Linux คุณตรวจสอบได้ด้วยคำสั่ง ss ว่าพอร์ตใดเปิดอยู่และใครกำลังเชื่อมต่ออยู่ ss เป็นเครื่องมือดูซ็อกเก็ตของ iproute2 ที่มาแทน netstat เมื่อใช้ ss ดูพอร์ตที่รอรับ (LISTEN) และการเชื่อมต่อบนเซิร์ฟเวอร์ Debian 12 พบว่าในบัญชีทั่วไป แม้จะใส่ -p ก็ไม่มีชื่อโปรแกรมที่บัญชีอื่นเปิดไว้แสดงในคอลัมน์ Process
ผลลัพธ์ด้านล่างได้จากการรันด้วย locale ภาษาอังกฤษ ที่อยู่ของเซิร์ฟเวอร์และอีกฝั่งแสดงเป็นที่อยู่ตัวอย่าง
1️⃣ วิธีใช้คำสั่ง ss เบื้องต้นและคอลัมน์ในผลลัพธ์
ถ้ารัน ss โดยไม่ใส่ตัวเลือก พอร์ตที่รอรับจะไม่แสดง และจะเห็นเฉพาะซ็อกเก็ตที่เชื่อมต่อแล้ว บนเซิร์ฟเวอร์ทดสอบ บรรทัดแรก ๆ ทั้งหมดเป็นซ็อกเก็ต Unix (u_str, u_dgr) ที่โปรแกรมภายในเซิร์ฟเวอร์ใช้สื่อสารกันเอง
ss | head -n 5Netid 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 -tState 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 -tnState 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 -tlnState 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 -tlState 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 -ulnState 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 -tulpnNetid 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 -tlnpState 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/fdls: 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 = :8000State 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 = :443State 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 เปลี่ยนไปอย่างไรตามบัญชี ดูเปรียบเทียบได้ในไดอะแกรมด้านล่างโดยสลับบัญชี
4️⃣ ตัวเลือกกรองสถานะและพอร์ตของ ss
แม้จะตรวจสอบพอร์ตที่เปิดอยู่แล้ว ก็ยังต้องกรองแยกอีกครั้งว่าตอนนี้ใครเชื่อมต่อกับพอร์ตนั้นอยู่ ss จะเหลือเฉพาะบรรทัดที่ต้องการเมื่อใส่เงื่อนไขตัวกรองต่อท้ายตัวเลือก
ถ้าเขียนชื่อสถานะต่อท้าย state จะเหลือเฉพาะซ็อกเก็ตในสถานะนั้น ผลลัพธ์ของ [ss -tn state established] ไม่มีคอลัมน์ State และเริ่มที่คอลัมน์ Recv-Q
ss -tn state establishedRecv-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 = :443State 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 = :22State 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:51114TIME-WAIT คือสถานะที่ค้างอยู่ครู่หนึ่งหลังการเชื่อมต่อถูกตัด สถานะนี้ไม่แสดงในผลลัพธ์ปกติ จึงต้องเลือกแยกด้วย [state time-wait] จึงจะเห็น
ss -tn state time-waitRecv-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 fooss: 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] ได้
5️⃣ สรุปซ็อกเก็ตด้วย ss (-s)
-s แสดงสรุปจำนวนตามประเภทแทนรายการซ็อกเก็ต ตามหน้า man ระบบไม่ได้นับรายการทีละรายการ แต่รวบรวมตัวเลขจากข้อมูลสถิติหลายแหล่ง
ss -sTotal: 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 0estab ในบรรทัด TCP คือจำนวนการเชื่อมต่อที่เกิดขึ้นอยู่ตอนนี้ จึงนำไปเทียบกับจำนวนบรรทัดที่ [state established] แสดงในเวลาเดียวกันได้
ss -tn state established | wc -l10เมื่อหักบรรทัดหัวตารางหนึ่งบรรทัดจากผลลัพธ์ 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 -tlnActive 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 -tlnState 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 -tln | ss -tlnพอร์ต TCP ที่รอรับ แสดงเป็นหมายเลข |
| netstat -tulpn | ss -tulpnพอร์ต TCP และ UDP ที่รอรับ พร้อมโปรแกรม |
| netstat -tan | ss -tanซ็อกเก็ต TCP ทั้งหมด แสดงเป็นหมายเลข |
| netstat -r | ip routeตารางเส้นทาง |
| netstat -i | ip -s linkสถิติของอินเทอร์เฟซเครือข่าย |
🔢 FAQ & เนื้อหาแนะนำ









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