Xorgを再起動せずにGNOMEを再起動しますか?

Xorgを再起動せずにGNOMEを再起動しますか?

場合によっては、特定のアプリケーションがクラッシュしてトップバーが消えるなど、Gnomeデスクトップを不安定にすることがあります。 X ctrl+shift+backspace を再起動するとリセットできます。しかし、BarやGnomeを完全に再度有効にする方法はありますか?

答え1

Gnomeを再起動できる必要があります。

 gnome-shell --replace

マニュアルから:

DESCRIPTION
   GNOME Shell provides core user interface functions for the GNOME 3 desktop,
   like switching to windows and launching  applications.  GNOME  Shell  takes
   advantage  of  the  capabilities of modern graphics hardware and introduces
   innovative user interface concepts to provide  a  visually  attractive  and
   easy to use experience.

OPTIONS
   --replace
          Replace the running window manager

答え2

Alt-F2(IIRC)を押してコマンドを入力できるウィンドウを開くことができます。一般的なコマンドに加えて、GNOMEシェルはデスクトップ環境の動作を制御するいくつかのカスタムコマンドもサポートしています。この場合、restartコンピュータではなくシェルを再起動する必要があります。

競合が多すぎて正常に動作しない場合は、次を使用してください。テドンの答え

答え3

簡単に言えば、GUIでこれを実行できない場合は、同じユーザー(テキストコンソール、SSHなど)でログインし、次のように入力します。

eval "$(while read -d $'\0' line; do printf 'export %q\n' "$line"; done </proc/$(pgrep -fu$USER gnome-session-binary)/environ)"
gnome-shell --replace >.xsession-errors 2>&1 &

私はしばしばテキストコンソールを介してこれを行います。CTRL++を使用してALT他のコンソールに切り替えることができます。FnN通常はログイン画面から始まり、最初のセッションであるフリーコンソールF3番号ですF1F2

明らかに適用されませんウェイランドgnome-shellは再起動をサポートしていないためです。


詳細な答え:

秘密は必要な環境を複製することです。GNOMEシェル- 正確に何が必要かは確認できませんでしたが、少なくとも待たなければなりませんDISPLAYXAUTHORITYGNOMEシェル接続できますXサーバー、それからおそらく追加GNOMEシェルそしてその拡張。

プロセスツリーは次のようにする必要があります。

      |            |-gdm-session-wor(6444)-+-gdm-x-session(6464)-+-Xorg(6466)-+-{InputThread}(6472)
      |            |                       |                     |            `-{radeon_cs:0}(6467)
      |            |                       |                     |-gnome-session-b(6475)-+-evolution-alarm(6712)-+-{dconf worker}(6789)
     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
      |            |                       |                     `-{gmain}(6465)
      |            |                       |-{gdbus}(6446)
      |            |                       `-{gmain}(6445)

この例ではGNOMEセッションバイナリ(pid 6475)はすべてのgnomeセッションプロセスの親プロセスなので、それを使用して環境を取得します。直接使用すると、gnome-shellgnome-shell自体が子プロセスに対してより多くの変数を設定することがわかります。

私はpgrep戻るために使用しますPIDこのプロセスは現在のユーザーに対してのみ機能します(複数のユーザーがログインしていても常に1つのPIDのみが必要です。2回正常にログインすると深刻な問題があります)。

次に(nullで区切られた環境変数のリスト)から作業ファイルを読み、environすべての行の前に。/proc/<PID>/exporteval

これで、gnome-shell --replaceGUIセッションにあるかのように実行できます。このシェルを開いたままにするには、リダイレクトが必要な場合があります。標準出力そして標準エラーエラー率どこかに送信することができますが、私はそれを準備したいと/dev/null思います(.xsession-errorsすべてのGUI出力を送信するために使用されるレガシーファイルXです。私は最新のシステムを信じています)。システムまたは丸太すべての出力をキャプチャして記録します。)

答え4

gnomeをrootとして再起動できます。

services gdm restart

関連情報