linux关闭xserver服务,linux-如何检查X服务器是否正在运行?

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

有没有办法找出当前会话用户是否正在运行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

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

Roman M asked 2019-11-06T09:28:50Z

12个解决方案

56 votes

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

if ! xset q &>/dev/null; then

echo "No X server at \$DISPLAY [$DISPLAY]" >&2

exit 1

fi

bobbogo answered 2019-11-06T09

你可能感兴趣的:(linux关闭xserver服务,linux-如何检查X服务器是否正在运行?)