pgrepを見る方法?

pgrepを見る方法?

pgrepこれを使用してコマンドを実行すると、watch実際のpgrep出力だけでなくプロセスも表示されますwatch

例:

watch pgrep -lf donothing

3つのプロセスが表示されますが、

pgrep -lf donothing

いずれも表示されません。watch見せずにそれを適切に処理するためのエレガントな方法はありますか?私自身のプロセスはwatch

編集する

Patrickのアドバイスを活用してください。

watch pgrep -f '^python donothing.py'

私の使用量を表示しますpgrep(2秒ごとに更新されます...)

watch pgrep -l 'python donothing.py'

(これらのpgrepコマンドは単独では機能しますが、組み合わせては機能しませんwatch)。

watch "pgrep 'python donothing.py'"

プロセスがありますが、何も表示されません。

ベストアンサー1

pgrep donothing.pyあなたの意見で判断したり、またはする必要がありますpgrep -x donothing.py

使用されると、pgrep -f名前および/または引数に一致する文字列を持つすべてのコマンドを見つけます。結果をフィルタリングする良い方法はありません。解決策は、必要なものを正確に一致させることであるため、プロセス名を一致させることです。
pgrepデフォルトでは、プロセス名のみが一致します。デフォルトでは、名前に一致する文字列を含むすべてのプロセスを検索します。-x名前が文字列と正確に一致するプロセスを検索します。

pgrepまた、スクリプトを理解するのに十分スマートです。というスクリプトがある場合(または同様のもの)foo.shと表示されます。この場合、スクリプト名が比較されます。だからあなたはすることができます または 。ps/bin/sh foo.shpgreppgrep foo.shpgrep -x foo.sh

したがって、あなたの場合は、pgrep -x donothing.py正確な一致を得るために努力する必要があります。

編集:
これはASスクリプトでのみ機能することに注意してください/path/to/donothing.py。起動するとpython donothing.py動作しません。

この場合は、のような正規表現を使用する必要がありますpgrep -f '^python donothing.py'

EDIT2:参照に
問題watchがあります。 runningはパラメータなしで実行されますwatch pgrep -f '^python donothing.py'。予想したものとは異なり、パラメータとして渡さpgrepれます。完全なpgrepコマンドを引用する必要があります。-f '^python donothing.py'watchpgrep

watch "pgrep -f '^python donothing.py'"

別の注意事項として。他の目的に使用する計画であれば、これを行う方が安全です。

watch "pgrep -f '(^|\S+/)python donothing.py'"

これは/usr/bin/pythonプロセスが単純ですpython

おすすめ記事