Grepコマンドの使用

Grepコマンドの使用

grep コマンドの使用に関する 2 つの簡単な質問があります。

私がしたいことは:

  1. リストの作成に使用したコマンドに加えて、実行中の行(プロセス)の総数を表示します。
  2. 次に、私が実行している行の全リストを変更し、userIDとPIDのみを新しいリストとして確認したいと思います。

最初のものはps -ef | grep myusername | grep -v "somecommand" | wc -l()のようなもので十分です。リストを生成するために使用されるコマンドを編集するプロセスで何を入力するのかわかりません。

2番目の質問はどのように処理するのかわかりません。

答え1

ユーザーのすべてのプロセスを一覧表示するには(リストの作成に使用したコマンドに加えて)、次のものを使用できます。

ps -U username -u username u | grep -v ps

開始されたすべてのプロセスをusername実際のユーザーIDと有効なユーザーIDとしてリストし、リストをps生成するために使用されたコマンドをリストしないようにプロセスをフィルターします。

別のもの(ユーザーとPID):

ps -U username -u username u | grep -v ps | awk  {'print $1, $2'}

awk結果の1列と2列のみを表示するために使用されます。

答え2

最初の質問では、ps次のオプションを使用して、ユーザー名で実行されているすべてのプロセスを一覧表示できます。

$ ps -o pid,uid -u 1000|wc -l

1000この値をユーザーのUIDに置き換えることができます。表示するためだけにpid追加しましたuid。必要なものは何でも追加できます。

2番目のケースも最初のケースと同じ

$  ps -o pid,uid -u 1000 > process.list

答え3

最初の質問では、一致の数を提供するgrepの-cコマンドを使用できます。

ps -ef | grep -v "grep" | grep -c "username"

これはすべてのプロセスを一覧表示し、grep自体を削除し(リストを取得するために使用したプロセスはカウントしません)、ユーザー名から合計数を取得します。

関連情報