Przykład zastosowania:
Uruchamiam Chromium z kilkoma otwartymi kartami i stwierdzam, że nie potrzebuję uzyskiwać dostępu do aplikacji przez następne 20 minut. Aby zaoszczędzić czas baterii laptopa, chciałbym hibernować (zamrozić) Chromium bez konieczności zamykania aplikacji (ponowne otwieranie i ponowne ładowanie wszystkich kart wymaga czasu, który chciałbym zaoszczędzić przez hibernację).
killall
rozwiązanie jest naprawdę bardzo eleganckie. :)Odpowiedzi:
Możesz użyć
killall
polecenia, aby wysłaćSIGSTOP
sygnał do wszystkich procesów pasujących do danej nazwy, aby je zamrozić, a następnie wysłać wSIGCONT
ten sam sposób, aby je ponownie rozmrozić.Najpierw sprawdź nazwę procesu, używając
pgrep -l SEARCH_PATTERN
:Pamiętaj, że przycina długie nazwy, dlatego
r
brakuje. Nie stanowi to jednak problemu, ponieważ można użyć Tabuzupełniania, aby wprowadzić nazwę procesu, która zakończy ją automatycznie.Następnie wysyłasz
SIGSTOP
sygnał do wszystkich procesów ochromium-browser
takich nazwach :Okno Chromium wyszarzy się, jakby przestało odpowiadać. Cóż, naprawdę przestało odpowiadać, więc należało się tego spodziewać. Nie możesz teraz w żaden sposób wchodzić w interakcje z oknem (z wyjątkiem paska menu i minimalizowania itp., Które są obsługiwane przez menedżera okien, a nie samą aplikację). Ale zdarzenia z klikania przycisków itp. Są nadal generowane i dodawane do kolejki zdarzeń aplikacji, więc wszystkie zostaną przetworzone jednocześnie, gdy ponownie rozmrozisz aplikację!
Aplikację ponownie rozmrażasz, po prostu uruchamiając polecenie, które wysyła
SIGCONT
sygnał do określonych procesów:Czasami zawieszenie aplikacji w ten sposób może spowodować awarię, więc upewnij się, że ważne rzeczy zostały zapisane przed zawieszeniem aplikacji.
W rzadkich przypadkach nawet środowisko pulpitu / menedżer okien / cokolwiek innego może również przestać odpowiadać. W takim przypadku musisz rozmrozić zamrożoną aplikację za pomocą TTY:
Naciśnij Ctrl+ Alt+, F1aby przełączyć na TTY1. Zostaniesz poproszony o zalogowanie się, więc wpisz swoją nazwę użytkownika i hasło. Następnie uruchom polecenie, aby rozmrozić aplikację w taki sam sposób, jak uruchamiałbyś ją przez normalny emulator terminala. Po tym przełącz się z powrotem na pulpit (TTY7) za pomocą Ctrl+ Alt+ F7i powinieneś być w porządku.
źródło
pgrep
, mógłbyś kontynuowaćpkill
SIGSTOP
istnieje ryzyko awarii aplikacji , powiedziałbym, że jest niewielkie. Często używałem go na Chromium i nie przypominam sobie, aby kiedykolwiek był przyczyną awarii.killall
! ;-)Aby zawiesić, spróbuj:
killall -SIGTSTP chromium-browser
Jeśli to nie zadziała, spróbuj wersję stanowcze:
killall -SIGSTOP chromium-browser
.Tak czy inaczej, aby kontynuować korzystanie
killall -SIGCONT chromium-browser
. Próbowałem z Firefoksem i działało. Pamiętaj jednak, że jeśli klikniesz przyciski w Chromium, gdy jest ono zawieszone, wykona te czynności, gdy będziesz kontynuować.źródło
chromium-browser
jako nazwę procesu. +1google-chrome
jeśli używasz Google Chrome, ponieważ różnica jest najwyraźniej mylącaMożesz wypróbować następujące opcje (w terminalu):
Wtedy zobaczysz coś takiego:
Zapisz liczbę 7166 (lub dowolną inną), a następnie:
Spowoduje to zawieszenie wykonania procesu. Nie od razu zwolni używaną przez nią pamięć, ale pamięć będzie dostępna dla innych procesów, jeśli będą jej potrzebować.
Więc zrób
kill -CONT 7166
ponownie pracować z programem.Pamiętaj, że musisz zmienić 7166 w razie potrzeby.
źródło