先頭へ戻る 特定のプロセスを追跡する比較的簡単なオプションはありますか?
理想的には、人間が読める値でプロセスを識別しますか?たとえば、chrome
またはjava
。
つまり、上部に提供されているすべての一般的な情報を表示したいのですが、結果は提供されたパラメータでフィルタリングされます。 「クロム」または「Java」
答え1
私のもう一つの答えここ、次のことができます。
top -p `pgrep "java"`
答え2
あなたは単に使用することができますgrep
:
NAME
grep, egrep, fgrep, rgrep - print lines matching a pattern
SYNOPSIS
grep [OPTIONS] PATTERN [FILE...]
grep [OPTIONS] [-e PATTERN | -f FILE] [FILE...]
DESCRIPTION
grep searches the named input FILEs (or standard input if no files are named, or if a single
hyphen-minus (-) is given as file name) for lines containing a match to the given PATTERN. By
default, grep prints the matching lines.
必要な出力(ex-chrome)を取得するには、次のコマンドを実行します。
top | grep chrome
ここではgrep
パイプを使用|
するためtop
、出力を(入力で)並列grep
に実行し、停止するまで一致する行をフィルタリングします。top
grep
grep chrome
chrome
top
答え3
top -p `pgrep -d "," java`
説明する:
top -p pid1,pid2
:PIDをカンマで区切って複数のプロセス情報を表示します。,
pgrep -d "," java
:すべてのJavaプログラムのpidを印刷します。 pidはデフォルトで改行文字で区切られます。上部の要件に応じて-d ","
取り外して使用してください。,
このようなエラーが表示されると、top: -p argument missing
実行中のJavaプログラムがないことを意味します。つまり、pgrepの出力がないという意味です。
答え4
他にも良い回答もありましたが、しばらく前にスクリプトを作成し、名前をptopに付けましたが、うまくいきました。
#!/bin/sh
top -p $(pidof "$@" |sed s#\ #,#g) 2>/dev/null
if [ $? -ne 0 ]; then
echo No processes with the specified name\(s\) were found
fi
これは複数のプロセス名(例ptop bash chrome
:)の指定をサポートし、指定された名前のプロセスが実行されていないときにより良いエラーメッセージを提供します。