X 서버가 실행 중인지 확인하는 방법은 무엇입니까?
현재 세션 사용자가 Linux에서 Xserver를 실행 중인지 확인할 수있는 방법이 있습니까?
나는 다음과 같은 것으로 시작했습니다.
ps -e | grep X
하지만 이것은 항상 작동하지 않습니다
한 가지 더 시도한 것은 $DISPLAY
변수를 확인하는 것 입니다.
이것을 확인하는 다른 방법이 있습니까?
편집 : 일부 사람들은 $ DISPLAY 변수 사용을 제안했지만 사용자가이 변수를 사용하면 어떨까요? 그가 뭔가를 시도하고이 변수를 변경하면 내가 그것을 확인했을 때 더 이상 시스템의 정확한 상태를 반영하지 않습니다. 항상 정답을 반환하는 특정 방법이 없습니까?
따라서 프로그래밍 방식으로 수행 할 수 있습니다.
#include <X11/Xlib.h>
int main()
{ exit(XOpenDisplay(NULL) ? 0 : 1); }
$ gcc -o xprobe xprobe.c -L/usr/X11R6/lib -lX11
하지만 스크립트 방식을 찾고 있습니다.
많은 X 서버를 실행하는 서버에서 종종 X 명령을 실행해야하므로 ps
기반 응답이 작동하지 않습니다. 당연히 $DISPLAY
적절하게 설정되어야합니다. 그것이 유효한지 확인하려면 xset q
다음과 같은 일부 조각에서 사용하십시오 .
if ! xset q &>/dev/null; then
echo "No X server at \$DISPLAY [$DISPLAY]" >&2
exit 1
fi
$ DISPLAY가 표준 방식입니다. 이것이 사용자가 사용할 X 서버 (있는 경우)에 대해 프로그램과 통신하는 방법입니다.
나는 사용한다
pidof X && echo "yup X server is running"
pgrep 및 $ DISPLAY는 다른 옵션입니다.
기타 고려 사항 :
su 그러면 $ DISPLAY가 설정되지 않습니다. 실행중인 프로그램의 환경을 변경하는 요인으로 인해 작동하지 않을 수 있습니다.
나는 ps -e를 추천하지 않는다 | grep X는 X 서버가 아닌 procX를 찾습니다.
X가 실행 중인지 확인하는 데 사용하는 트릭은 다음과 같습니다.
텔넷 127.0.0.1 6000
연결되면 X 서버가 실행 중이고 인바운드 TCP 연결을 수락합니다 (요즘에는 일반적으로 기본값이 아님) ....
사용할 수 있습니다 xdpyinfo
(를 통해 설치할 수 있음 apt-get install x11-utils
).
xprop -root &> /dev/null
... "X-able"상황을 테스트하기 위해 시도 된 진정한 명령입니다. 그리고 X를 실행하는 모든 시스템에 있음이 거의 보장됩니다. 물론 명령이 발견되지 않으면 실패하므로 X가 존재하지 않더라도 X가 없다고 가정 할 수 있습니다. (그래서> 대신 &>를 사용합니다)
1)
# netstat -lp | grep -ix tcp 00 * : x11 * : * 2937 / X 듣기 tcp6 0 0 [::] : x11 [::] : * 2937 / X 듣기 활성 UNIX 도메인 소켓 (서버 만 해당) unix 2 [ACC] 스트림 듣기 8940 2937 / X @ / tmp / .X11-unix / X0 unix 2 [ACC] 스트림 듣기 8941 2937 / X /tmp/.X11-unix/X0 #
2) nmap
# nmap localhost | grep -ix 6000 / tcp 개방 X11 #
이 목적을 위해 xdpyprobe 프로그램을 작성 했습니다 . xset, xdpyinfo 및 기타 일반 도구와 달리 추가 작업을 수행하지 않으며 (X 서버를 확인하고 종료하기 만 함) 출력을 생성하지 않을 수 있습니다 ( "-q"옵션이 지정된 경우).
먼저 기본 X11 패키지가 서버에 올바르게 설치되었는지 확인해야합니다.
rpm -qa | grep xorg-x11-xauth
그렇지 않은 경우 모든 패키지를 친절하게 설치하십시오.
sudo yum install xorg-x11-xauth xterm
openssh 서버가 x11 연결을 전달하도록 구성되어 있는지 확인합니다.
edit file : vim /etc/ssh/sshd_config
X11Forwarding yes
참고 : 해당 줄 앞에 주석 (#)이 있거나 no로 설정되어 있으면 위와 일치하도록 파일을 업데이트하고 ssh 서버 데몬을 다시 시작합니다 (여기에서주의하십시오. 오류가 발생하면 잠글 수 있습니다. 섬기는 사람)
sudo /etc/init.d/sshd restart
이제 X11 요청을 전달하도록 SSH 애플리케이션을 구성합니다.
ssh -Y your_username@your_server.your_domain.com
if [[ $DISPLAY ]]; then
…
fi
확인을위한 PHP 스크립트입니다.
$xsession = `pidof X`;
if (!$xsession) {
echo "There is no active X session, aborting..\n";
exit;
}
Similar command can be used in shell script too. like the pidof command.
The bash script solution:
if ! xset q &>/dev/null; then
echo "No X server at \$DISPLAY [$DISPLAY]" >&2
exit 1
fi
Doesn't work if you login from another console (Ctrl+Alt+F?) or ssh. For me this solution works in my Archlinux:
#!/bin/sh
ps aux|grep -v grep|grep "/usr/lib/Xorg"
EXITSTATUS=$?
if [ $EXITSTATUS -eq 0 ]; then
echo "X server running"
exit 1
fi
You can change /usr/lib/Xorg for only Xorg or the proper command on your system.
ReferenceURL : https://stackoverflow.com/questions/637005/how-to-check-if-x-server-is-running
'Nice programing' 카테고리의 다른 글
데이터 프레임을 그룹화하고 합계 및 개수를 얻습니까? (0) | 2020.12.29 |
---|---|
cygwin에서 mysql에 연결 (0) | 2020.12.29 |
SQLException : 문자열 또는 이진 데이터가 잘립니다. (0) | 2020.12.29 |
MSTest의 글로벌 테스트 초기화 방법 (0) | 2020.12.29 |
JUnit 테스트가 예외를 발생시키는 잘못된 양식? (0) | 2020.12.29 |