shでpgrepを使用しないでください

shでpgrepを使用しないでください
#!/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

全然知らない psAIXに付属していますが、そうでない場合があります。すべてのPOSIXでpidを確実に取得できますps。より多くの作業が必要です。

set -- $(
    ps -Aocomm=,pid=,etime= |
    sed -ne "s/^$NAME  *//p"
)

... POSIXpsとPOSIXを完全に置き換える必要がありますsed

しかし、私はそれをするのが好きps -C"$NAME"で、なぜ誰かがそれを使用する理由を理解していませんpgrep

おすすめ記事