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 wmctrlkönnte es hilfreich sein. Sie können die -cOption verwenden, mit der ein Fenster ordnungsgemäß geschlossen wird:
wmctrl -c chrome
Die Zeichenfolge chromewird 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 chrometut 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--oldestSIGTERMdie gleichen wie Signal ist 15, also --signal TERM, oder es einfach aus verlassen , da SIGTERMdas 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--oldestkeine Option ist: using -oworks.
-fargument 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 -ffunktioniert 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.
killoder dort, killallwo Chrome es als Absturz ansieht und nach Wiederherstellung fragt.
SIGQUITwird in der Regel nicht an Anwendungen gesendet, wenn diese zum Schließen aufgefordert werden (ich kenne keine WMs, die dies tun). WM_DELETE_WINDOWist der Standard.
kill -15 <pid_of_chrome>getan, wonach ich gesucht habe. google-chromeHat aber mehrere pids und es hat ein paar versucht, tatsächlich das richtige zu bekommen.