[英]How could I get the user name from a process id in python on Linux?
我想從Linux上的python中獲取進程ID的用戶名,所以我可以這樣顯示:
name user name pid
Chrome wong2 123
您可以從/proc/
pid /status
讀取uid。 他們是以Uid:
開頭的Uid:
。 從uid,您可以使用pwd.getpwuid(pid).pw_name
派生用戶名。
UID = 1
EUID = 2
def owner(pid):
'''Return username of UID of process pid'''
for ln in open('/proc/%d/status' % pid):
if ln.startswith('Uid:'):
uid = int(ln.split()[UID])
return pwd.getpwuid(uid).pw_name
(常量來自Linux內核中的fs/proc/array.c
。)
如果您不想解析/ proc / PID / status文件並且進程沒有更改UID,並且如果查詢進程看起來很昂貴,那么請嘗試:
import os
import pwd
# the /proc/PID is owned by process creator
proc_stat_file = os.stat("/proc/%d" % pid)
# get UID via stat call
uid = proc_stat_file.st_uid
# look up the username from uid
username = pwd.getpwuid(uid)[0]
您可以使用subprocess.Popen來調用shell命令,並從stdout讀取變量。
import subprocess
p=Popen(['/bin/ps', '-o', 'comm,pid,user',stdout=PIPE)
text=p.stdout.read()
在Linux中,您可以執行ps -f
並獲得UID和PID( -f
執行完整格式列表)。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.