我需要从/proc/*/status
获取用户名,但
cat $i/status|grep "^Uid"|awk '{printf "%4s",$2}'
只显示数字,而不是我需要的名称,如果它是0
我需要显示根。
答案 0 :(得分:3)
你快到了。使用getent
将UID解析为用户名:
getent passwd `grep "^Uid" /proc/$i/status |awk '{printf "%4s",$2}'`| cut -d: -f1
答案 1 :(得分:0)
% getent passwd $(grep -oP '^Uid:\s*\K\d+' /proc/$$/status) | cut -d: -f1
更改$$
(当前shell processus pid)
答案 2 :(得分: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
}