Czy istnieje sposób, aby spowodować google-chromewyjście z terminala oprócz używania killall google-chrome?
Chciałbym móc go zamknąć ze skryptu bez jego zabijania.
Czy istnieje sposób, aby spowodować google-chromewyjście z terminala oprócz używania killall google-chrome?
Chciałbym móc go zamknąć ze skryptu bez jego zabijania.
Odpowiedzi:
Być może wmctrlmoże pomóc. Możesz użyć -copcji, która z wdziękiem zamyka okno:
wmctrl -c chrome
Ciąg chromejest dopasowywany do tytułów okien. Pamiętaj, że okno może się nie zamknąć, jeśli pojawi się wyskakująca wiadomość (np. Gdy masz otwartych wiele kart).
wmctrl.
pkill -o chromerobi to.
To polecenie z wdziękiem wychodzi z drzewa procesów chrome we wszystkich menedżerach okien:
pkill --oldest chrome
lub jeśli wolisz:
/usr/bin/pkill --oldest --signal TERM -f chrome
Detale:
SIGTERM--oldestSIGTERMjest taki sam jak sygnał 15, a więc --signal TERMpo prostu pomiń go, ponieważ SIGTERMjest to sygnał domyślnywmctrl współpracuje z Unity i niektórymi innymi, ale nie działa ze wszystkimi menedżerami okienwmctrl -c zamyka jedno okno na raz, więc aby zamknąć wszystkie chromowane okna, potrzebujesz czegoś takiego while wmctrl -c 'Google Chrome'; do sleep 0.2; done--oldestnie ma takiej opcji: używanie -odziała.
-fargument pkill nie pracuje dla mnie. Mam inne procesy działające jako root, które akurat mają słowo chrome w swoich wierszach poleceń, więc po prostu odmawia mi się pozwolenia. Bez tego -fjednak działa idealnie.
To działa dla mnie:
killall --quiet --signal 15 -- chrome
Zauważ, że używam raczej pełnego polecenia, aby było czytelne w kodzie, oczywiście możesz również wydać:
killall -q -15 chrome
Włącz Mac OS X, zamiast tego użyj tego
pkill -a -i "Google Chrome"
Poszukuje procesu Google Chrome i zabija również wszystkie procesy nadrzędne.
Z podręcznika 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.
Zgodnie @ Keith-Cascio 's odpowiedzi , można spróbować zabić najstarszy proces. Pamiętaj, że to nie działało dla mnie.
pkill -o -i "Google Chrome"
próbować:
kill -3 <pid_of_chrome>
Spowoduje to wysłanie sygnału „ZAKOŃCZ” do chrome, który, w zależności od menedżera okien, będzie zwykle wysyłany, gdy zostaniesz poproszony o zamknięcie.
killlub w killallprzypadku, gdy Chrome widzi to jako awarię i prosi o przywrócenie.
SIGQUITnie jest zwykle wysyłany do aplikacji, gdy jest proszony o zamknięcie (nie znam żadnych WM, które to robią). WM_DELETE_WINDOWjest standardem.
kill -15 <pid_of_chrome>zrobił to, czego szukałem. Ale google-chromema wiele pid i kilka próbowało znaleźć właściwy.