Czy istnieje sposób, aby spowodować google-chrome
wyjś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-chrome
wyjś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 wmctrl
może pomóc. Możesz użyć -c
opcji, która z wdziękiem zamyka okno:
wmctrl -c chrome
Ciąg chrome
jest 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 chrome
robi 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
--oldest
SIGTERM
jest taki sam jak sygnał 15
, a więc --signal TERM
po prostu pomiń go, ponieważ SIGTERM
jest 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
--oldest
nie ma takiej opcji: używanie -o
działa.
-f
argument 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 -f
jednak 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.
kill
lub w killall
przypadku, gdy Chrome widzi to jako awarię i prosi o przywrócenie.
SIGQUIT
nie jest zwykle wysyłany do aplikacji, gdy jest proszony o zamknięcie (nie znam żadnych WM, które to robią). WM_DELETE_WINDOW
jest standardem.
kill -15 <pid_of_chrome>
zrobił to, czego szukałem. Ale google-chrome
ma wiele pid i kilka próbowało znaleźć właściwy.