ss مقابل netstat — الدليل المترجم
netstat رحل والأعلام نجت: جدول ترجمة سطراً بسطر، مطاردة المنفذ في سطر واحد بفلترة داخل النواة، ولماذا يفوز ss في كل توزيعة حديثة.
استخدم ss — إنه المعيار الحالي في كل توزيعة لينكس حديثة، بينما netstat إرثٌ هناك: في Ubuntu وFedora وDebian يأتي الثنائي الآن في حزمة اختيارية net-tools بينما ss is built into مدمج في iproute2 ومثبّت في كل مكان. أيضاً أسرع على الخوادم المزدحمة لأنه يقرأ إحصاءات المقابس مباشرة من النواة بدل تجواله في /proc ملفاً ملفاً. المشكلة في الصياغة — لذا فهذه الصفحة هي الترجمة.
استخدم ss — المعيار الحالي في كل توزيعة حديثة؛ netstat إرثٌ هناك وغالباً غير مثبّت أصلاً.
الأعلام تترجم واحداً بواحد: netstat -tlpn → ss -tlpn, netstat -tulpna → ss -tulpna. التوجيه والواجهات انتقلا إلى ip route / ip -s link.
مطاردة المنفذ في سطر واحد: sudo ss -ltnp 'sport = :8080' — اسم العملية وPID يعودان مباشرة.
الدليل المترجم
كل سطر netstat في دليلك القديم، وما يصير إليه — اقرأ كل صف من اليسار إلى اليمين:
كل اتصالات TCP + UDPss -tulpnaip routeip -s linkss -sss -tnp 'sport = :22'الصفان الأولان متطابقان — بحظّ سعيد، أعلام ss القصيرة تتطابق مع أعلام netstat في الحالات الشائعة، فتنجو الذاكرة العضلية من الانتقال في معظمها
هل أُهمل netstat؟
في لينكس، عملياً نعم. حزمة net-tools — netstat, ifconfig, route — has not tracked modern kernel features for years and is no longer installed by default on any major distribution. It still exists, still runs, and there is nothing to uninstall, but new features land only in iproute2 (the package behind ss and ip — لم تتبع مزايا النواة الحديثة منذ سنوات ولم تعد مثبتة افتراضياً في أي توزيعة كبرى. ما زالت موجودة، وما زالت تعمل، لكن المزايا الجديدة لا تهبط إلا في
- غائب في التثبيتات الجديدة. خادم Ubuntu 24.04 أو Fedora الافتراضي لا يملك أي
netstatحتى تثبّتnet-toolsيدوياً — ولهذا يبحث كثيرون عن "ما يعادل netstat": الثنائي ببساطة رحل. - لا معلومات مقابس حديثة. netstat سبق TCP fast open وإحصاءات المقابس على مستوى التيارات الفرعية وإسناد المقابس إلى cgroups.
ssيبلّغ عنها أصالةً. - استثناء Windows. على ويندوز،
netstatحيّ يُعت به —netstat -anoما زال الطريقة المعيارية لربط PID بمنفذ مستمع. فقط حكاية لينكس هي التي تُعدّ إهمالاً.
حصان العمل، علماً بعلم
تعني "socket statistics": نظرة النواة إلى كل مقبس TCP وUDP وUnix — الحالات والعناوين والمنافذ والعمليات والمؤقتات وأعماق الطوابير. means "socket statistics": the kernel's view of every TCP, UDP and Unix socket — state, addresses, ports, processes, timers, queue depths.
# كل ما يستمع، مع العملية المالكة
sudo ss -tulpn
علماً بعلم: TCP (-t)، UDP (-u)، الاستماع فقط (-l)، إظهار العمليات (-p)، مخرجات رقمية — بلا استعلامات DNS (-n). وsudo مهم لـ -p : بدون root ترى المنافذ لكن لا تحصل على أسماء العمليات للمقابس التي لا تملكها. سطران أحيدان إضافيان يغطيان معظم العمل:
# كل الاتصالات المعمولة إلى/من المنفذ 443، مع العمليات
sudo ss -tnp 'sport = :443 or dport = :443'
# جدول ملخص: كم مقبساً في كل حالة
ss -s
صياغة الفلترة هذه ترقية حقيقية على أسلوب "grep ثم صلاة" لدى netstat — فهي تعمل داخل النواة، فتكون دقيقة لا مجرد مطابقة نصية.
من يملك المنفذ 8080؟
أكثر الأسباب شيوعاً للوصول إلى أي من الأداتين:
sudo ss -ltnp 'sport = :8080'
State Recv-Q Send-Q Local Address:Port Peer Address:Port Process
LISTEN 0 511 *:8080 *:* users:(("node",pid=214113,fd=18))
الحقل users:(...) يعطيك اسم العملية وPID مباشرة — لا حاجة لأمر ثانٍ. المنفذ مشغول ولا تظهر عملية؟ غالباً تنظر إلى مقبس تحمله مساحة أسماء شبكة أخرى — حاوية. من المضيف، sudo ss -ltnp shows the port with an empty process column; match it with docker ps or nsenter into the container's namespace. Prefer a dedicated tool? يقوم بالعمل نفسه ويعمل بطريقة مطابقة على macOS ومعظم BSD، ولهذا ينجو في الأدلة — لكن على لينكس، does the same job and works identically on macOS and most BSDs, which is why it survives in runbooks — but on Linux, موجود أصلاً. is already there.
تحقق: sudo ss -ltnp 'sport = :8080' → users:(("node",pid=…)) · استبدل بأي منفذ 1–65535
لماذا تظهر "ss NOT FOUND"؟
لأنك إما على توزيعة قديمة جداً (ما قبل 2007، قبل أن يصير iproute2 معياراً) أو — الأرجح بكثير — لست على لينكس أصلاً. ss ليس أمراً في macOS؛ يأتي macOS مع lsof and netstat لكن بلا ss، ومعظم BSD كذلك. على ويندوز: netstat -ano or PowerShell's في PowerShell. إن كنت فعلاً على لينكس وهو غائب، ثبّت iproute2: . If you genuinely are on Linux and it is missing, install iproute2: sudo apt install iproute2 (Debian/Ubuntu) or sudo dnf install iproute2 (Fedora/RHEL).
تحقق: ss -V → سلسلة إصدار في السطر الأول
متى ما زال netstat يستحق صفّه
حالتان صادقتان. قابلية النقل: في أسطول مختلط من لينكس وAIX أو BSD أقدم، netstat هو الصياغة الوحيدة الموجودة في كل مكان. استمرارية الذاكرة العضلية في الأدلة القديمة — إذا قال دليلٌ netstat -tlpn وكانت الآلة فيها net-tools مثبتة، فإنه يعمل جيداً بعد. وإلا فالافتراضي ss وحدّث الدليل — جدول الترجمة في الأعلى هو الذي يستحق أن يُلصق على شاشتك. وعندما يكون المنفذ الذي وجدته تابعاً لخدمة لا تستيقظ، فهذه حكاية systemd لا حكاية مقابس.
ss -ltnp النموذجية أعلاه التقاطٌ حقيقي من آلة تطوير (عملية node على :8080)، أعيد كتابتها ولم تُختلَق.نهاية الدليل المترجم · لم يُجلب شيء · كل شيء محلي