次のコマンドがtail
実行されていないときに出力が生成されない場合はうれしいです。
ps --no-headers $(pidof tail)
代わりに、私は次のようになります。
964 pts/2 00:00:01 bash
4393 pts/2 00:00:00 ps
答え1
ps
あなたのバージョンがこのオプションをサポートしている場合-C
:
ps --no-headers -C tail
ps
それ以外の場合は、成功した場合にのみ実行できますpidof
。
pid=$(pidof tail) && ps --no-headers ${pid}
または(Zshの場合):
pid=$(pidof tail) && ps --no-headers $=pid
(ありがとうございます。ザイルズ! )。
答え2
pidof
pgrep
システムで実行されている項目を確認するのに便利なコマンドですが、一部のオペレーティングシステムでは両方のコマンドを使用できません。これは、ほとんどのUnix、BSD、およびLinuxバージョンで動作します。
ps aux | grep tail | grep -v grep
これにより、grepコマンド自体が削除されます。
答え3
を使用すると、pgrep
PIDとコマンドを一覧表示でき、空の入力ではプロセスが一致しません。
pgrep -a tail
表示されるフィールドをさらに制御するには、pidof
プロセスリストが空でない場合にのみ、またはを呼び出しますpgrep
。ps
一時変数を使用できます。
pids=$(pgrep -d, tail)
[ -z "$pids" ] || ps --no-headers -p "$pids"
またはifne
その他のユーティリティ:
pgrep tail | ifne xargs ps --no-headers