theniceboy/zsh/fzf/fps
2020-03-04 22:48:38 -08:00

28 lines
776 B
Bash
Executable file

#!/usr/bin/env zsh
_fps() {
local render
if (( $+commands[grcat] )); then
render='grcat fps.grc'
else
render='cat'
fi
ps -eo user,pid,ppid,pgid,stat,tname,cmd | awk '
BEGIN { "ps -p $$ -o pgid --no-headers | tr -d \"[:blank:]\"" | getline pgid } {
if ($4 != pgid || $2 == pgid)
print
}' | ${(z)render}
}
setopt localoptions pipefail
local fzf_opts="--header-lines=1 -m \
${commands[grcat]:+--ansi} --height=50% \
--min-height=15 --tac --reverse \
--preview-window=down:2"
local fzf_preview_cmd="ps -o pcpu,pmem,vsz,rss,thcount,start_time,time -p {2}"
_fps | fzf ${(z)fzf_opts} --preview=$fzf_preview_cmd |
awk -v sep=${FZF_MUL_DELIM:- } '{ printf "%s%c", $2, sep }' | sed -E "s/${FZF_MUL_DELIM:- }$//"