Bagaimana cara me-restart GNOME Shell dari baris perintah?

51

Saya ingin menerapkan cara pintas keyboard untuk me-restart gnome-shell setiap kali crash ( beberapa bug saat ini belum diperbaiki). Untuk ini saya perlu baris perintah untuk me-restart shell.

Perintah Alt+ F2dan restarttidak akan berfungsi ketika shell terhenti karena prompt diimplementasikan di shell.

Oleh karena itu, bagaimana cara me-restart gnome-shell dari command line?

Benjamin
sumber
CATATAN: Alt + F2 dan restartakan menghentikan semua program yang sedang berjalan. (Saya masih tidak tahu cara me-restart GUI tanpa menghentikan program.)
Andriy Makukha

Jawaban:

48

Perintah untuk mengganti shell gnome adalah gnome-shell --replace.

Dari halaman manual gnome-shell:

--replace             Replace the running window manager
jokerdino
sumber
2
Terima kasih, saya tidak yakin --replace= "restart".
Benjamin
4
Pada GNOME Shell 3.30.1 di Ubuntu 18.10, solusi ini tidak lagi berfungsi, dan akan menendang pengguna ke layar login, kehilangan semua pekerjaan mereka. Solusi yang benar sekarang adalah commandline: "killall -3 gnome-shell", atau ALT + f2 dan r (jika mungkin).
C.Rogers
1
ALT+f2(tampilkan command prompt) + gnome-shell --replaceakan bekerja dengan baik di 18.04. Semua program yang sedang berjalan tidak akan dihentikan.
lifeisfoo
Saya menambahkan ampersand ke akhir perintah untuk meletakkan proses di latar belakang sehingga saya dapat menutup terminal tanpa membunuh gnome-shell:gnome-shell --replace &
Teddy
PERINGATAN: gnome-shell --replacepada mesin Ubuntu 19.10 saya menyebabkan sebagian besar aplikasi yang berjalan untuk menutup dan gnome-shell untuk memasuki keadaan masalah dengan layar putih dan prompt untuk me-restart komputer.
Sparr
31

Cara termudah adalah dengan Alt+ F2dan jenis rkemudian .

agustibr
sumber
5
Itu benar, tetapi sebenarnya bukan pertanyaannya. Pertanyaannya kemudian adalah: apa yang terjadi ketika Anda melakukan ini. Agar Anda bisa melakukannya sendiri
lihat
4
Pada GNOME Shell 3.30.1 di Ubuntu 18.10, dan commandline: "killall -3 gnome-shell" adalah satu-satunya solusi yang diposting di sini yang berfungsi. Semua yang lain menendang pengguna keluar ke layar masuk, kehilangan semua pekerjaan mereka.
C.Rogers
1
Mencoba ini di debian buster. Mendapatkan kesalahan "Mulai ulang tidak tersedia di jalan".
livinston
27

Anda juga dapat melakukan killall -3 gnome-shell.

Denis
sumber
2
Saya tidak tahu mengapa orang terus merekomendasikan perintah ini. Semua ini dilakukan adalah membunuh gnome-shell. Bagaimana Anda menjawab pertanyaan tentang memulai kembali?
smac89
1
Mungkin karena ini adalah solusi yang baik di mana perintah lain tidak berfungsi. Saya mencoba keduanya, yang dipilih bagus tapi tidak menyelesaikan masalah saya, sementara ini berhasil.
Mitro
2
Pada Ubuntu 18.10, GNOME Shell 3.30.1 - INI ADALAH SOLUSI YANG BENAR. Semua solusi lain memulai kembali sesi dan menendang pengguna ke layar login, kehilangan semua pekerjaan mereka.
C.Rogers
3
SIGQUIT (3) tidak mematikan prosesnya
Jack Wasey
Ini sepertinya bekerja untuk saya. Padahal saya pernah menggunakan gnome-shell --replace &sebelumnya. Itu bekerja tetapi, terus berjalan di terminal. Masalah yang saya alami adalah dengan video Youtube di layar penuh yang entah bagaimana menyebabkan Dash-to-Dock dan panel membeku tertutup. github.com/micheleg/dash-to-dock/issues/…
Natetronn
5

Perintahnya seharusnya gnome-shell --replace.

Christopher Kyle Horton
sumber
3
Pada GNOME Shell 3.30.1 di Ubuntu 18.10, solusi ini tidak lagi berfungsi, dan akan menendang pengguna ke layar login, kehilangan semua pekerjaan mereka. Solusi yang benar sekarang adalah commandline: "killall -3 gnome-shell", atau ALT + f2 dan r (jika mungkin).
C.Rogers
tidak berfungsi untuk sesi jarak jauh, jadi ketika gnome shell telah membeku, ini tidak berfungsi.
Jack Wasey
5

Jika semuanya gnome-shellmenjadi beku ada cara untuk me-restart dari terminal tanpa me-restart seluruh jendela X:

  • Ctrl+ Alt+ F2untuk beralih ke terminal
  • login dengan kredensial Anda (nama pengguna dan kata sandi) dan kemudian jalankan:
  • DISPLAY=:0 gnome-shell -r &
  • logout exitdan
  • Alt+ F1untuk kembali ke antarmuka grafis X Window.
saya tidak
sumber
1

Saya datang dengan fungsi ini untuk keluar pengguna (lihat di bagian bawah)

Diasumsikan

  • Anda memiliki izin sudo
  • kamu punya bash
  • pengguna memiliki 1 sesi X berjalan (meskipun Anda harus dapat mengeluarkan perintah logout yang sama beberapa kali untuk menghilangkan sesi yang tersisa)

Anda dapat memberikan beberapa nama pengguna:

logout john jane mike elisa

Dan Anda bisa memberikannya opsi tambahan:

logout john --force

Jadi, saya memiliki fungsi pembantu berikut:

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

Catatan:

  • Ini adalah instrumen tumpul dan berfungsi hanya dengan menyalin seluruh lingkungan sesi. Ini bisa lebih selektif.
  • Terkadang logout sepertinya memakan waktu cukup lama
  • Dalam kesempatan yang jarang, sesi terus dilaporkan sampai seseorang mengunjungi vt di mana sesi berjalan, tetapi tidak ada yang ada lagi)

KODE

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
}
lihat
sumber
1

Saya mendefinisikan alias: alias gnomeshellrestart='echo "gnome-shell --replace -d" $(w| grep "$USER"| awk "{print \$3}"|grep ":"|head -1)| at now'

Anda mungkin dapat memulai terminal dengan mengeklik kanan dengan mouse di latar belakang dan mengetik di sana (alt-tab didfct juga,), jika tidak, login ke tty dengan misalnya ctrl-alt-F2 dan jalankan dari sana.

MoreIT
sumber