Quittez Google Chrome du terminal

28

Existe-t-il un moyen de provoquer l' google-chromearrêt du terminal, outre l'utilisation killall google-chrome?
Je voudrais pouvoir le fermer à partir d'un script sans le tuer.

rusé
la source
2
Quel est le problème avec tuer?
Zoredache
1
@Zoredache Qu'il en résulte un comportement différent de la fermeture, et que Chrome utilise plusieurs processus, dont l'un (le bac à sable) est root setuid.
Gilles 'SO- arrête d'être méchant'

Réponses:

12

Peut wmctrl-être pourrait être d'une certaine aide. Vous pouvez utiliser l' -coption qui ferme une fenêtre avec élégance:

wmctrl -c chrome

La chaîne chromeest comparée aux titres des fenêtres. Notez que la fenêtre peut ne pas se fermer si certains messages apparaissent (par exemple lorsque plusieurs onglets sont ouverts).

Baldrick
la source
1
Cette option fonctionne parfaitement, mais elle a nécessité l'installation de wmctrl.
slybloty
wmctrl ne peut pas fermer la barre d'état système "Chrome Apps". pkill -o chromefait cependant.
Ken Sharp
26

Cette commande quitte l’arborescence de processus Chrome avec élégance, dans tous les gestionnaires de fenêtres:

pkill --oldest chrome

ou si vous préférez:

/usr/bin/pkill --oldest --signal TERM -f chrome    

Détails:

  • signifie gracieusement: éviter de voir "Google Chrome ne s'est pas arrêté correctement. To repoen ... "la prochaine fois que Chrome démarre
  • navigateur Chrome (par exemple la version 39.0.2171.95) intercepte et gère avec élégance SIGTERM
  • signaler un seul processus, la racine de l'arbre de processus de chrome, d'où --oldest
  • SIGTERMest le même que le signal 15, par conséquent --signal TERM, ou laissez-le simplement comme SIGTERMétant le signal par défaut
  • wmctrl fonctionne avec Unity et quelques autres mais ne fonctionne pas avec tous les gestionnaires de fenêtres
  • wmctrl -c ferme une fenêtre à la fois, donc pour fermer toutes les fenêtres chromées, vous aurez besoin de quelque chose comme while wmctrl -c 'Google Chrome'; do sleep 0.2; done
Keith Cascio
la source
1
Je suppose que j'utilise une ancienne version de pkill car ce --oldestn'est pas une option: utiliser des -oœuvres.
Ken Sharp
l' -fargument de pkill ne fonctionne pas pour moi. J'ai d'autres processus en cours d'exécution en tant que root qui ont le mot chrome dans leurs lignes de commande, donc je reçois simplement une autorisation refusée. Sans -f, cela fonctionne parfaitement.
Brian Minton
Cela me fait toujours voir "n'a pas fermé correctement"
xtrinch
Dans Ubuntu 18.04, comment pourrais-je faire en sorte que cela soit exécuté immédiatement après le déclenchement d'un redémarrage ou d'un arrêt?.
Jaime Hablutzel
1

Cela fonctionne pour moi:

killall --quiet --signal 15 -- chrome

Notez que j'utilise une commande plutôt verbeuse pour la garder lisible dans le code, bien sûr, vous pouvez également émettre:

killall -q -15 chrome
Broyeur de chair
la source
1

On Mac OS X, utilisez ceci à la place

pkill -a -i "Google Chrome"

Ce qu'il fait est de rechercher un processus Google Chrome et de tuer également tous ses processus parents.

Extrait du manuel pkill

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

Selon @ de keith-Cascio ' réponse , vous pouvez essayer de tuer au lieu le processus le plus ancien. Notez que cela n'a pas fonctionné pour moi.

pkill -o -i "Google Chrome"
hanxue
la source
0

essayer:

kill -3 <pid_of_chrome>

Cela enverra un signal "QUIT" à Chrome, qui, en fonction de votre gestionnaire de fenêtres, sera ce qu'il est généralement envoyé lorsque vous êtes invité à fermer.

Blackle Mori
la source
2
Cela agit exactement comme killou killalllà où Chrome le voit comme un crash, et demande une restauration.
slybloty
1
essayez 15 au lieu de 3, puis
Blackle Mori
6
En fait, il SIGQUITn'est généralement pas envoyé aux applications lorsqu'on leur demande de fermer (je ne connais pas de WM qui le font). WM_DELETE_WINDOWest la norme.
Chris Down
2
@ blacklemon67 a kill -15 <pid_of_chrome>fait ce que je cherchais. Mais, google-chromea plusieurs pids et il a fallu quelques essais pour obtenir le bon.
slybloty