أوقف العمليات حسب المنفذ.
بأناقة.

أداة CLI فائقة السرعة تعثر على العمليات التي تشغل منافذك وتوقفها. TUI تفاعلي، وضع المراقبة، أشجار العمليات، وبدون أي تبعيات.

تنزيلات npm (opens in new tab) نجوم GitHub (opens in new tab)
0 تبعيات
0 منصات
0+ اختبار ناجح
0 لغات

لماذا slay?

كل ما تحتاجه لاستعادة منافذك.

TUI تفاعلي

ابحث وتصفح وحدد عمليات متعددة باستخدام التنقل بلوحة المفاتيح.

slay -i

رسوم الإيقاف

شاهد رصاصة تطير عبر الطرفية عندما يتم إيقاف عملية.

slay 3000

إيقاف سلس

SIGTERM أولاً، يتصاعد إلى SIGKILL فقط إذا رفضت العملية التوقف.

slay -g 3000

وضع المراقبة

استمر في الاستطلاع وأوقف تلقائياً العمليات التي تعود على منفذك.

slay -w 3000

أشجار العمليات

أوقف شجرة العمليات بالكامل، الفرعية أولاً، لإيقاف نظيف.

slay --tree 3000

مخرجات JSON

مرر NDJSON إلى jq للبرمجة النصية وخطوط CI والأتمتة.

slay --json 3000

تسميات ذكية

يكتشف تلقائياً Node وPython وDocker وPostgreSQL وVite وأكثر من 20 غيرها.

slay --all

صفر تبعيات

بدون انتفاخ. يشحن فقط ما يحتاجه. يُثبت في أقل من ثانية.

npm i -g slay-port

متعدد المنصات

يعمل على macOS (lsof) وLinux (lsof) وWindows (netstat + taskkill).

works everywhere ✓

ملفات التعريف المسبقة

احفظ مجموعات المنافذ كملفات تعريف مسماة.

slay --profile dev

نطاقات المنافذ

اقتل نطاقًا من المنافذ باستخدام slay 8000-8010.

slay 8000-8010

معلومات المنفذ

افحص المنافذ بدون إنهاء. شاهد PID والمعالج والذاكرة.

slay info 3000

إكمال تلقائي للشل

أكمل الأوامر والخيارات وأسماء الملفات الشخصية تلقائيًا في bash وzsh وfish.

slay completions zsh

إنهاء بالاسم

استهدف العمليات بالاسم مع دعم التعبيرات النمطية. استثنِ عمليات محددة من الإنهاء الجماعي.

slay --name "node.*"

خطافات ما بعد الإنهاء

شغّل أوامر تلقائيًا بعد الإنهاء — أعد تشغيل الخوادم أو ابدأ البناء أو أبلغ فريقك.

slay 3000 --then "npm start"

توفر المنفذ

تحقق مما إذا كانت المنافذ متاحة، واعثر على المنفذ التالي المتوفر. مثالي لسكربتات CI.

slay check 3000

توقف عن تخمين PIDs

الطريقة القديمة مؤلمة. مع slay أمر واحد يكفي.

الطريقة القديمة

bash
$ lsof -iTCP:3000 -sTCP:LISTEN
node 12847 user 23u IPv4 TCP *:3000
$ kill -9 12847
$ lsof -iTCP:3000 -sTCP:LISTEN
# still alive... try again?
$ kill -SIGKILL 12847

طريقة slay

slay
$ slay 3000
3000 > node PID 12847 (Dev Server)
killed PID 12847 on port 3000 [SIGKILL]
 
Done in 0.2s
 

ابدأ الآن

جاهز للعمل بأمر واحد.

بداية سريعة
npx slay-port 3000
تثبيت عام
npm i -g slay-port && slay 3000
بداية سريعة
pnpm dlx slay-port 3000
تثبيت عام
pnpm add -g slay-port && slay 3000
بداية سريعة
yarn dlx slay-port 3000
تثبيت عام
yarn global add slay-port && slay 3000
بداية سريعة
bunx slay-port 3000
تثبيت عام
bun add -g slay-port && slay 3000
بداية سريعة
brew install hammadxcm/slay/slay-port
تثبيت عام
brew install hammadxcm/slay/slay-port && slay 3000
بداية سريعة
sudo snap install slay-it --classic
تثبيت عام
sudo snap install slay-it --classic && slay 3000
بداية سريعة
sudo apt install slay-port
تثبيت عام
sudo apt install slay-port && slay 3000
بداية سريعة
scoop bucket add slay https://github.com/hammadxcm/scoop-slay && scoop install slay
تثبيت عام
scoop install slay && slay 3000
بداية سريعة
winget install hammadxcm.slay-port
تثبيت عام
winget install hammadxcm.slay-port && slay 3000
استخدام API
import { findByPort, killProcess } from 'slay-port'

شاهده أثناء العمل

خمس عشرة طريقة للإيقاف.

Basic Kill

slay 3000
$ slay 3000
3000 > node PID 12847 (Dev Server)
* *
***
killed PID 12847 on port 3000 [SIGKILL]

Interactive Mode

slay -i
$ slay -i
> 3000 node PID 12847 Dev Server
8080 python PID 9321 HTTP Alt
5432 pg PID 4510 PostgreSQL
↑↓ navigate space select enter confirm

Watch Mode

slay 3000 -w
$ slay 3000 -w
watching port 3000...
killed PID 12847 [SIGKILL]
watching port 3000...
process respawned as PID 12901
killed PID 12901 [SIGKILL]
watching port 3000...

Force Kill

slay 3000 -f
$ slay 3000 -f
3000 > node PID 12847 (Dev Server)
*========================***
killed PID 12847 on port 3000 [SIGKILL]
no confirmation needed (-f)

Graceful Shutdown

slay 3000 --soft
$ slay 3000 --soft
3000 > node PID 12847 (Dev Server)
sending SIGTERM...
waiting for graceful exit (5s)...
process exited gracefully [SIGTERM]

Multi-port

slay 3000 8080 5432
$ slay 3000 8080 5432
3000 > node PID 12847 (Dev Server)
8080 > python PID 9321 (HTTP Alt)
5432 > pg PID 4510 (PostgreSQL)
killed 3 processes on 3 ports

Dry Run

slay 3000 -n
$ slay 3000 -n
3000 > node PID 12847 (Dev Server)
[dry run] would kill PID 12847
no processes were harmed

Process Tree

slay 3000 -t
$ slay 3000 -t
3000 > node PID 12847 (Dev Server)
└─ PID 12848 (worker)
└─ PID 12849 (worker)
killed tree: 12849, 12848, 12847

Kill by Name

slay --name "node.*"
$ slay --name "node.*" --exclude "vite"
PID 12847 node server.js (port 3000)
PID 13201 node worker.js (port 3001)
PID 14500 node vite.js (excluded)
killed 2 processes, 1 excluded

Post-Kill Hook

slay 3000 --then "npm start"
$ slay 3000 --then "npm start"
3000 > node PID 12847 (Dev Server)
killed PID 12847 on port 3000 [SIGKILL]
running hook: npm start
hook completed (exit 0)

Port Check

slay check 3000
$ slay check 3000
port 3000 is in use (node PID 12847)
$ slay check --next 3000
port 3002 is available

Init Config

slay init
$ slay init
✓ Created .slay.json with example profiles

Run Profile

slay --profile dev
$ slay --profile dev
3000 > node PID 12847 (Dev Server)
5173 > node PID 13201 (Vite)
5432 > pg PID 4510 (PostgreSQL)
killed 3 processes on 3 ports

Port Range

slay 8000-8005
$ slay 8000-8005
8000 > node PID 9001 (HTTP Alt)
8001 > node PID 9002 (HTTP Alt)
killed 2 processes on 2 ports (4 ports clear)

JSON Output

slay 3000 --json
$ slay 3000 --json
{"type":"found","pid":12847,"port":3000}
{"type":"killed","pid":12847,"signal":"SIGKILL"}
{"type":"summary","killed":1,"failed":0}

UDP Ports

slay 53 --udp
$ slay 53 --udp
53/udp > mDNSResponder PID 289
*========================***
killed PID 289 on port 53/udp [SIGKILL]

All Listeners

slay --all -y
$ slay --all -y
scanning all ports...
found 5 listening processes
killed 5/5 processes
0 failed

Verbose Mode

slay 3000 -v
$ slay 3000 -v
[tcp] 3000 > node PID 12847
[signal] sending SIGKILL to 12847
[timing] kill took 12ms
killed PID 12847 on port 3000 [SIGKILL]

برمجي API

استخدم slay كمكتبة في مشاريع Node.js الخاصة بك.

الصادرات

  • findByPort(platform, port) Find processes on a specific port
  • findByPorts(platform, ports) Find processes on multiple ports
  • findAllListening(platform) Find all listening processes
  • killProcess(platform, proc) Kill a single process
  • killAll(platform, procs) Kill multiple processes
  • enrichLabel(proc) Add smart labels to a process
api.ts
import { findByPort, killProcess, platform }
from 'slay-port';
 
const procs = await findByPort(platform, 3000);
 
for (const proc of procs) {
const result = await killProcess(platform, proc);
console.log( `Killed $${result.pid} on $${result.port}` );
}