2016-09-28 3 views
0

は、私はそれは私がルートを表示する必要が0だ場合、私は、名前を必要とする代わりに、そのことを、数だけを表示する/proc/*/statusが、grepを使ってUID情報を抽出するには?

cat $i/status|grep "^Uid"|awk '{printf "%4s",$2}' 

からユーザー名を取得する必要があります。

答えて

3

あなたは、ほとんどがあります。ユーザ名にUIDを解決するためのgetentを使用します。

getent passwd `grep "^Uid" /proc/$i/status |awk '{printf "%4s",$2}'`| cut -d: -f1 
+0

ありがとうございますが、数字も印刷されます。ユーザ名を印刷するにはどうしたらいいですか? –

+0

は私のユーザ名のみを表示します。 – Misko

0
% getent passwd $(grep -oP '^Uid:\s*\K\d+' /proc/$$/status) | cut -d: -f1 

変更$$(現在のシェルprocessusのPID)

+0

は、あなたが質問を読みましたか?彼はUIDではなくユーザ名を求めています。 – Barmar

+0

タイトルは単なる要約です。実際の質問は本文にあります。あなたは全体を読む必要があります。 – Barmar

0
$ awk 'NR==FNR {uid[$3]=$1; next} /^Uid:/ {print uid[$2]}' FS=":" /etc/passwd FS="[ \t]+" /proc/1665/status 
root 

はの説明:

NR==FNR {   # /etc/passwd 
    uid[$3]=$1 # an array with key=uid, value=username 
    next 
} 
/^Uid:/ {   # /proc/.../status record startin with Uid 
    print uid[$2] # print username from array where uid matches 
} 
関連する問題