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.


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


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

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

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"

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.


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
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.