Existe-t-il un moyen de provoquer l' google-chrome
arrêt du terminal, outre l'utilisation killall google-chrome
?
Je voudrais pouvoir le fermer à partir d'un script sans le tuer.
Existe-t-il un moyen de provoquer l' google-chrome
arrêt du terminal, outre l'utilisation killall google-chrome
?
Je voudrais pouvoir le fermer à partir d'un script sans le tuer.
Réponses:
Peut wmctrl
-être pourrait être d'une certaine aide. Vous pouvez utiliser l' -c
option qui ferme une fenêtre avec élégance:
wmctrl -c chrome
La chaîne chrome
est 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).
wmctrl
.
pkill -o chrome
fait cependant.
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:
SIGTERM
--oldest
SIGTERM
est le même que le signal 15
, par conséquent --signal TERM
, ou laissez-le simplement comme SIGTERM
étant le signal par défautwmctrl
fonctionne avec Unity et quelques autres mais ne fonctionne pas avec tous les gestionnaires de fenêtreswmctrl -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
--oldest
n'est pas une option: utiliser des -o
œuvres.
-f
argument 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.
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
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"
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.
kill
ou killall
là où Chrome le voit comme un crash, et demande une restauration.
SIGQUIT
n'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_WINDOW
est la norme.
kill -15 <pid_of_chrome>
fait ce que je cherchais. Mais, google-chrome
a plusieurs pids et il a fallu quelques essais pour obtenir le bon.