Ubuntu 12.04 LTSを実行しているデバイスで画面がフリーズしました。一般的に、私は単に利用可能なttyにジャンプしました。 Ctrl-Alt-F1 コマンド/etc/init.d/lightdm restart
またはservice lightdm restart
を実行しました。しかし、これは私が開いているすべてを殺します。どうすればこれを回避できますか?
免責事項:ブレンデンのコメントによると、これは古く、Ubuntuの新しいバージョンでは動作しない可能性があります。また、開いているウィンドウを失う可能性があることにも注意してください。
Unityで取得しました(ログアウトしたり、ウィンドウを閉じたりせずに、GNOMEシェルをUnityに置き換えただけです)。
DISPLAY=:0
これにより、プログラムはX-Serverを見つけるためのポートを認識します。export DISPLAY
unity --replace
またはgnome-Shell --replace
(GNOME-ShellをUnityに、UnityをGNOME-Shellに置き換えることもできます)これは、XサーバーまたはGNOMEがフリーズされていない場合にのみ機能し、UnityまたはGNOMEシェルのみが機能します。
仕組み:UIを表示するためのプログラムとX-Server間の通信は、ネットワークソケットを介して機能しています。これは通常、「localhost:0」の短い「:0」にあります。 DISPLAY変数を設定することにより、プログラムはX-Serverと通信する場所を認識できるため、プログラムがtty1で実行されている場合でも、プログラムはtty7のX-Serverに表示されます。
ウィンドウのコンテンツはX-Serverによって管理されますが、ウィンドウの位置と境界は、統合されたウィンドウマネージャーまたはGNOM-Shellによって管理されるため、X-でアプリケーションを再起動せずにウィンドウのみを置き換える方法があります。サーバ。
PS:私はそれが何であるかを理解しているところを説明しているだけなので、いくつかの点で間違っている場合は編集して修正してください。
編集: GNOME-Shellの場合、再起動する別の方法があります。 ttyに変更した後、単にpkill -HUP gnome-Shell
、Unityに同様のものがあるかどうかはわかりません。