Apakah ada cara untuk menyebabkan google-chrome
berhenti, dari terminal, selain menggunakan killall google-chrome
?
Saya ingin dapat menutupnya dari skrip tanpa membunuhnya.
Apakah ada cara untuk menyebabkan google-chrome
berhenti, dari terminal, selain menggunakan killall google-chrome
?
Saya ingin dapat menutupnya dari skrip tanpa membunuhnya.
Jawaban:
Mungkin wmctrl
bisa membantu. Anda bisa menggunakan -c
opsi yang menutup jendela dengan anggun:
wmctrl -c chrome
String chrome
dicocokkan dengan judul jendela. Perhatikan bahwa jendela mungkin tidak menutup jika beberapa pesan muncul (misalnya ketika Anda memiliki banyak tab terbuka).
wmctrl
.
pkill -o chrome
tidak.
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:
SIGTERM
--oldest
SIGTERM
sama dengan sinyal 15
, karenanya --signal TERM
, atau biarkan saja karena SIGTERM
sinyal defaultwmctrl
bekerja dengan Unity dan beberapa yang lain tetapi tidak bekerja dengan semua manajer jendelawmctrl -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
--oldest
bukan merupakan pilihan: menggunakan -o
karya.
-f
argumen 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 -f
itu, ia bekerja dengan sempurna.
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
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"
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.
kill
atau di killall
mana Chrome melihatnya sebagai macet, dan meminta untuk memulihkan.
SIGQUIT
biasanya tidak dikirim ke aplikasi ketika diminta untuk menutup (saya tidak tahu ada WM yang melakukan ini). WM_DELETE_WINDOW
adalah standar.
kill -15 <pid_of_chrome>
melakukan apa yang saya cari. Tetapi, google-chrome
memiliki beberapa pids dan butuh beberapa mencoba untuk benar-benar mendapatkan yang tepat.