応答しない/フリーズになった後、Gnome-shellを再起動する方法は?


123

時々、私のgnome-shellがフリーズします。バックグラウンドプロセスが動作している(音楽を再生している)のを見る(聞く)ことはできますが、gnomeでは何もできません。ありませんAlt+ F2+ R

Ctrl+ Alt+ を使用してコンソールに切り替えF1、同じユーザーとしてログインして実行します:

gnome-shell --replace

Ctrl+ を返しますF7が、その後、奇妙な動作をします。たとえば、ネットワーク接続を編集することはできません。私もログアウトできません。gnome-shellを再起動する適切な方法は何ですか?


gnome-shellは、で検索機能を使用しているときにフリーズしgnome-shell overviewますか?
v2r 14

1
いいえ、通常はドッキング解除後、ログイン後(大部分)フリーズします。
jk_

2
これまでのところ、実用的な解決策は見つかりませんでした。最後に、この回避策になります。
jk_ 14

あなたの中から任意のシェル拡張を使用する場合:extensions.gnome.orgそれらのすべてを無効にして再起動し、そのうちの一つは、トラブルの原因となったかどうかを確認します。私はgnome-shellの古いバージョンを使用していますが、その正確な原因による多くの問題がありました!(たぶんそれはそれと同じくらい簡単ですか?!)
v2r 14

1
私はそれらのすべてを無効にしようとしましたが、まだ問題があります:(
jk_

回答:


173

もっと簡単な方法は、単に押しているAlt+をF2入力し、rそれからEnter。これは、シェルが使用可能である限り機能します。

シェルのみを終了SIGQUITするgnome-shellプロセスに送信することもできます。

killall -3 gnome-shell

他の方法では、より破壊的な手段を使用して、すべてのアプリケーションを閉じますが、これはすべきではありません。


3
SIGHUPただし、ヒントの+1 は、正しいコマンドではないkillall -1 gnome-shellでしょうか?少なくともによればman 7 signal、の値SIGHUPは1です。値3はに対応しSIGQUITます。値1をGnomeシェルに送信しましたが、期待どおりに正常に再起動されました。
-Chriki

@Chrikiええ、それはシグキットでした。ほとんどのシグナルを介してgnome-shellプロセスが終了します。
Braiam

これをFedora 25で試したkillall -3 gnome-shell結果、すべてのアプリケーションが強制終了されました。
-comfreak

6
Alt+F2andとまったく同じ効果を持つ端末コマンドも使用できるといいのですr。つまり、画面全体を空白にすることなく
...-サディ

私は、ubuntu vmでgnomeが頻繁にクラッシュする問題に遭遇しました。発生するたびにVMを再起動する必要がありました。sshでこのコマンドを使用できるようになったことで、この問題は解決されました。
ネイサンF.

32
  • 自分自身を再起動するようにgnome-shellに「きちんと」尋ねたい場合は、次のコマンドでdbusを介して内部再起動機能を呼び出すことができます(DBUS_SESSION_BUS_ADDRESSenv varが正しい値に設定され、同じユーザーとして実行されていると仮定します):

    dbus-send --type=method_call --print-reply --dest=org.gnome.Shell /org/gnome/Shell org.gnome.Shell.Eval string:'global.reexec_self()'
    
  • 新しいインスタンスを実行したい場合は、gnome-shell --replaceうまくいくはずです。コンソールではDISPLAYDBUS*などの必要な環境変数を定義する必要があります。参照する/proc/$gnome_shell_pid/environ

  • 既存のものを再起動する場合は、それkillall -HUP gnome-shellを実行します。ただし、あまりにも頻繁に行うと、gnome-shellはすべての拡張機能を無効にするか、強制的にログオフするか、ユーザーフレンドリーでない方法で動作する可能性があります。

私は、GNOMEシェルプロセス環境からDBUS_SESSION_BUS_ADDRESSを設定し、シェル関数を作成した(ので、次のことができますlogout otheruser1 otheruser2askubuntu.com/a/874504/17941
sehe

3
Error org.freedesktop.DBus.Error.ServiceUnknown: The name org.gnome.Shell was not provided by any .service filessudoをFailed to open connection to "session" message bus: Unable to autolaunch a dbus-daemon without a $DISPLAY for X11使用せずに、sudoを使用してエラーを取得しました。
Seanny123

7

別の回避策を次に示します。

  1. CTRL+ ALT+を押して、ローカル端末にログインしF1ます。
  2. コマンドを実行します:

    sudo kill -HUP $(pidof gnome-shell)
    
  3. CTRL+ ALT+を押して、グラフィカルインターフェイスに戻りますF7

PS:gdm3の代わりにlightdmを使用しています。


1
シンプルで、魅力のように動作します!(少なくとも私にとっては)
カタイ

6

必要なubuntu gnomeをインストールしている場合は、gnomeディスプレイマネージャーを使用している可能性があります。その場合、Ctrl + Alt + F4などの別のTTYに変更してから、

sudo service gdm restart

最近、このような状況についての記事も書きました。

Linuxデスクトップがハングします!

幸運!


6
注意してください、私は同じTTYでそれをしました、そして、これは私の現在のセッションを殺します
ルソー

これは現在のセッションを完全に混乱させました。点滅し始めてからニルヴァーナに行きました。リブートしなければなりませんでした。
ニックオライ

5

に満足していないためgnome-shell --replace、ディスプレイマネージャ自体を再起動してみてください。

sudo service lightdm restart

それはあなたが実行している他のプロセスを殺すと思います。http://worldofgnome.org/how-to-restart-gnome-shell-when-freezes-if-ever/も参照してください

あなたが何かに真剣にしている場合は、毎回フリーズに述べたようにSysRqを有効にすることhttps://www.kernel.org/doc/Documentation/admin-guide/sysrq.rst、次に与える<alt><sysrq/print_screen_key><k>ものは何でもそのそこに殺すために画面。


3
lighdmの再起動は機能しますが、すべてを最初から開き直さなければならないので、回避したいです。特に、それがGnomeシェルの問題であり、再起動してもほとんど問題がないことがわかっている場合は。
jk_ 14

私はgnomeシェルだけを再評価する他の方法を知りません。DISPLAY=:7 gnome-shell --replaceうまくいくか試してみましたか?
ジェイオーラビンド14

1
いいえ、w表示が:0以外の場合、表示は使用しません。間違ったディスプレイを使用すると、エラーが発生します。
jk_ 14

申し訳ありませんが、選択肢がありません。おそらくgnomeユーザー/開発者のメーリングリストで質問する必要があります。あなたが異常を持っている理由、alt-f2-rまたはgnome-shell --replaceそれがいつgnomeの推奨される方法であるかをまず理解してください。
ジェイオーラビンド14

私もこのリンクをたどってさらにENV変数を設定しましたが、別の端末からgnome-shellを再起動するときはまだネットワーク接続を編集できません。最後に、私はで終わるこのトリック
jk_

2

私は時々あなたが説明したのと同じ問題を抱えており、私の解決策は次のとおりです。

Ctrl+ Alt+ F1、同じユーザーとしてログインして実行します:

sudo pkill -9 ^gnome-shell

そしてCtrl+ Alt+で戻るF7

これが適切な方法である場合、私は知りません。私にとっては、それは毎回動作します。


3
これはgnome-shellのすべてのユーザーインスタンスを強制終了しますが、これはマルチユーザーシナリオでは実行したくない場合があります。通常、自分で殺すだけです(pkill -HUP gnome-shell)
スティーブマッコーリー14

3
kill -9は少し破壊的だと思います:robertwe.github.io/2015/03/19/why-you-shoudnt-use-kill--9
ロバート

素晴らしいですね...!あなたは私の一日を救います。感謝。
ノマン

2

Xを再起動します

  • まず、次のコマンドを使用して、Ubuntuが使用しているディスプレイマネージャーを見つけます。

    cat /etc/X11/default-display-manager
    

    私の場合は /usr/sbin/gdm3

    内部Xまたは外部Xから

  • 方法1から4では、wコマンドを使用して、使用しているディスプレイを見つけます。

    w
    

    答えは、たとえばtty3、(私の(ack's)「ディスプレイに戻る」キーはCtrl + Alt + F3です)

方法

  1. Ctrl + Alt + F1で終了し、Ctrl + Alt + F3で終了します
  2. sudo /etc/init.d/gdm3 restart
  3. systemctl restart gdm.service
  4. sudo service gdm3 restart
  5. dbus-send --type=method_call --print-reply --dest=org.gnome.Shell /org/gnome/Shell org.gnome.Shell.Eval string:'global.reexec_self()'
  6. 簡単な方法は、Alt + F2を押すだけで、rEnterキーを押します。これは、シェルが使用不可能でない限り機能します。

方法5は、korcの答えから逐語的に持ち上げられ、6はBraiamの答えから持ち上げられます。盗作はここの規則に反していませんが、それは間違いなくクールではありません。本当に必要なのは、引用することで作品が自分のものではないことを示し、ソースポストへのリンクと著者のプロフィールページへのリンクを含めることで帰属を示すことです。詳細については、次のブログ投稿を参照してください:Attribution Required
wjandrea

1
  1. ターミナルウィンドウに切り替えるには、Ctrl + Alt + F2を押します。時々、これは不可能です。

  2. Alt + SysRq + Rを押してキーボードを取得します。

  3. 失敗する前にCtrl + Alt + F2を押す場合は、もう一度試してください。

  4. Alt + SysRq + Eを押して、すべてのプロセスを終了します。

  5. Alt + SysRq + Iを押して、すべてのプロセスを強制終了します。

  6. Alt + SysRq + Sを押してディスクを同期します。

  7. [OK]または[完了]メッセージを待ちます。メッセージが表示されない場合は、HDDライトを見て、同期が違いを生むかどうかを確認してください。

  8. Alt + SysRq + Uを押して、すべてのディスクドライブをアンマウントします。

  9. [OK]または[完了]メッセージを待ちます。15〜30秒以内にメッセージが表示されない場合は、ディスクがアンマウントされている(またはアンマウントできない)と仮定して続行します。

  10. Alt + SysRq + Bを押して再起動します。


0

kill -15 gnome-shell私のために動作しませんが、kill -9動作します。これは、kill -9gnome-shellが自動的に再起動するようにトリガーするsegfaultをトリガーするが、そうしないためだと思いますkill -15


2
kill -9セグメンテーション違反を引き起こしません。SIGKILLを送信します。SIGKILLは、キャッチできないシグナルであり、アクションはただちに終了することです。アプリケーションがSIGTERMに応答しない場合にのみ使用する必要があります
。SIGTERM

pkill -11 gnome-shellそれは文字通りシグナル11が行うことなので、セグメンテーション違反をトリガーします。ところで、killプロセスID、必要としないプロセス名を。もしかしてpkillkillall
TSJNachos117
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.