Убивайте процессы по порту.
Красиво.

Молниеносный CLI, который находит и убивает процессы, занимающие ваши порты. Интерактивный TUI, режим наблюдения, деревья процессов и ноль зависимостей.

Почему slay?

Всё, что нужно для освобождения ваших портов.

Интерактивный TUI

Ищите, просматривайте и выбирайте несколько процессов с помощью клавиатурной навигации.

Анимации Kill

Смотрите, как пуля летит через ваш терминал, когда процесс уничтожается.

Мягкое Завершение

Сначала SIGTERM, эскалация до SIGKILL только если процесс отказывается завершаться.

Режим Наблюдения

Продолжайте опрашивать и автоматически убивайте процессы, которые возрождаются на вашем порту.

Деревья Процессов

Убивайте всё дерево процессов, сначала дочерние, для чистого завершения.

Вывод JSON

Передавайте NDJSON в jq для скриптов, CI пайплайнов и автоматизации.

Умные Метки

Автоматически распознаёт Node, Python, Docker, PostgreSQL, Vite и более 20 других.

Ноль Зависимостей

Без лишнего. Поставляет только необходимое. Устанавливается менее чем за секунду.

Кроссплатформенный

Работает на macOS (lsof), Linux (lsof) и Windows (netstat + taskkill).

Начало работы

Готов к работе за одну команду.

Быстрый Старт
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
Использование 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

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}` );
}