web-dev-qa-db-ja.com

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

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

の Alt+F2 およびrestartコマンドは、プロンプトがシェルに実装されているためシェルがクラッシュしたときに機能しません。

したがって、コマンドラインからgnome-Shellを再起動するにはどうすればよいですか?

45
Benjamin

Gnome-Shellを置き換えるコマンドはgnome-Shell --replaceです。

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

--replace             Replace the running window manager
43
jokerdino

最も簡単な方法は Alt+F2 rと入力してから 

31
agustibr

killall -3 gnome-Shellを実行することもできます。

20
Denis

コマンドはgnome-Shell --replaceである必要があります。

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

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

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

想定しています

  • 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
sehe

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

バックグラウンドでマウスを右クリックしてそこに入力することで端末を起動できる場合があります(alt-tabはdysfctでもあります)。そうでない場合は、たとえばでttyにログインします。 ctrl-alt-F2から実行します。

1
MoreIT