Beenden Sie Google Chrome vom Terminal

28

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.

Slybloty
quelle
2
Was ist los mit töten?
Zoredache
1
@Zoredache Dies führt zu einem anderen Verhalten als das Beenden und Chrome verwendet mehrere Prozesse, von denen einer (die Sandbox) als root festgelegt ist.
Gilles 'SO - hör auf böse zu sein'

Antworten:

12

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).

Baldrick
quelle
1
Diese Option funktioniert einwandfrei, erfordert jedoch die Installation von wmctrl.
Slybloty
wmctrl kann die Taskleiste "Chrome Apps" nicht schließen. pkill -o chrometut es aber.
Ken Sharp
26

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:

  • Anmutig bedeutet: Vermeiden Sie, dass „Google Chrome nicht ordnungsgemäß heruntergefahren wurde. Zum Reponieren ... “beim nächsten Start von Chrome
  • Chrome-Browser (z. B. Version 39.0.2171.95) überfüllt und elegant behandelt SIGTERM
  • signalisieren einen einzelnen Prozess, also die Wurzel des Prozessbaums von Chrome --oldest
  • SIGTERMdie gleichen wie Signal ist 15, also --signal TERM, oder es einfach aus verlassen , da SIGTERMdas Standardsignal
  • wmctrl funktioniert mit Unity und einigen anderen, aber nicht mit allen Fenstermanagern
  • wmctrl -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
Keith Cascio
quelle
1
Ich gehe davon aus, dass ich eine alte Version von pkill verwende, da dies --oldestkeine Option ist: using -oworks.
Ken Sharp
das -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.
Brian Minton
Dies lässt mich immer noch sehen, dass "nicht ordnungsgemäß heruntergefahren" wurde
Xtrinch
Wie kann ich in Ubuntu 18.04 dafür sorgen, dass dies unmittelbar nach dem Auslösen eines Neustarts oder Herunterfahrens ausgeführt wird?
Jaime Hablutzel
1

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
Fleischwolf
quelle
1

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"
Hanxue
quelle
0

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.

Blackle Mori
quelle
2
Dies verhält sich genauso killoder dort, killallwo Chrome es als Absturz ansieht und nach Wiederherstellung fragt.
Slybloty
1
versuchen Sie 15 statt 3, dann
Blackle Mori
6
Tatsächlich 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.
Chris Down
2
@ blacklemon67 hat 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.
Slybloty