【问题标题】:How do I get the username owning the currently active gui session?如何获取拥有当前活动 gui 会话的用户名?
【发布时间】:2013-08-01 14:21:54
【问题描述】:

我在 Linux 中发布了some scripts to automatically mount 并卸载了磁盘,现在我得到了a request 以使磁盘归当前登录用户所有。即当前持有gui的用户被占用(本例不关心终端用户)。

我将如何获取用户名?可能有许多不同的窗口管理器,因此如果不存在独立于 wm 的解决方案,则可能需要依赖于 wm 的不同解决方案。

首先,仅针对 Gnome 的解决方案可能就足够了。

脚本在任何用户会话之外运行(由 udev 触发)。

【问题讨论】:

    标签: linux gnome window-managers


    【解决方案1】:

    如果您正在运行 bash 脚本,则当前登录用户的用户名应存储为环境变量 $USER 或 $USERNAME。 env 命令将为您提供当前 shell 中所有环境变量的列表。

    现在,如果您想要当前用户的用户 ID,请使用 id 命令。

    【讨论】:

    • 我认为从信息中可以清楚地看出我在 gui 会话之外运行这些脚本,但我想不是 :) 现在添加了相关信息。
    • 对此感到抱歉。您可能能够在脚本执行和使用时在前台找到运行与 gui 关联的进程之一的用户 ID,例如 X 服务器或窗口管理器的进程之一安装磁盘的信息,但我不能说我曾经尝试过这个,并且我预见到可能存在可移植性问题。祝你的剧本好运。
    • 谢谢。 Grepping ps 的输出是我能在 atm 看到的唯一跨 gui 解决方案。
    【解决方案2】:

    如果您的 xserver 连接到 tty7,w -hs | grep tty7 | cut -f1 -d ' ' 似乎可以工作(相应修改)。

    【讨论】:

      【解决方案3】:

      Gnome 应该启动一个名为 gdm(Gnome 显示管理器)的进程。

      如果您使用 grep 获取它,它应该将运行它的用户传递给您。

      ps aux | grep gdm 
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-08-26
        • 1970-01-01
        相关资源
        最近更新 更多