Anwendungsbeispiel:
Ich starte Chromium mit ein paar geöffneten Registerkarten und entscheide, dass ich in den nächsten 20 Minuten nicht auf die Anwendung zugreifen muss. Um Laptop-Akkulaufzeit zu sparen, möchte ich Chromium in den Ruhezustand versetzen (einfrieren), ohne die Anwendung schließen zu müssen (das erneute Öffnen und Laden aller Registerkarten erfordert Zeit, die ich durch den Ruhezustand einsparen möchte).
killall
Lösung tatsächlich sehr elegant. :)Antworten:
Sie können den
killall
Befehl verwenden, um einSIGSTOP
Signal an alle Prozesse zu senden , die mit einem bestimmten Namen übereinstimmen, um sie einzufrieren und später aufSIGCONT
die gleiche Weise wieder aufzutauen.Ermitteln Sie zuerst den Prozessnamen mit
pgrep -l SEARCH_PATTERN
:Beachten Sie, dass lange Namen abgeschnitten werden, daher
r
fehlt das. Dies ist jedoch kein Problem, da Sie die TabVervollständigung verwenden können, um den Prozessnamen einzugeben, der automatisch vervollständigt wird.Dann senden Sie das
SIGSTOP
Signal an alle Prozesse mit folgendem Namenchromium-browser
:Das Chromium-Fenster wird ausgegraut, als ob es nicht mehr reagiert. Nun, es reagierte wirklich nicht mehr, also war das zu erwarten. Sie können jetzt in keiner Weise mit dem Fenster interagieren (mit Ausnahme der Menüleiste und des Minimierens usw., die vom Fenstermanager und nicht von der Anwendung selbst verwaltet werden). Die Ereignisse durch Klicken auf Schaltflächen usw. werden jedoch weiterhin generiert und der Ereigniswarteschlange der Anwendung hinzugefügt, sodass sie alle gleichzeitig verarbeitet werden, wenn Sie die Anwendung erneut auftauen!
Sie tauen die Anwendung erneut auf, indem Sie einfach diesen Befehl ausführen, der das
SIGCONT
Signal an die angegebenen Prozesse sendet :Manchmal kann das Einfrieren einer Anwendung auf diese Weise zum Absturz führen. Stellen Sie daher sicher, dass wichtige Daten gespeichert sind, bevor Sie eine Anwendung einfrieren.
In seltenen Fällen reagiert auch die Desktop-Umgebung / der Window Manager / was auch immer nicht mehr. In diesem Fall müssen Sie die eingefrorene Anwendung mit einem TTY auftauen:
Drücken Sie Ctrl+ Alt+ F1zu TTY1 wechseln. Sie werden aufgefordert, sich anzumelden. Geben Sie daher Ihren Benutzernamen und Ihr Passwort ein. Führen Sie dann den Befehl aus, um die Anwendung auf die gleiche Weise wie über Ihren normalen Terminalemulator zu starten. Danach kehren Sie mit Ctrl+ Alt+ zum Desktop (TTY7) zurück F7und Sie sollten wieder in Ordnung sein.
quelle
pgrep
, hättest dupkill
SIGSTOP
, ist gering. Ich habe es schon oft bei Chromium verwendet und erinnere mich nicht, dass dies jemals der Grund für einen Absturz war.killall
! ;-)Versuchen Sie zum Anhalten Folgendes:
killall -SIGTSTP chromium-browser
Wenn dies nicht funktioniert, versuchen Sie die kraftvolle Version:
killall -SIGSTOP chromium-browser
.So oder so, um die Verwendung fortzusetzen
killall -SIGCONT chromium-browser
. Ich habe es mit Firefox versucht und es hat funktioniert. Beachten Sie jedoch, dass beim Klicken auf Schaltflächen in Chromium im angehaltenen Zustand diese Informationen ausgeführt werden, sobald Sie mit der Ausführung fortfahren.quelle
chromium-browser
als Prozessname eingegeben werden. +1google-chrome
wenn Sie Google Chrome verwenden, da der Unterschied anscheinend verwirrend istSie können Folgendes versuchen (in einem Terminal):
Dann siehst du so etwas:
Notieren Sie sich die Nummer 7166 (oder was auch immer es ist) und machen Sie dann:
Dadurch wird die Ausführung des Prozesses unterbrochen. Es wird nicht sofort den von ihm verwendeten Speicher freigeben, aber der Speicher wird für andere Prozesse verfügbar sein, wenn sie es benötigen.
Dann mach
kill -CONT 7166
wieder mit dem Programm arbeiten.Beachten Sie, dass Sie 7166 gegebenenfalls ändern müssen.
quelle