コマンドラインからGNOME Shellを再起動する方法は?


51

これがクラッシュするたびにgnome-shellを再起動するためのキーボードショートカットを実装したいと思います(いくつかのバグは現在修正されていません)。そのためには、シェルを再起動するコマンドラインが必要です。

Alt+ F2restartコマンドプロンプトが実装されているので、シェルがクラッシュしたときに動作しませんシェル。

したがって、コマンドラインからgnome-shellを再起動する方法は?


注:Alt + F2 restart。実行中のプログラムをすべて停止します。(プログラムを停止せずにGUIを再起動する方法はまだわかりません。)
Andriy Makukha

回答:


48

gnome-shellを置き換えるコマンドはになりますgnome-shell --replace

のマニュアルページからgnome-shell

--replace             Replace the running window manager

2
ありがとう、--replace「restart」とは言えませんでした。
ベンジャミン

4
Ubuntu 18.10のGNOME Shell 3.30.1の時点では、このソリューションは機能しなくなり、ユーザーをログイン画面に追い込み、すべての作業を失います。正しい解決策は、コマンドライン: "killall -3 gnome-shell"、またはAlt + f2およびr(可能な場合)です。
C.ロジャース

1
ALT+f2(コマンドプロンプトを表示)+ gnome-shell --replaceは18.04でうまく機能します。実行中のプログラムはすべて停止しません。
lifeisfoo

私は、GNOMEシェルを殺すことなく、端末を閉じることができるように、バックグラウンドでプロセスを置くために、コマンドの最後にアンパサンドを追加しますgnome-shell --replace &
テディ

警告:gnome-shell --replaceUbuntu 19.10マシンでは、ほとんどの実行中のアプリケーションが閉じられ、gnome-shellが白い画面とコンピューターの再起動を求めるプロンプトを表示して問題の状態になりました。
スパー

31

最も簡単な方法はにあるAlt+ F2と入力しrた後


5
それは本当ですが、問題ではありません。問題は、これを行うとどうなるかです。自分でできるように
1

4
Ubuntu 18.10のGNOME Shell 3.30.1およびコマンドラインの時点で、「killall -3 gnome-shell」がここで機能する唯一のソリューションです。他のすべてのユーザーは、ユーザーをログイン画面に追い出し、すべての作業を失います。
C.ロジャース

1
これをdebian busterで試しました。「ウェイランドで再起動は利用できません」エラーを取得します。
リビンストン

26

を行うこともできますkillall -3 gnome-shell


2
人々がこのコマンドを推奨し続ける理由はわかりません。これは、gnome-shellを強制終了するだけです。再起動の質問にどのように答えましたか?
smac89

1
おそらく、これは他のコマンドが機能しない良い解決策だからです。私は両方を試しましたが、選択したものは良いですが、これは解決しましたが、私の問題を解決しませんでした。
Mitro

2
Ubuntu 18.10以降、GNOME Shell 3.30.1-これが正しいソリューションです。他のすべてのソリューションはセッションを再開し、ユーザーをログイン画面に追い出し、すべての作業を失います。
C.ロジャース

3
SIGQUIT(3)はプロセスを
強制終了

これは私にとってはうまくいくようでした。私がgnome-shell --replace &以前使用していたのに対して。動作しましたが、ターミナルで実行し続けました。私が抱えていた問題は、フルスクリーンのYoutubeビデオで、どういうわけかDash-to-Dockとパネルがフリーズして閉じることでした。github.com/micheleg/dash-to-dock/issues/...
Natetronn

5

コマンドは単にである必要がありますgnome-shell --replace


3
Ubuntu 18.10のGNOME Shell 3.30.1の時点では、このソリューションは機能しなくなり、ユーザーをログイン画面に追い込み、すべての作業を失います。正しい解決策は、コマンドライン: "killall -3 gnome-shell"、またはAlt + f2およびr(可能な場合)です。
C.ロジャース

リモートセッションでは機能しません。そのため、gnomeシェルがフリーズすると、機能しません。
ジャックワシー

5

全体gnome-shellがフリーズした場合、Xウィンドウ全体を再起動せずにターミナルから再起動する方法があります。

  • Ctrl+ Alt+ F2ターミナルに切り替える
  • 資格情報(ユーザー名とパスワード)でログインして、次を実行します。
  • DISPLAY=:0 gnome-shell -r &
  • ログアウトしexit
  • Alt+ F1グラフィカルインターフェイスX Windowに切り替えます。

1

ユーザーをログアウトするためにこの機能を思いつきました(下部を参照)

想定しています

  • sudo権限があります
  • あなたはバッシュを持っています
  • ユーザーには1つの実行中のXセッションがあります(ただし、同じログアウトコマンドを複数回発行して、残りのセッションを取り除くことができるはずです)

複数のユーザー名を付けることができます:

logout john jane mike elisa

そして、追加のオプションを与えることができます:

logout john --force

だから、私は次のヘルパー関数を持っています:

function forcelogout() {
    logout "$@" --no-prompt --force
}

ノート:

  • これは鈍器であり、セッション環境全体をコピーするだけで機能します。これはより選択的かもしれません。
  • 時々ログアウトに時間がかかるようです
  • まれに、セッションが実行されたvtに誰かがアクセスするまでセッションが報告され続けますが、もう何もありません)

コード

function logout() {
    local USERNAME
    export USERNAMES=( ) 
    while [ -n "$1" ]; do case "$1" in
        -* ) break ;;
        *) USERNAMES+=( "$1" ); shift ;;
    esac; done

    for USERNAME in "${USERNAMES[@]}"; do
        local SESSION_PID=$(pgrep -fu "$USERNAME" gnome-session|head -1)
        if [ -n "$SESSION_PID" ]; then
            (
                sudo -u "$USERNAME" cat "/proc/$SESSION_PID/environ" | xargs -0 -n 1 echo export
                echo "gnome-session-quit --logout $@"
            ) | sudo -u "$USERNAME" sh -;
        fi
    done
}

1

エイリアスを定義しました: alias gnomeshellrestart='echo "gnome-shell --replace -d" $(w| grep "$USER"| awk "{print \$3}"|grep ":"|head -1)| at now'

バックグラウンドでマウスを右クリックしてそこに入力することで端末を起動できる場合があります(alt-tabはdysfctでもあります)。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.