起動中のUbuntu 16.04LTSのGUI上アプリで未保存ファイルがあるのにUSBが全部死んだ場合の対処法

#そんなことが可能なのか？
出来る。ネットワーク経由でssh接続できてsudo権限あるUbuntuならね。
今、物理モニタに表示中セッションのdisplay:0にディスプレイサーバー(lightdm)を起動させたままVNCで接続できれば！

#ことの始まり
起動中、突然にUSB接続のマウスとキーボードが死ぬ。
そんなバカなことが！画面が目の前にあるのにコントローラが止まった。

急いで別マシンからSSHで繋いで確認する。
syslogにはこんなログが書き込まれている。死んでいるらしい。

```bash:cmd
$ tail -n 1000 /var/log/syslog
~~
Jan 20 09:59:28 myubuntu systemd[1]: Starting Daily apt download activities...
Jan 20 09:59:29 myubuntu systemd[1]: Started Daily apt download activities.
Jan 20 10:16:34 myubuntu kernel: [591432.277331] usb 5-4: USB disconnect, device number 7
Jan 20 10:16:34 myubuntu kernel: [591432.277336] usb 5-4.3: USB disconnect, device number 8
Jan 20 10:16:39 myubuntu kernel: [591437.287598] xhci_hcd 0000:28:00.3: xHCI host not responding to stop endpoint command.
Jan 20 10:16:39 myubuntu kernel: [591437.287606] xhci_hcd 0000:28:00.3: Assuming host is dying, halting host.
Jan 20 10:16:39 myubuntu kernel: [591437.307843] xhci_hcd 0000:28:00.3: HC died; cleaning up
Jan 20 10:16:39 myubuntu acpid: input device has been disconnected, fd 21
Jan 20 10:16:39 myubuntu acpid: input device has been disconnected, fd 22
Jan 20 10:16:39 myubuntu kernel: [591437.480291] usb 5-1: USB disconnect, device number 2
Jan 20 10:16:39 myubuntu kernel: [591437.480298] usb 5-1.3: USB disconnect, device number 4
Jan 20 10:16:39 myubuntu acpid: input device has been disconnected, fd 13
Jan 20 10:16:39 myubuntu acpid: input device has been disconnected, fd 14
Jan 20 10:16:39 myubuntu kernel: [591437.655922] usb 5-1.4: USB disconnect, device number 6
Jan 20 10:16:39 myubuntu kernel: [591437.764101] usb 5-3: USB disconnect, device number 3

~~
```

エラーメッセージはぐぐってもバグとしか出てこない。
確認するが、確かにlsusbコマンドを流しても繋がてないし、パージされた番号を再度アタッチしてもダメ。

```bash:cmd
$ lsusb -t
/:  Bus 06.Port 1: Dev 1, Class=root_hub, Driver=xhci_hcd/4p, 5000M
/:  Bus 05.Port 1: Dev 1, Class=root_hub, Driver=xhci_hcd/4p, 480M
/:  Bus 04.Port 1: Dev 1, Class=root_hub, Driver=xhci_hcd/2p, 5000M
    |__ Port 2: Dev 2, If 0, Class=Mass Storage, Driver=usb-storage, 5000M
/:  Bus 03.Port 1: Dev 1, Class=root_hub, Driver=xhci_hcd/2p, 480M
/:  Bus 02.Port 1: Dev 1, Class=root_hub, Driver=xhci_hcd/4p, 5000M
/:  Bus 01.Port 1: Dev 1, Class=root_hub, Driver=xhci_hcd/10p, 480M
# echo -n "5-4" > /sys/bus/usb/drivers/usb/bind
-su: echo: 書き込みエラー: そのようなデバイスはありません
```

そのまま再起動したら良いのはわかっていたがデータを失うのは辛いので頑張る。

# 実際やったこと
```bash:cmd
$ vino-preferences
→ サーバ起動しない。ローカルのGUIでやれよ！という原因のエラーで挫折

$ sudo apt-get install x11vnc xinetd
$ sudo x11vnc -storepasswd /etc/vncpasswd
$ x11vnc -localhost -rfbauth $HOME/.vnc/passwd -display :0
→　サーバ起動しない。失敗、次のコマンドを試す。※この段階でvncのパスワードを設定した。

$ sudo apt-get install tightvncserver
$ tightvncserver -display :0 -passwordfile ~/.vnc/passwd﻿
→　Couldn't start Xtightvnc; trying default font path.
→　サーバ起動しない。ダメ、次！

$ sudo apt-get purge tightvncserver
$ sudo apt-get install libtasn1-3-bin libtasn1-bin
$ sudo apt install vnc4server
$ x0vncserver -display :0 -passwordfile ~/.vnc/passwd
→　VNCサーバ起動！繋がった！
```

そう、x0vncserverを使えば出来る。5900番ポート開いているので繋がる。
サービスではないので、x0vncserverの実行中ssh接続を切るとx0vncserverは落ちる。まあ緊急用だし、勝手に常時起動より安心だよね。

性能的には4Kクラスの画面２枚のマシンにもノートPCから繋いで保存ボタンを押せた！

以上！

### 参考：
[linuxでのusbの抜き差しをコマンドで実施する|えむけいプラン(公式)](http://mkplan.com/memo/2016/03/07/402/)
[起動済みのXをTigerVNCで共有 - matoken's meme](http://matoken.org/blog/2016/03/04/share-already-started-x-even-tigervnc/)
[mieki256's diary - Ubuntu 16.04上で x0vncserver の動作確認をしてみたり](http://blawat2015.no-ip.com/~mieki256/diary/201709023.html)