数日前、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が存在し、ソケットではなくディレクトリです。 rootとしてログインして実行すると
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が以前に実行していたコンテナの状態を復元しようとすることはできますか?誰もこれを防ぐ方法についてアドバイスを提供できますか?