ss komutu: Linux'ta portları ve süreçleri kontrol etme, netstat ile karşılaştırma

Test ortamıDebian ailesiDebian 12iproute2 6.1.0normal kullanıcı hesabı2026-11-04 tarihinde kontrol edildi
Ağ komutlarıssKonum/usr/bin/ss

Bir Linux sunucusunda hangi portların açık olduğunu ve kimin bağlı olduğunu ss komutuyla kontrol edersiniz. ss, netstat'ın yerini alan iproute2 soket sorgulama aracıdır. Bir Debian 12 sunucusunda ss ile dinlemedeki (LISTEN) portları ve bağlantıları sorguladığımızda, normal hesapta -p eklense bile başka hesapların başlattığı programların adının Process sütununda görünmediğini doğruladık.

Aşağıdaki çıktılar İngilizce locale ile çalıştırılarak alınmıştır. Sunucunun ve karşı tarafın adresleri örnek adreslerle gösterilmiştir.

1️⃣ ss komutunun temel kullanımı ve çıktı sütunları

ss'i seçeneksiz çalıştırırsanız dinlemedeki portlar dışarıda kalır ve yalnızca bağlantısı kurulmuş soketler görünür. Test sunucusunda ilk satırların hepsi, sunucu içindeki programların birbiriyle konuşmak için kullandığı Unix soketleriydi (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

Bu yüzden yalnızca TCP bağlantılarını görmek için -t eklersiniz. Unix soketleri çıkar ve port yerinde numara yerine ssh ve https gibi servis adları görünür.

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'i de eklerseniz port numaraları servis adlarına çevrilmeden olduğu gibi görünür.

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 ve Send-Q sütunları, soketin durumuna göre farklı anlamlar taşır. Bağlı bir sokette Recv-Q alınmış ama programın henüz okumadığı bayt sayısı, Send-Q ise gönderilmiş ama karşı tarafın henüz alındığını onaylamadığı bayt sayısıdır.

Dinlemedeki bir sokette Recv-Q kuyrukta bekleyen bağlantı sayısını, Send-Q ise kuyruğun en büyük boyutunu gösterir. Bu iki sütunun anlamı net-tools içindeki netstat(8) man sayfasının açıklamasıdır.

2️⃣ Linux'ta port kontrolü (-tln, -uln, -tulpn)

Seçeneksiz çıktıda bağlantı bekleyen portlar görünmediği için açık portları kontrol ederken yalnızca dinlemedeki soketleri seçen -l'yi eklersiniz. [ss -tln], dinlemedeki TCP portlarını numara olarak gösterir.

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 ise sunucunun tüm IPv4 adreslerine gelen bağlantıları kabul eder; 127.0.0.1 ise yalnızca sunucunun içinden bağlanılabilir. [::] tüm IPv6 adresleri anlamına gelir, bu yüzden 22, 80 ve 443 numaralı portlar hem IPv4 hem IPv6 üzerinde açıktır.

-n olmadan port numaraları servis adlarına dönüşür. 8080 numaralı port http-alt olarak görünür.

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 bağlantı kurmayan bir yöntem olduğundan dinlemedeki soketlerinde bile LISTEN durumu yoktur. [ss -uln] çıktısının durum sütunu baştan sona UNCONN'du. 68 numaralı port (bootpc) DHCP istemcisi, 123 numaralı port (ntp) saat eşitleme portudur.

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 ve UDP'yi bir arada görmek için seçenekleri [ss -tulpn] gibi birleştirirsiniz. Birden fazla tür olduğunda en başa Netid sütunu eklenir.

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 komutuyla süreç kontrolü (-p)

-p, soketi kullanan programı Process sütununda gösteren seçenektir. Ancak test sunucusundaki normal hesapta [ss -tlnp] çalıştırıldığında Process sütunu aşağıdaki gibi boş kaldı ve seçenek uygulanmamış gibi göründü.

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, her süreç için /proc altındaki fd klasörünü okuyarak soketi kullanan süreci bulur. Normal hesap, başka bir hesabın başlattığı sürecin fd klasörünü açamadığı için o programın adı sütuna girmez. root'un başlattığı 1 numaralı sürecin klasörünü normal hesaptan açarsanız izin hatası alırsınız.

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

Kendi hesabınızla başlattığınız programlar normal hesapta da Process sütununda görünür. Bunu python3'ün basit web sunucusunu 127.0.0.1 adresinin 8000 numaralı portunda başlatarak doğruladık.

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

Başlattıktan sonra [sport = :8000] ekleyerek yalnızca 8000 numaralı portun satırını sorgularsınız.

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 ifadesinden sonraki parantezde sırasıyla program adı, pid ve dosya tanımlayıcı numarası (fd) yer alır.

Kontrolü bitirdiğiniz basit web sunucusunu [kill %1] ile kapatırsınız. Kapattıktan sonra [ss -tln sport = :8000] komutunu yeniden çalıştırırsanız yalnızca başlık satırı kalır ve 8000 numaralı portun satırı görünmez.

root hesabında çalıştırıldığında tüm süreçlerin bilgileri okunabildiği için Process sütunu dolar. Bir portta birden fazla süreç birlikte dinliyorsa users parantezinde her biri için bir öğe yer alır. Aşağıdaki root çıktısındaki program adları ve pid değerleri örnek değerlerdir.

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))

Port numarasından programı bulmak için lsof komutunun [lsof -i :443] biçimini de kullanabilirsiniz.

Process sütununun hesaba göre nasıl değiştiğini aşağıdaki diyagramda hesabı değiştirerek karşılaştırabilirsiniz.

🧭 ss -p ve hesaplar: Process sütununun dolma koşulu
Açıklama diyagramı
👤 Hesap
$# ss -tlnp
Dinlemedeki soketSüreç bilgisiProcess sütunu
0.0.0.0:22LISTEN
➜
/proc/812/fdSahip: root
➜
Başka hesapların süreçleri: okunamazroot: tüm süreçleri okurProcess sütunu boşusers:(("sshd",pid=812,fd=3))
127.0.0.1:8080LISTEN
➜
/proc/2100/fdSahip: root
➜
Başka hesapların süreçleri: okunamazroot: tüm süreçleri okurProcess sütunu boşusers:(("app",pid=2100,fd=3))
127.0.0.1:8000LISTEN
➜
/proc/343015/fdSahip: user
➜
Hesabımın süreçleri: okunurroot: tüm süreçleri okurusers:(("python3",pid=343015,fd=3))
Normal hesap, başka hesapların başlattığı süreçlerin /proc bilgisini okuyamadığı için o satırların Process sütunu boş kalır; yalnızca kendi hesabınızla başlattığınız python3 satırı dolar.
root tüm süreçlerin bilgilerini okuyabildiği için dinlemedeki her soketin program adı ve pid değeri Process sütununda görünür.

4️⃣ ss durum ve port filtre seçenekleri

  • ↪️ state, dport, sport

Açık portları kontrol ettikten sonra da o porta şu anda kimin bağlı olduğunu ayrıca süzmeniz gerekir. ss, seçeneklerden sonra filtre koşulu eklediğinizde yalnızca istediğiniz satırları bırakır.

state ifadesinden sonra bir durum adı yazarsanız yalnızca o durumdaki soketler kalır. [ss -tn state established] çıktısında State sütunu yoktur ve çıktı Recv-Q sütunuyla başlar.

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

Portları dport (karşı tarafın portu) ve sport (kendi tarafınızın portu) ile süzersiniz. Sunucudan dışarıdaki https sunucularına giden bağlantıları [dport = :443] ile seçersiniz.

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'u -l ile birlikte kullanırsanız yalnızca o portun dinlemede olup olmadığını kontrol edebilirsiniz.

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           [::]:*

Birden fazla koşulu parantez ve or ile gruplar, kabuğun parantezleri önce yorumlamaması için tek tırnak içine alırsınız. Aşağıda man sayfasındaki örneğe göre yalnızca ssh bağlantılarının seçildiği sonuç var.

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, bağlantı kesildikten sonra kısa bir süre kalan durumdur. Varsayılan çıktıda görünmediği için görmek istiyorsanız [state time-wait] ile ayrıca seçmeniz gerekir.

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

Durum adını yanlış yazarsanız komut yalnızca tek satırlık bir [wrong state name] hatası bırakıp hemen sona erer. Aşağıda bilerek foo girildiğindeki sonuç var. Kullanabileceğiniz adları [ss -h] çıktısındaki TCP-STATES satırında görebilirsiniz.

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

📌 Başlıca seçenekler: bu yazıda çalıştırılan sonuçlar

SeçenekGörevBu yazıdaki sonuç
-tYalnızca TCP soketlerini gösterirUnix soketleri çıkar, port yerinde ssh ve https gibi servis adları görünür
-nServis adı yerine port numarasını gösterirss -tn çıktısında ssh 22, https 443 olarak görünür
-lYalnızca dinlemedeki (LISTEN) soketleri gösterirss -tln çıktısında 22, 80 ve 443 gibi dinlemedeki portlar görünür
-uYalnızca UDP soketlerini gösterirss -uln çıktısının durum sütunu baştan sona UNCONN
-pSoketi kullanan programı Process sütununda gösterirNormal hesapta yalnızca kendi hesabımın başlattığı python3 için ad ve pid görünür, başka hesapların programları boş kalır
-sSoket listesi yerine türlere göre sayıyı özetlerTCP satırındaki estab 9, state established çıktısının başlık satırı hariç 9 satırıyla aynı
-4Yalnızca IPv4 soketlerini gösterirss -t4ln çıktısında [::] ile başlayan satırlar çıkar
-6Yalnızca IPv6 soketlerini gösterirss -t6ln çıktısında 0.0.0.0 ve 127.0.0.1 ile başlayan satırlar çıkar
-HBaşlık satırı olmadan yalnızca soket satırlarını gösterirss -H -tln | wc -l satır sayısına başlık satırı dahil edilmez
state DURUMYalnızca o durumdaki soketleri bırakırstate established çıktısı State sütunu olmadan Recv-Q ile başlar; olmayan bir ad [wrong state name: foo] verir
dport = :PORTKarşı tarafın portuna göre süzerdport = :443 ile dışarıdaki https sunucularına giden iki bağlantı satırı
sport = :PORTKendi tarafınızın portuna göre süzer-l ile birlikte kullanılan sport = :22 ile IPv4 ve IPv6 için iki adet 22 numaralı port dinleme satırı
src ADRESYalnızca o adresin soketlerini bırakırss -tln src 127.0.0.1 ile yalnızca sunucu içinden bağlantı kabul eden 127.0.0.1 portları görünür

📎 Diğer seçenekler: resmî kılavuza göre

SeçenekGörev
-a, --allDinlemedeki ve bağlı soketleri birlikte gösterir
-r, --resolveAdresleri ve port numaralarını adlara çözerek gösterir
-e, --extendedHer soket için uid ve inode gibi ayrıntılı bilgileri gösterir
-o, --optionsTCP yeniden iletimi ve keepalive gibi zamanlayıcı bilgilerini gösterir
-m, --memoryHer soketin kullandığı belleği gösterir
-i, --infoTCP iç bilgilerini (rtt, cwnd vb.) gösterir
-x, --unixYalnızca Unix alan soketlerini gösterir
-w, --rawYalnızca RAW soketlerini gösterir
-f AİLEunix, inet, inet6, link veya netlink gibi soket ailesine göre seçer
-Q, --no-queuesRecv-Q ve Send-Q sütunları olmadan gösterir
-K, --killFiltreye uyan soketleri zorla kapatır; çekirdeğin desteklemediği soketler atlanır
-E, --eventsKapanan soketleri sürekli gösterir
-V, --versionSürüm bilgisini yazdırır

🔲 ss komutu simülatörü

Aşağıdaki simülatörde şimdiye kadar gördüğünüz seçenekleri ve filtreleri kendiniz girip çıktıyı [netstat -tln] ile karşılaştırabilirsiniz.

ss komutu simülatörüiproute2 6.1.0
[root@server work]#
Yalnızca tarayıcı içinde çalışan normal hesap (user) ekranıdır; ↑↓ ile daha önce yazdığınız komutları geri çağırırsınız.

5️⃣ ss soket özeti (-s)

-s, soket listesi yerine türlere göre sayıların özetini gösterir. man sayfasına göre listeyi tek tek saymaz, sayıları çeşitli istatistiklerden toplar.

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

TCP satırındaki estab, şu anda kurulu olan bağlantı sayısıdır. Bu yüzden aynı anda [state established] ile alınan satır sayısıyla karşılaştırabilirsiniz.

ss -tn state established | wc -l
10

10 satırlık çıktıdan bir başlık satırı çıkarılınca 9 satır kaldı ve bu, -s çıktısındaki estab 9 ile aynıydı. timewait 13, yalnızca [state time-wait] ile seçildiğinde görünen TIME-WAIT soketlerinin sayısıdır.

6️⃣ ss komutu ile netstat karşılaştırması

netstat komutunu içeren net-tools paketinin man sayfası netstat'ı neredeyse kullanılmayan bir program (mostly obsolete) olarak tanımlar ve yerine ss kullanılmasını önerir. Ancak netstat çıktı biçimine göre yazılmış betikler, ss'e geçildiğinde sütun sırası ve adres yazımı farklı olduğu için çıktıyı olduğu gibi okuyamaz.

Aynı sunucuda dinlemedeki TCP portlarını iki komutla gösterdiğimizde netstat durumu en sona koydu ve IPv6 adreslerini :::22 biçiminde yazdı.

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'te ise durum en başa gelir ve IPv6 adresleri [::]:22 gibi köşeli parantez içine alınır.

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          [::]:*

Sık kullanılan netstat seçeneklerinin ss ve ip komutlarındaki karşılıkları aşağıdadır.

netstatYerine geçen komut / gösterdiği
netstat -tlnss -tlnDinlemedeki TCP portları, numara olarak
netstat -tulpnss -tulpnDinlemedeki TCP ve UDP portları ile programları
netstat -tanss -tanTüm TCP soketleri, numara olarak
netstat -rip routeYönlendirme tablosu
netstat -iip -s linkAğ arayüzü istatistikleri
netstat -r ve netstat -i yerine geçen ip komutları, net-tools içindeki netstat(8) man sayfasının NOTES bölümünde yazılıdır.

🔢 SSS & önerilen içerikler

-4 eklerseniz yalnızca IPv4 soketleri, -6 eklerseniz yalnızca IPv6 soketleri kalır. [ss -t4ln] çıktısında [::] ile başlayan satırlar, [ss -t6ln] çıktısında ise 0.0.0.0 ve 127.0.0.1 ile başlayan satırlar çıktı.

src ifadesinden sonra bir adres yazarsanız yalnızca o adresteki dinleyen soketler kalır. [ss -tln src 127.0.0.1], sunucunun dışından bağlanılamayan 127.0.0.1 portlarını gösterdi.

-H eklerseniz başlık satırı olmadan yalnızca soket satırları görünür. [ss -H -tln | wc -l] gibi satır sayarken başlık satırı sayıma katılmaz.

🧭 Ağ komutları için önerilen içerikler 13 yazı · 3 kaynak
🗂️ Ağ komutları
📄 ip komutu 📄 netstat · ifconfig komutları 📄 nmtui komutu 📄 ss komutu
📄 SSH komutu 📄 rsync komutu 📄 wget komutu 📄 rz · sz komutları
📄 host komutu 📄 nslookup komutu
📄 iptables komutu 📄 firewall-cmd komutu 📄 certbot komutu

ℹ️ Satış ortaklığı bildirimi
Bu sitenin içeriklerinde satış ortaklığı bağlantıları bulunur. Bir ziyaretçi bu bağlantılar üzerinden ürün veya hizmet satın alırsa bu site satıcıdan komisyon alır. Bu süreçte alıcının ödediği tutar (kampanya indirimlerinde tutar düşer↓) artmaz. Yayımlanan fiyat, indirim ve stok bilgileri yazının yazıldığı zamana aittir ve gerçek durumdan farklı olabilir; bu yüzden satın almadan önce son bilgiyi satıcıdan kontrol etmenizi rica ederiz. Ürünler kendi ölçütlerimize göre seçilir ve değerlendirilir; komisyon alınıp alınmaması tanıtım sırasını veya değerlendirme içeriğini etkilemez.

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

İnsan olduğunuzu kanıtlayın: 5   +   3   =