#!/bin/sh
ALTER="$1"
NAME="$2"
for pr in $(pgrep $NAME); do
elapse=$(ps -o etime= -p $pr)
[ "${elapse%-*}" -gt "$ALTER" ] && echo $pr
done
サポートされpgrep
ていない場合はどうすればよいですかpgrep
?
ベストアンサー1
さて、標準のLinuxを使ってください。procps-ng
ps
バイナリ、私たとえば、次のようにこれを回避できます。
#!/bin/sh
ALTER="$1" NAME="$2" IFS='
'
set -- $(ps -opid=,etime= -C"$NAME")
while [ 0 -lt $# ]
do case $2 in (*-*)
[ "${2%-*}" -gt "$ALTER" ] &&
printf %d\\n "$1"
esac; shift 2
done
全然知らない何 ps
AIXに付属していますが、そうでない場合があります。すべてのPOSIXでpidを確実に取得できますps
。より多くの作業が必要です。
set -- $(
ps -Aocomm=,pid=,etime= |
sed -ne "s/^$NAME *//p"
)
... POSIXps
とPOSIXを完全に置き換える必要がありますsed
。
しかし、私はそれをするのが好きps -C"$NAME"
で、なぜ誰かがそれを使用する理由を理解していませんpgrep
。