当前位置:  开发笔记 > 编程语言 > 正文

如何检查X服务器是否正在运行?

如何解决《如何检查X服务器是否正在运行?》经验,为你挑选了5个好方法。

有没有办法找出当前会话用户是否正在运行Xserver(在Linux下)?

我开始做的事情如下:

ps -e | grep X 

但这并不总是有效

我尝试的另一件事是检查$DISPLAY变量

有没有其他方法来检查这个?

编辑:有人建议使用$ DISPLAY变量,但如果用户摆弄这个变量怎么办?如果他试图做某事并改变这个变量然后当我检查它时,它不再反映系统的准确状态.有没有具体的方法来做到总会得到正确的答案?

我发现它可以以编程方式完成:

#include  
int main()
    { exit(XOpenDisplay(NULL) ? 0 : 1);  } 

$ gcc -o xprobe xprobe.c -L/usr/X11R6/lib -lX11 

但我正在寻找一种脚本方式.



1> bobbogo..:

我经常需要在运行许多X服务器的服务器上运行X命令,因此ps基础答案不起作用.当然,$DISPLAY必须适当设置.要检查它是否有效,请使用以下xset q某些片段:

if ! xset q &>/dev/null; then
    echo "No X server at \$DISPLAY [$DISPLAY]" >&2
    exit 1
fi



2> Ken..:

$ DISPLAY是标准方式.这就是用户如何与程序进行通信,了解使用哪个X服务器(如果有的话).


我的意思是,如果有一个在localhost上运行,但他们将$ DISPLAY设置为另一台服务器,因为它们是远程登录的,你还想要"本地"服务器吗?如果有多个本地的怎么办?我不知道你是怎么发现的,或者你想要的原因.$ DISPLAY存在是有原因的.
如果我设置$ DISPLAY,那是因为我希望你的程序转到另一个显示器.您想要猜测用户显式配置的用例究竟是什么?你是否避免使用$ HOME以防用户"摆弄"它?它在哪里结束?
确切地说,您想要访问哪个X服务器?我有很多次不得不在远程系统上安装驱动程序.此外,在POSIX中,XOpenDisplay(NULL)被定义为简单地读取$ DISPLAY,所以最好听起来像是在指望非标准行为.

3> Ian Kelling..:

我用

pidof X && echo "yup X server is running"

pgrep和$ DISPLAY是其他选项.

其他考虑:

su然后$ DISPLAY将不会被设置.改变程序运行环境的事情会使这不起作用.

我不推荐ps -e | grep X因为这会找到procX,它不是X服务器.



4> dicroce..:

我用来判断X是否正在运行的一个技巧是:

telnet 127.0.0.1 6000

如果它连接,你有一个X服务器正在运行,它接受入站TCP连接(这些天通常不是默认的)....



5> shuckc..:

您可以使用xdpyinfo(可以通过安装apt-get install x11-utils).

推荐阅读
coco2冰冰
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有