-
Notifications
You must be signed in to change notification settings - Fork 0
/
running
executable file
·41 lines (36 loc) · 1.11 KB
/
running
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
#!/usr/bin/env sh
# compat: +ash +bash +dash +hush -ksh +mksh +oksh +osh +posh +yash +zsh YES_BB_AWK
# probably not compatible with busybox ps because its column 2 isn't PID.
running() { ### @- WIP
local cmd=0 pid=0 col=
local usage='usage: running {cmd|pid} ...'
[ $# -gt 0 ] || { printf '%s\n' "$usage" >&2; return 2; }
for col; do
case "$col" in
(cmd) cmd=1;;
(pid) pid=1;;
(*) printf '%s\n' "$usage" >&2; return 2;;
esac
done
# ps -o pid,comm=CMD
# argumentless flags accepted by busybox:
# a d e f l A T Z
# argumentless flags accepted by coreutils:
# a c d e f g h j l m n r s t u v w x A F H L M N P S T V X Z
/usr/bin/env ps -f | awk -v cmd=$cmd -v pid=$pid '
NR==1{
s=index($0,"COMMAND")
s=s?s:index($0,"CMD")
}
NR>1{
l=substr($0,s)
sub(" .*","",l)
sub(".*[/\\\\]","",l)
if(pid)printf "%s", $2
if(cmd&&pid)printf "\t"
if(cmd)printf "%s", l
printf "\n"
}
'
}
[ -n "${preload+-}" ] || running "$@"