Keluar dari Google Chrome dari terminal

28

Apakah ada cara untuk menyebabkan google-chromeberhenti, dari terminal, selain menggunakan killall google-chrome?
Saya ingin dapat menutupnya dari skrip tanpa membunuhnya.

licik
sumber
2
Apa yang salah dengan membunuh?
Zoredache
1
@Zoredache Menghasilkan perilaku berbeda saat keluar, dan bahwa Chrome menggunakan beberapa proses, salah satunya (kotak pasir) adalah setuid root.
Gilles 'SO- stop being evil'

Jawaban:

12

Mungkin wmctrlbisa membantu. Anda bisa menggunakan -copsi yang menutup jendela dengan anggun:

wmctrl -c chrome

String chromedicocokkan dengan judul jendela. Perhatikan bahwa jendela mungkin tidak menutup jika beberapa pesan muncul (misalnya ketika Anda memiliki banyak tab terbuka).

Baldrick
sumber
1
Opsi ini berfungsi sempurna, tetapi diperlukan instalasi wmctrl.
slybloty
wmctrl tidak dapat menutup baki sistem "Chrome Apps". pkill -o chrometidak.
Ken Sharp
26

Perintah ini keluar dari pohon proses chrome dengan anggun, di semua manajer jendela:

pkill --oldest chrome

atau jika Anda lebih suka:

/usr/bin/pkill --oldest --signal TERM -f chrome    

Detail:

  • dengan anggun berarti: hindari melihat “Google Chrome tidak dimatikan dengan benar. Untuk mengulang ... "lain kali chrome dimulai
  • browser chrome (misalnya versi 39.0.2171.95) menjebak dan menangani dengan anggun SIGTERM
  • memberi sinyal pada satu proses, akar dari pohon proses chrome, karenanya --oldest
  • SIGTERMsama dengan sinyal 15, karenanya --signal TERM, atau biarkan saja karena SIGTERMsinyal default
  • wmctrl bekerja dengan Unity dan beberapa yang lain tetapi tidak bekerja dengan semua manajer jendela
  • wmctrl -c menutup satu jendela pada satu waktu sehingga untuk menutup semua jendela krom Anda akan membutuhkan sesuatu seperti while wmctrl -c 'Google Chrome'; do sleep 0.2; done
Keith Cascio
sumber
1
Saya berasumsi saya menggunakan versi lama pkill karena --oldestbukan merupakan pilihan: menggunakan -okarya.
Ken Sharp
yang -fargumen untuk pkill tidak bekerja untuk saya. Saya memiliki beberapa proses lain yang berjalan sebagai root yang kebetulan memiliki kata chrome di baris perintah mereka, jadi saya hanya mendapatkan izin ditolak. Tanpa -fitu, ia bekerja dengan sempurna.
Brian Minton
Ini masih membuat saya melihat 'tidak ditutup dengan benar'
xtrinch
Di Ubuntu 18.04, bagaimana saya bisa membuat ini dieksekusi segera setelah memicu restart atau shutdown ?.
Jaime Hablutzel
1

Ini bekerja untuk saya:

killall --quiet --signal 15 -- chrome

Perhatikan bahwa saya menggunakan perintah yang agak verbose agar tetap dapat dibaca dalam kode, tentu saja Anda juga bisa mengeluarkan:

killall -q -15 chrome
Fleshgrinder
sumber
1

Hidup Mac OS X, gunakan ini sebagai gantinya

pkill -a -i "Google Chrome"

Apa yang dilakukannya adalah mencari proses Google Chrome, dan membunuh semua proses induknya juga.

Dari manual pkill

    -a          Include process ancestors in the match list.  By default, the
                current pgrep or pkill process and all of its ancestors are
                excluded (unless -v is used).
    -i          Ignore case distinctions in both the process table and the
                supplied pattern.

Sesuai jawaban @ keith-cascio , Anda dapat mencoba untuk mematikan proses tertua. Perhatikan bahwa ini tidak berhasil untuk saya.

pkill -o -i "Google Chrome"
hanxue
sumber
0

mencoba:

kill -3 <pid_of_chrome>

Ini akan mengirimkan sinyal "QUIT" ke chrome, yang, tergantung pada manajer jendela Anda, akan menjadi apa yang biasanya dikirim ketika diminta untuk menutup.

Blackle Mori
sumber
2
Ini bertindak seperti killatau di killallmana Chrome melihatnya sebagai macet, dan meminta untuk memulihkan.
slybloty
1
coba 15 bukannya 3, lalu
Blackle Mori
6
Sebenarnya, SIGQUITbiasanya tidak dikirim ke aplikasi ketika diminta untuk menutup (saya tidak tahu ada WM yang melakukan ini). WM_DELETE_WINDOWadalah standar.
Chris Down
2
@ blacklemon67 kill -15 <pid_of_chrome>melakukan apa yang saya cari. Tetapi, google-chromememiliki beberapa pids dan butuh beberapa mencoba untuk benar-benar mendapatkan yang tepat.
slybloty