awkとコマンドを使用して「ps」コマンドを使用してプロセスIDを表示する方法

awkとコマンドを使用して「ps」コマンドを使用してプロセスIDを表示する方法

PID以下を使って(2列目)を表示できます。

ps -ef | grep runner | awk {'print$2'}
2432
6346
6348
6350
6352
7407
7410
7416
10824
17305
17494
29658

ところで私がお見せしたいのは(8列)pwdx <PID>です。COMMAND

どうすればいいですか?

答え1

awkを使ってps出力をフィルタリングするのではなく、ps -oオプションを使って必要なものを取得します。

ps -e -o pid,comm

上記のように実行する必要があります。印刷の詳細については、psのマニュアルページを参照してください。

アップデート:正しく機能していないことがわかりましたpwdx。サイズに合わせて着てみてください。

#!/bin/bash
ps -o pid= -o comm= |
while read LINE
do
    eval $(echo $LINE |
    awk '{pid=$1; comm=$2; printf "echo -n \"%s  \"; pwdx %s\n", comm, pid}' )
done

必要なプロセスを取得するには、フラグを追加する必要がありますps。上記のプロセスは、ユーザーIDのプロセスのみを示しています。

答え2

2列と8列を印刷するには、印刷時に$ 8を追加するだけです。

ps -ef | grep runner | awk {'print $2" "$8'}

答え3

私はそうします:

pwdx $(ps -ef | grep runner | awk {'print$2'})

代替構文:

pwdx `ps -ef | grep runner | awk {'print$2'}`

答え4

pwdx $(pgrep -f runner)|tr -d : > /tmp/1
pgrep -fl runner > /tmp/2
join /tmp/[12]

関連情報