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]