Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/359.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 作为守护进程,如何获取本地登录用户的用户名_Python_Linux_Bash_Xorg - Fatal编程技术网

Python 作为守护进程,如何获取本地登录用户的用户名

Python 作为守护进程,如何获取本地登录用户的用户名,python,linux,bash,xorg,Python,Linux,Bash,Xorg,我正在运行一个python脚本作为守护进程,希望使用xprop查询窗口信息。这似乎只有在我以登录并在本地启动X的用户身份运行xprop时才可能实现。我曾尝试以我的用户身份运行守护程序,它可以正常工作,但如果我可以像当前登录的用户一样运行xprop,它会更加健壮,也适用于其他用户 如何获取当前登录用户的名称 编辑:我不能只读取$USER,或者因为脚本可能以root用户身份运行。我需要运行X的人的用户名 我不确定这是否意味着要查找用户拥有的显示:0,如下所示(是否总是:0?)。最好的办法是什么 &g

我正在运行一个python脚本作为守护进程,希望使用
xprop
查询窗口信息。这似乎只有在我以登录并在本地启动X的用户身份运行
xprop
时才可能实现。我曾尝试以我的用户身份运行守护程序,它可以正常工作,但如果我可以像当前登录的用户一样运行
xprop
,它会更加健壮,也适用于其他用户

如何获取当前登录用户的名称

编辑:我不能只读取
$USER
,或者因为脚本可能以root用户身份运行。我需要运行
X
的人的用户名

我不确定这是否意味着要查找用户拥有的显示
:0
,如下所示(是否总是
:0
?)。最好的办法是什么

> who
myusername :0      2015-03-13 19:52
myusername pts/0   2015-03-13 19:53
也许是这样的:

ps -o user -p `pgrep -n '^(startkde|gnome-session)'` | tail -1
尽管这显然取决于窗口管理器



建议
os.getlogin()
的答案似乎很有希望,但不起作用,因为它“返回在进程的控制终端上登录的用户的名称”,因此会失败,因为
OSError:[Errno 25]设备的ioctl不适当
来自我的守护进程。

你的意思是
who | awk'$2==“:0”{print$1}“
?@orlp我不相信这是一个双面人。您的链接问题询问了当前用户,我已经描述了为什么这不是我想要的。执行此操作的“new and Shining”方法可能是通过dbus向会话管理器询问主席位的所有者。@dhke我很感兴趣,尤其是new and Shining。我想我不知道该找什么。您是否有时间详细说明答案或为我指出正确的方向?问题是,您可能不应该这样做,而是使用保存信息的用户会话启动一个小型客户端服务。如果您确实需要有关当前登录用户的信息(其中可能有多个),您可能需要查看ConsoleKit seat API()或Sign systemd Login:。没有可移植的方式来满足您的需求。