며칠 전 Debian 8 컴퓨터의 X 서버 시작 프로세스가 중단되었습니다. 이 문제의 원인이 무엇인지는 잘 모르겠지만, 적절한 업그레이드나 Nvidia 드라이버 설치를 위한 롤백 시도일 수 있습니다.
/var/log/Xorg.0.log는 재부팅할 때마다 다음 추적을 표시합니다.
[ 60.603] _XSERVTransSocketUNIXCreateListener: ...SocketCreateListener() failed
[ 60.603] _XSERVTransMakeAllCOTSServerListeners: server already running
[ 60.603] (EE)
Fatal server error:
[ 60.603] (EE) Cannot establish any listening sockets - Make sure an X server isn't already running(EE)
[ 60.603] (EE)
Please consult the The X.Org Foundation support
at http://wiki.x.org
for help.
[ 60.603] (EE) Please also check the log file at "/var/log/Xorg.0.log" for additional information.
[ 60.603] (EE)
[ 60.603] (EE) Server terminated with error (1). Closing log file.
서버가 실행되고 있지 않지만 /tmp/.X11-unix/X0이 존재하며 소켓이 아닌 디렉터리입니다. 루트로 로그인하고 실행하면
rmdir /tmp/.X11-unix/X0 ; service kdm restart
그러면 X 서버가 문제 없이 시작됩니다.
무슨 일이 일어나고 있는지, 그리고 사용자 개입 없이 X 서버를 시작할 수 있도록 이 문제를 해결하는 방법에 대해 알고 계시나요?
편집 1
다음 find
명령은 결과를 반환하지 않습니다(출력이 전혀 없음).
find /etc /var /usr -type f -print0 | xargs -0 grep X11-unix | grep mkdir
find / -mount -path /dev -prune -o -path /proc -prune -o -type f -print0 | xargs -0 grep X11-unix | grep mkdir
그래서 -a exit,always -S all -F dir=/tmp/.X11-unix
규칙을 에 추가하여 /etc/audit.rules
다음과 같은 추적 결과를 얻었습니다.
type=SYSCALL msg=audit(1495391670.743:93): arch=c000003e syscall=83 success=yes exit=0 a0=c2082a2420 a1=1ed a2=0 a3=0 items=2 ppid=1 pid=926 auid=4294967295 uid=0 gid=0 euid=0 suid=0 fsuid=0 egid=0 sgid=0 fsgid=0 tty=(none) ses=4294967295 comm="docker" exe="/usr/bin/docker" key=(null)
type=CWD msg=audit(1495391670.743:93): cwd="/"
type=PATH msg=audit(1495391670.743:93): item=0 name="/tmp/.X11-unix/" inode=48365573 dev=fe:02 mode=041777 ouid=0 ogid=0 rdev=00:00 nametype=PARENT
type=PATH msg=audit(1495391670.743:93): item=1 name="/tmp/.X11-unix/X0" inode=48365588 dev=fe:02 mode=040755 ouid=0 ogid=0 rdev=00:00 nametype=CREATE
type=PROCTITLE msg=audit(1495391670.743:93): proctitle=2F7573722F62696E2F646F636B6572002D64002D480066643A2F2F
성공적인 시스템 호출 83은 성공입니다 mkdir
. 그렇지 않나요? 이 문제는 Docker 문제가 되었습니다. 지난 몇 주 동안 나는 -volume /tmp/.X11-unix:/tmp/.X11-unix
사용하기 시작했습니다.도커화X11 애플리케이션. 그러나 경로에 부분을 지정 /tmp/.X11-unix/X0
하지 않았고 컨테이너가 데스크톱이 로드되기 전이 아닌 후에 시작된다는 점을 고려하면 디렉토리를 생성하는 이유를 이해할 수 없습니다 .X0
Docker가 이전에 실행 중인 컨테이너의 상태를 복원하려고 시도할 수 있습니까? 누구든지 이를 방지하는 방법에 대한 조언을 제공할 수 있습니까?