Bagaimana cara me-restart Gnome-shell, setelah menjadi tidak responsif / macet?

123

Terkadang gnome-shell saya membeku. Saya dapat melihat (mendengar) proses latar belakang bekerja (memutar musik), tetapi saya tidak dapat melakukan apa pun di gnome. Tidak Alt+ F2+ R.

Saya bisa beralih ke konsol menggunakan: Ctrl+ Alt+ F1, login sebagai pengguna yang sama dan jalankan:

gnome-shell --replace

dan kembali Ctrl+ F7, tapi kemudian, saya mendapatkan perilaku yang aneh. Misalnya saya tidak dapat mengedit koneksi jaringan. Saya tidak bisa keluar juga. Apa cara yang tepat untuk memulai ulang gnome-shell?

jk_
sumber
Apakah gnome-shell membeku saat menggunakan fungsi pencarian di gnome-shell overview, atau pada kesempatan tertentu, jika Anda tahu?
v2r
1
Tidak, macet setelah login (kebanyakan), biasanya setelah undocking.
jk_
2
Sejauh ini, saya tidak menemukan solusi yang berfungsi. Pada akhirnya, saya berakhir dengan solusi ini .
jk_
Jika Anda menggunakan ekstensi shell dari: extensions.gnome.org nonaktifkan semuanya dan reboot, untuk melihat apakah salah satunya menyebabkan masalah. Saya menggunakan versi gnome-shell yang lebih lama dan memiliki banyak masalah karena penyebab pastinya! (Mungkin sesederhana itu ?!)
v2r
1
Saya mencoba untuk menonaktifkan mereka semua, masih memiliki masalah :(
jk_

Jawaban:

173

Cara mudah hanya menekan Alt+ F2, ketik rkemudian Enter. Ini akan bekerja begitu lama shell dapat digunakan.

Anda juga dapat mengirim SIGQUITke gnome-shellproses yang hanya akan menghentikan shell:

killall -3 gnome-shell

Metode lain menggunakan cara yang lebih merusak, yang menutup semua aplikasi, ini seharusnya tidak.

Braiam
sumber
3
Namun +1 untuk SIGHUPtip, bukankah perintah yang benar itu killall -1 gnome-shell? Setidaknya menurut man 7 signal, nilai untuk SIGHUPadalah 1. Nilai 3 sesuai dengan SIGQUIT. Saya telah mengirim nilai 1 ke Gnome Shell dan bersih dimulai kembali seperti yang diharapkan.
Chriki
@ Chriki ya, itu sigquit, melalui sebagian besar sinyal akan membuat proses gnome-shell berakhir.
Braiam
Saya mencoba ini pada Fedora 25 dan killall -3 gnome-shellmengakibatkan mematikan semua aplikasi untuk saya.
comfreak
6
Saya berharap kita juga bisa menggunakan perintah terminal yang memiliki efek yang sama persis dengan Alt+F2dan r, yaitu tanpa mengosongkan seluruh layar ...
Sadi
Saya mengalami masalah gnome menabrak banyak di vm ubuntu saya, saya harus me-restart VM setiap kali itu terjadi. Mampu ssh in dan menggunakan perintah ini memecahkan masalah itu, terima kasih satu juta.
Nathan F.
32
  • Jika Anda ingin bertanya "dengan baik" ke gnome-shell untuk memulai ulang sendiri, maka Anda dapat memanggil fungsi restart internal di atas dbus dengan perintah berikut (dengan asumsi Anda telah DBUS_SESSION_BUS_ADDRESSmenyetel env var ke nilai yang benar dan dijalankan sebagai pengguna yang sama):

    dbus-send --type=method_call --print-reply --dest=org.gnome.Shell /org/gnome/Shell org.gnome.Shell.Eval string:'global.reexec_self()'
    
  • Jika Anda ingin menjalankan instance baru, gnome-shell --replacesebaiknya lakukan dengan baik. Pada konsol Anda perlu mendefinisikan variabel lingkungan yang diperlukan seperti DISPLAY, DBUS*dan sebagainya. Mengacu pada/proc/$gnome_shell_pid/environ

  • Jika Anda ingin me-restart yang sudah ada, maka killall -HUP gnome-shellakan melakukannya. Jika Anda melakukannya terlalu sering, gnome-shell mungkin menonaktifkan semua ekstensi, dengan paksa keluar Anda atau berperilaku tidak ramah terhadap pengguna.
korc
sumber
Saya membuat fungsi shell yang mengatur DBUS_SESSION_BUS_ADDRESS dari lingkungan proses gnome-shell (jadi Anda dapat logout otheruser1 otheruser2) askubuntu.com/a/874504/17941
sehe
3
Mendapat kesalahan Error org.freedesktop.DBus.Error.ServiceUnknown: The name org.gnome.Shell was not provided by any .service filestanpa sudo dan Failed to open connection to "session" message bus: Unable to autolaunch a dbus-daemon without a $DISPLAY for X11dengan sudo.
Seanny123
7

Berikut adalah solusi yang berbeda:

  1. Log in terminal lokal dengan menekan CTRL+ ALT+ F1.
  2. Jalankan perintah:

    sudo kill -HUP $(pidof gnome-shell)
    
  3. Kembali ke antarmuka grafis dengan menekan CTRL+ ALT+ F7.

PS: Saya menggunakan lightdm bukan gdm3.

masina
sumber
1
Sederhana, dan bekerja seperti pesona! (Setidaknya untuk saya)
Katai
6

Jika Anda telah menginstal ubuntu gnome, yang seharusnya Anda miliki, Anda mungkin menggunakan pengelola tampilan gnome. Dalam hal ini Anda harus mengubah ke TTY lain, seperti Ctrl + Alt + F4 lalu

sudo service gdm restart

Saya juga menulis artikel tentang situasi seperti baru-baru ini:

Bantuan, Desktop Linux saya hang!

Keberuntungan terbaik!

Gerhard Stein
sumber
6
hati-hati , saya melakukannya pada TTY yang sama dan ini membunuh sesi saya saat ini ..
RousseauAlexandre
ini benar-benar mengacaukan sesi saat ini: mulai berkedip dan kemudian pergi ke nirwana .. harus reboot.
Nik O'Lai
5

Karena Anda tidak puas gnome-shell --replace, Anda mungkin ingin mencoba me-restart manajer tampilan itu sendiri.

sudo service lightdm restart

Saya pikir itu akan membunuh proses lain yang sedang Anda jalankan. Juga lihat http://worldofgnome.org/how-to-restart-gnome-shell-when-freezes-if-ever/

Jika Anda serius terhadap sesuatu yang membuat Anda membeku setiap saat, aktifkan SysRq seperti yang disebutkan di https://www.kernel.org/doc/Documentation/admin-guide/sysrq.rst , dan kemudian berikan <alt><sysrq/print_screen_key><k>untuk membunuh apa pun yang ada di sana di layar.

Jay Aurabind
sumber
3
Restart lighdm berfungsi, tetapi saya ingin menghindarinya, karena saya harus membuka kembali semuanya dari awal. Terutama jika saya tahu itu masalah Gnome-shell dan memulai ulang itu hampir berhasil.
jk_
Saya tidak mengetahui metode lain untuk mengembalikan hanya shell gnome. Apakah Anda mencoba apakah DISPLAY=:7 gnome-shell --replaceberhasil?
Jay Aurabind
1
Tidak, tidak, saya menggunakan tampilan, ketika wtampilan menunjukkan berbeda dari : 0 . Jika saya menggunakan tampilan yang salah saya mendapatkan kesalahan.
jk_
Maaf, saya kehabisan pilihan. Anda mungkin harus bertanya di milis pengguna / pengembang gnome. Pertama-tama cari tahu mengapa Anda memiliki kelainan dengan alt-f2-ratau gnome-shell --replaceketika itu adalah cara yang direkomendasikan gnome.
Jay Aurabind
Saya juga. Saya bahkan mengikuti tautan ini untuk mengatur lebih banyak variabel ENV, tetapi saya masih tidak dapat mengedit koneksi jaringan ketika memulai ulang gnome-shell dari terminal yang berbeda. Pada akhirnya, saya berakhir dengan trik ini
jk_
2

Saya terkadang memiliki masalah yang sama seperti yang Anda gambarkan, dan solusi saya adalah:

Ctrl+ Alt+ F1, login sebagai pengguna yang sama dan jalankan:

sudo pkill -9 ^gnome-shell

Dan kembali dengan Ctrl+ Alt+F7

Jika ini cara yang tepat, saya tidak tahu. Bagi saya itu berfungsi setiap saat.

Landas
sumber
3
Ini akan membunuh semua pengguna contoh gnome-shell yang mungkin bukan sesuatu yang ingin Anda lakukan dalam skenario multi-pengguna. Biasanya Anda hanya perlu membunuh Anda sendiri (pkill -HUP gnome-shell)
Steeve McCauley
3
kill -9 sedikit merusak, saya pikir: robertwe.github.io/2015/03/19/why-you-shoudnt-use-kill--9
Robert
hebat itu bekerja untuk saya ...! kamu menghemat hariku. dihargai.
NomanDisimpan
2

Mulai ulang X

  • Pertama temukan manajer tampilan mana yang digunakan Ubuntu Anda dengan perintah berikut:

    cat /etc/X11/default-display-manager
    

    dalam kasus saya ini /usr/sbin/gdm3

    Dari Inside X atau LUAR X

  • Untuk Metode 1 hingga 4, cari tahu tampilan mana yang Anda gunakan dengan menggunakan wperintah.

    w
    

    jawabannya mungkin misalnya tty3, (untuk itu kunci "kembali ke tampilan" (ack) saya adalah Ctrl + Alt + F3

Metode

  1. Ctrl + Alt + F1 untuk keluar, dan Ctrl + Alt + F3 untuk mengembalikannya
  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. Cara mudah hanya dengan menekan Alt + F2, dan ketik rlalu tekan Enter. Ini akan bekerja begitu lama shell tidak dapat digunakan.
markackerman8-gmail.com
sumber
Metode 5 diangkat secara verbal dari jawaban korc dan 6 dari jawaban Braiam . Plagiarisme tidak melanggar aturan di sini, tapi jelas tidak keren. Yang perlu Anda lakukan hanyalah menunjukkan bahwa karya itu bukan milik Anda dengan mengutipnya, dan memberikan atribusi dengan menyertakan tautan ke pos sumber dan tautan ke halaman profil penulis. Untuk detail lebih lanjut, lihat posting blog ini: Diperlukan Atribusi
wjandrea
1
  1. Tekan Ctrl + Alt + F2 untuk beralih ke jendela terminal. Terkadang, ini tidak mungkin.

  2. Tekan Alt + SysRq + R untuk mendapatkan keyboard.

  3. Jika menekan Ctrl + Alt + F2 sebelum gagal, coba lagi sekarang.

  4. Tekan Alt + SysRq + E untuk mengakhiri semua proses.

  5. Tekan Alt + SysRq + I untuk mematikan semua proses.

  6. Tekan Alt + SysRq + S untuk menyinkronkan disk Anda.

  7. Tunggu pesan OK atau Done. Jika Anda tidak melihat pesan, lihat lampu HDD Anda untuk melihat apakah Sinkronisasi membuat perbedaan.

  8. Tekan Alt + SysRq + U untuk melepas semua drive disk.

  9. Tunggu pesan OK atau Done. Jika Anda tidak melihat pesan dalam 15-30 detik, anggap disk tidak di-mount (atau tidak di-mount) dan lanjutkan.

  10. Tekan Alt + SysRq + B untuk mem-boot ulang.

Dylan Tertentu
sumber
0

kill -15 gnome-shelltidak bekerja untuk saya tetapi kill -9tidak. Saya pikir itu karena kill -9memicu segfault yang memicu gnome-shell untuk me-restart sendiri, sementara kill -15tidak.

Walter
sumber
2
kill -9tidak memicu segfault. Ini mengirimkan SIGKILL, sinyal yang tidak dapat ditandingi yang mana satu-satunya tindakan adalah untuk segera berhenti. Seharusnya hanya digunakan ketika aplikasi tidak menanggapi SIGTERM, yaitu 15.
muru
pkill -11 gnome-shellakan memicu segfault, karena itulah arti sebenarnya sinyal 11. BTW, killmembutuhkan ID proses, BUKAN nama proses. Apakah maksud Anda pkillatau killall?
TSJNachos117