proc
process management that makes sense.
target by port, pid, name or path. one syntax everywhere.
what's on port 3000?
proc on :3000
kill it
proc kill :3000
free the port (kill + verify)
proc free :3000
why is this port busy?
proc why :3000
node processes in this directory
proc by node --in .
wait for it to finish
proc wait node
before / after
| task | without proc | with proc |
|---|---|---|
| what's on port 3000? | lsof -i :3000 -P -n |
proc on :3000 |
| kill it | lsof -i :3000 -t | xargs kill -9 |
proc kill :3000 |
| free the port | lsof -t -i:3000 | xargs kill && sleep 1 && lsof -i:3000 |
proc free :3000 |
| wait for process | while ps aux | grep node | grep -v grep; do sleep 5; done |
proc wait node |
| find orphans | no standard tool | proc orphans |
| pause a process | kill -STOP $(pgrep node) |
proc freeze node |
commands
discovery
proc on :3000 what's on this port?proc by node find by nameproc for ./app.js what's running this file?proc in . processes in this directoryproc why :3000 trace ancestryproc orphans find abandoned processesproc ports all listening portsproc tree process hierarchylifecycle
proc kill :3000 force killproc stop node graceful shutdownproc free :3000 kill + verify port freedproc freeze node pause (SIGSTOP)proc thaw node resume (SIGCONT)proc wait node block until exitcomposable
targets work everywhere: :port, PID, name. comma-separate for multiple. add --in . to scope to current directory. add --json for structured output.
proc kill :3000,:8080,node --in . --json --yes
install
macOS
brew install yazeed/proc/proc
npm / bun
npm install -g proc-cli
rust
cargo install proc-cli
shell
curl -fsSL https://raw.githubusercontent.com/yazeed/proc/main/install.sh | bash