Gibt es eine Möglichkeit google-chrome
, das Terminal zu verlassen, abgesehen von der Verwendung von killall google-chrome
?
Ich möchte es aus einem Skript schließen können, ohne es zu beenden.
Gibt es eine Möglichkeit google-chrome
, das Terminal zu verlassen, abgesehen von der Verwendung von killall google-chrome
?
Ich möchte es aus einem Skript schließen können, ohne es zu beenden.
Antworten:
Vielleicht wmctrl
könnte es hilfreich sein. Sie können die -c
Option verwenden, mit der ein Fenster ordnungsgemäß geschlossen wird:
wmctrl -c chrome
Die Zeichenfolge chrome
wird mit den Fenstertiteln abgeglichen. Beachten Sie, dass das Fenster möglicherweise nicht geschlossen wird, wenn eine Nachricht angezeigt wird (z. B. wenn mehrere Registerkarten geöffnet sind).
wmctrl
.
pkill -o chrome
tut es aber.
Mit diesem Befehl wird der Chrome-Prozessbaum in allen Fenstermanagern ordnungsgemäß beendet:
pkill --oldest chrome
oder wenn Sie es vorziehen:
/usr/bin/pkill --oldest --signal TERM -f chrome
Einzelheiten:
SIGTERM
--oldest
SIGTERM
die gleichen wie Signal ist 15
, also --signal TERM
, oder es einfach aus verlassen , da SIGTERM
das Standardsignalwmctrl
funktioniert mit Unity und einigen anderen, aber nicht mit allen Fenstermanagernwmctrl -c
Schließt jeweils ein Fenster. Um also alle Chromfenster zu schließen, benötigen Sie etwas wie while wmctrl -c 'Google Chrome'; do sleep 0.2; done
--oldest
keine Option ist: using -o
works.
-f
argument gegen pkill funktioniert bei mir nicht. Ich habe einige andere Prozesse als root ausgeführt, die zufällig das Wort chrome in ihren Befehlszeilen haben, so dass mir nur die Erlaubnis verweigert wird. Ohne das -f
funktioniert es aber einwandfrei.
Das funktioniert bei mir:
killall --quiet --signal 15 -- chrome
Beachten Sie, dass ich einen ziemlich ausführlichen Befehl verwende, um ihn im Code lesbar zu halten. Natürlich können Sie auch Folgendes eingeben:
killall -q -15 chrome
Auf Mac OS X
, verwenden Sie diese stattdessen
pkill -a -i "Google Chrome"
Sie sucht nach einem Google Chrome-Prozess und beendet auch alle übergeordneten Prozesse.
Aus dem pkill-Handbuch
-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.
Gemäß der Antwort von @ keith-cascio können Sie stattdessen versuchen, den ältesten Prozess abzubrechen . Beachten Sie, dass dies bei mir nicht funktioniert hat.
pkill -o -i "Google Chrome"
Versuchen:
kill -3 <pid_of_chrome>
Dies sendet ein "QUIT" -Signal an Chrome, das abhängig von Ihrem Fenstermanager das ist, was normalerweise gesendet wird, wenn Sie zum Schließen aufgefordert werden.
kill
oder dort, killall
wo Chrome es als Absturz ansieht und nach Wiederherstellung fragt.
SIGQUIT
wird in der Regel nicht an Anwendungen gesendet, wenn diese zum Schließen aufgefordert werden (ich kenne keine WMs, die dies tun). WM_DELETE_WINDOW
ist der Standard.
kill -15 <pid_of_chrome>
getan, wonach ich gesucht habe. google-chrome
Hat aber mehrere pids und es hat ein paar versucht, tatsächlich das richtige zu bekommen.