如何检查用户是否使用图形会话登录,并且同一用户正在执行脚本

如何检查用户是否使用图形会话登录,并且同一用户正在执行脚本

我有一个 bash 脚本,它除其他功能外还使用了该gsettings命令。在我看来,要使该命令起作用,用户必须使用图形会话登录,并且显然还必须以自己的身份(即非 root)执行该脚本。

我可以通过查看 TERM 变量来检查他们是否正在使用图形终端,但是如何确保脚本的执行者与使用图形会话登录的用户是同一个?

答案1

  • 去检查谁已登录您可以使用who

  • 去检查哪个用户运行了脚本

    ps aux | grep $0 | awk '{ print $1 }' | uniq
    

    ps aux:在第一列列出所有正在运行的进程,包括相应的用户。

    grep $0:搜索当前脚本

    awk '{ print $1 }':仅打印第一列的内容

    uniq:删除可能的重复项

  • 检查运行脚本的用户是否与登录用户相同

    LOGED_USER=$(who | awk '{ print $1 }') 
    EXEC_USER=$(ps aux | grep $0 | awk '{ print $1 }' | uniq)
    
    if [ $LOGED_USER == $EXEC_USER ]; then
          echo "Same USER"
    else 
          echo "Different USER"
    fi
    

相关内容