aboutsummaryrefslogtreecommitdiff
path: root/fkill
diff options
context:
space:
mode:
Diffstat (limited to 'fkill')
-rwxr-xr-xfkill22
1 files changed, 22 insertions, 0 deletions
diff --git a/fkill b/fkill
new file mode 100755
index 0000000..83ee9b5
--- /dev/null
+++ b/fkill
@@ -0,0 +1,22 @@
+#!/usr/bin/env bash
+# Pick processes via fzf, kill them. Default SIGTERM, override with first arg.
+# Usage: fkill # SIGTERM
+# fkill KILL # SIGKILL
+# fkill 9 # SIGKILL (numeric)
+set -eu
+
+sig="${1:-TERM}"
+
+pids=$(
+ { printf '%-7s %-10s %5s %5s %10s %s\n' PID USER %CPU %MEM ELAPSED COMMAND
+ ps -eo pid,user,pcpu,pmem,etime,args --sort=-pcpu --no-headers \
+ | awk -v me=$$ -v ppid=$PPID '$1 != me && $1 != ppid'
+ } \
+ | fzf --multi --header-lines=1 \
+ --header='TAB multi-select, Enter to kill' \
+ --preview='echo {}' --preview-window=down:3:wrap \
+ | awk '{print $1}'
+)
+
+[[ -z "$pids" ]] && exit 0
+echo "$pids" | xargs -r kill -"$sig"