2016-09-28 3 views

답변

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 

변화 $$ (현재 쉘이 과정이의 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 
} 
관련 문제