首页 > 其他分享 >判断使用的是 x11 还是 wayland

判断使用的是 x11 还是 wayland

时间:2024-05-20 16:31:58浏览次数:23  
标签:ps 00 判断 grep LONG wayland x11

  • date: 2024-05-20

之前的判断方式是运行命令 echo "$XDG_SESSION_TYPE" 来查看环境变量的值,如果返回的是 wayland 则说明用的 wayland,如果返回的是 x11 说明用的 x11。

但是,如果返回的是 tty 则不能说明是哪个。例如通过 ssh 连接到使用 x11 的远程主机,会返回 tty。

ps

如何判断linux 显示服务器是xorg (x11) 还是wayland 2023-02-24 Tarzen中提出使用 ps -ef |grep x11 或者 ps -ef |grep wayland 来查找相关进程,但是实测存在问题,如下所示,第一行显示用的是 x11,但是后面查找相关进程时,却没有找到 x11 或 wayland 相关进程。

$ echo $XDG_SESSION_TYPE
x11
$ ps -ef | grep wayland
mifen     277467  252819  0 15:26 pts/0    00:00:00 grep wayland
$ ps -ef | grep x11
mifen     277475  252819  0 15:26 pts/0    00:00:00 grep x11
$ ps -ef | grep *x11*
mifen     277903  252819  0 15:36 pts/0    00:00:00 grep *x11*
$ ps -ef | grep *wayland*
mifen     277906  252819  0 15:36 pts/0    00:00:00 grep *wayland*

按理说这个方法是管用的,然后我手打发现好像不用加短线,然后这个方法就正常了,用 ssh 时也是能够判断用的是 x11 还是 wayland,有个缺陷就是输出有点长,在下面里用 LONG_LONG 替代了很多字符,于是想着可以用 wc -l 来统计输出的行数,下面例子的最后两行就是

$ ps ef | grep x11
 278341 pts/3    Ss     0:00 bash SSH_AUTH_SOCK LONG_LONG XDG_SEAT=seat0
 278349 pts/3    R+     0:00  \_ ps ef SHELL=/bin/bash LONG_LONG _=/usr/bin/ps
 278350 pts/3    S+     0:00  \_ grep x11 SHELL=/bin/bash LONG_LONG _=/usr/bin/grep
 277868 pts/1    Ss+    0:00 bash SSH_AUTH_SOCK LONG_LONG XDG_SEAT=seat0
 252819 pts/0    Ss+    0:00 bash SSH_AUTH_SOCK LONG_LONG XDG_SEAT=seat0

$ ps ef | grep wayland
 278353 pts/3    S+     0:00  \_ grep wayland SHELL=/bin/bash LONG_LONG _=/usr/bin/grep

$ ps ef | grep x11 | wc -l
5
$ ps ef | grep wayland | wc -l
1

loginctl

如何检查: 是 Xorg 还是 Wayland 显示服务器?作者: Arindam 译者: LCTT geekpi | 2022-11-05 中提出使用 loginctl,然后把 SESSION 的值传递给 loginctl 来查看当前会话的类型

$ loginctl
SESSION  UID USER  SEAT  TTY STATE  IDLE SINCE
      2 1000 mifen seat0 -   active no   -    

$ loginctl show-session 2 -p Type
Type=x11

这个方法也存在刚开始我们说的 ssh 问题,将会得到 Type=tty。如果存在多用户,这个还能看到其它人的会话类型,比如我是用 ssh 连接到远程主机,把我的参数丢进去得到 tty,看到某个用户的参数带字母(c2),和其他人不一样,把 c2 丢进去得到的结果是 x11。也就是说用这个办法的话则是尽量变量所有的会话,忽略掉返回 tty 的,才知道答案,比如下面的例子:

$ loginctl
SESSION  UID USER  SEAT  TTY   STATE  IDLE SINCE
     12 1000 mifen -     pts/2 active no   -
      2 1000 mifen seat0 -     active no   -

$ loginctl show-session 12 -p Type
Type=tty
$ loginctl show-session 2 -p Type
Type=x11

上面的例子中,用 ssh 连接到远程主机,loginctl 得到的结果有两个,分别查看类型后是 tty、x11,因此可以判断远程主机采用的是 x11

标签:ps,00,判断,grep,LONG,wayland,x11
From: https://www.cnblogs.com/guilinmifen/p/18202274

相关文章

  • oracle的非空判断
    oracle的非空判断参考:oracle的非空字符串判断-CSDN博客在oracle中,空字符串当null处理,所以想找到空字符串,就可以用isnull来获取获取非空字段,就直接用isnotnull来获取用“=''”或者“!=''”来作为条件的话,就会找不到结果......
  • 【每周例题】判断回文串
    判断回文串题目给你一个字符串 x ,如果 x 是一个回文字符串,返回 true ;否则,返回 false 。回文字符串是指正序(从左向右)和倒序(从右向左)读都是一样的。例如,aba 是回文,而 abc 不是。代码#include<bits/stdc++.h>#include<cstring>usingnamespacestd;intmain(){......
  • 数据结构学习笔记-判断是否为无向图
    判断是否为无向图问题描述:设图G用邻接矩阵A[n+1,n+1]表示,设计算法以判断G是否是无向图。【算法设计思想】遍历矩阵使用两层嵌套的for循环,外层循环变量......
  • R语言中判断数值是否带有小数点
     001、不为整数>a<-5.324>floor(a)==a##截断后不相等,说明带有小数点部分,即不为整数[1]FALSE 002、是整数>b<-324>floor(b)==b##截断小数点后仍然相等,说明是整数[1]TRUE 。......
  • js 判断数组中的所有值是否相同
    使用Set数据结构:将数组转换为Set,如果Set的长度为1,则说明数组中所有的值都相同。使用for循环:遍历数组,将每个元素与前面的元素进行比较,如果存在不同的元素,则说明数组中的所有值不相同。使用Array.prototype.every()方法:使用every方法遍历数组,判断数组中的每个元素是否......
  • Python03判断语句
    Python03判断语句比较运算符if语句......
  • 一个Java基于codePoint的emoji判断方法
    该方法参考自一篇博客java判断是否是emoji字符(史上最全)_Mr.QingBin的博客-CSDN博客_java判断emoji经过简单封装如下:publicclassEmojiFilter{privateEmojiFilter(){}/***过滤emoji或者其他非文字类型的字符*如果只需要判断是否含有emoji,使用hasEmoji......
  • 如何使用 JS 判断用户是否处于活跃状态
    有时候,我们需要在网页判断用户是否处与非活跃状态,如果用户长时间没有在页面上进行任何操作,我们则判定该用户是非活跃的。在javascript中我们可以通过监听某些鼠标或键盘相关的事件来判定用户是否在活跃中。案例演示在线演示-使用JS判断用户是否处于活跃状态实现代码案......
  • 如何使用 JS 判断用户是否处于活跃状态
    有时候,我们需要在网页判断用户是否处与非活跃状态,如果用户长时间没有在页面上进行任何操作,我们则判定该用户是非活跃的。在javascript中我们可以通过监听某些鼠标或键盘相关的事件来判定用户是否在活跃中。案例演示在线演示-使用JS判断用户是否处于活跃状态实现代码案......
  • 如何使用 JS 判断用户是否处于活跃状态
    有时候,我们需要在网页判断用户是否处与非活跃状态,如果用户长时间没有在页面上进行任何操作,我们则判定该用户是非活跃的。在javascript中我们可以通过监听某些鼠标或键盘相关的事件来判定用户是否在活跃中。案例演示在线演示-使用JS判断用户是否处于活跃状态实现代码案......