18 puan yazan givvemee 2026-01-20 | 6 yorum | WhatsApp'ta paylaş

Geliştirme yaparken lsof -i :3000 gibi komutları sayısız kez yazmak zorunda kalıyoruz.
"Bu portu ne kullanıyor?", "Sanırım az önceki sunucuyu kapatmadım..."

ports-cli, şu anda açık olan tüm portları süreç adı ve proje yolu ile birlikte düzenli şekilde gösteren bir CLI aracıdır.

Başlıca özellikler

  • Tek bakışta görünüm: Açık portları, süreç adını ve proje yolunu tablo halinde gösterir
  • Node.js proje algılama: package.json içindeki name değerini okuyarak node yerine gerçek proje adını gösterir
  • Kullanıcı süreçlerini filtreleme: -u seçeneğiyle sistem süreçlerini hariç tutup yalnızca benim başlattıklarımı gösterir
  • Kapatma: ports bye 3000 ile ilgili porttaki süreci anında kill eder

Kurulum

brew tap givvemee/tap  
brew install ports-cli  

Kullanım

ports              # tüm listening portları göster  
ports -u           # sadece benim başlattığım süreçler  
ports bye 3000     # 3000 portundaki süreci sonlandır  

Çıktı örneği

  
PORT     PROCESS                  PATH  
----     -------                  ----  
3000     my-app                   ~/Documents/GitHub/my-app  
5432     postgres                 -  
8080     test-server              ~/Documents/GitHub/test-server  

macOS’a özeldir; Bash betiği olarak ek bağımlılık olmadan hafif şekilde çalışır.

Geri bildirimlere açığım. :)

6 yorum

 
channprj 2026-01-26

Oo, kullanışlı özellikler varmış. 👍🏻

macOS için ayrıca kurulum yapmadan aşağıdaki komutla bunu kolayca kontrol etmek de mümkün.
~/.zshrc içine ekleyebilirsiniz.

(Bilgi amaçlı paylaşıyorum!)

alias portcheck="printf "\033[4;37m%-15s %-8s %-20s %s\033[0m\n" "COMMAND" "PID" "PORT" "DIR"; sudo lsof -iTCP -sTCP:LISTEN -n -P | awk 'NR>1 {print $2, $1, $9}' | sort -u | while read pid cmd port; do dir=$(sudo lsof -p "$pid" -a -d cwd -F n 2>/dev/null | tail -1 | cut -c2-); printf "\033[1;32m%-15s\033[0m \033[1;36m%-8s\033[0m \033[1;33m%-20s\033[0m %s\n" "$cmd" "$pid" "$port" "$dir"; done"

 
givvemee 2026-01-27

Demek portcheck alias'ını böyle oluşturup kullanıyormuşsunuz. Böyle bir yöntem de mümkünmüş. Teşekkürler!

 
channprj 2026-01-27

Çift tırnak sorunu olduğu için yeniden paylaşıyorum.

alias portcheck='printf "\033[4;37m%-36s %-8s %-22s %s\033[0m\n" "COMMAND" "PID" "LISTEN" "CWD"; sudo lsof -nP -iTCP -sTCP:LISTEN -F pcn 2>/dev/null | awk '"'"'BEGIN{pid=cmd=name=""}/^p/{pid=substr($0,2)}/^c/{cmd=substr($0,2)}/^n/{name=substr($0,2);if(pid&&cmd&&name)print pid"\t"cmd"\t"name}'"'"' | sort -u | while IFS=$'"'"'\t'"'"' read -r pid cmd name; do dir=$(sudo lsof -n -p "$pid" -a -d cwd -F n 2>/dev/null | sed -n '"'"'s/^n//p'"'"' | tail -1); [ -z "$dir" ] && dir="-"; printf "\033[1;32m%-36.36s\033[0m \033[1;36m%-8s\033[0m \033[1;33m%-22s\033[0m %s\n" "$cmd" "$pid" "$name" "$dir"; done'

 
chcv0313 2026-01-22

sudo netstat -tnlp ile kıyaslandığında üstün yanı nedir merak ediyorum.

 
channprj 2026-01-26

Kullandığınızda göreceğiniz gibi, bilgileri biraz daha düzenli şekilde gösteriyor.
Ayrıca yalnızca kullanıcının doğrudan kullanmakta olduğu süreçleri görebilmeniz için bir filtre özelliği de var.

 
yshrust 2026-01-21

Oh, hemen kurup denedim; basit olduğu için kullanımı çok iyi!!
Teşekkürler haha