Salga de Google Chrome desde la terminal

28

¿Hay alguna manera de hacer google-chromeque se cierre, desde la terminal, además de usar killall google-chrome?
Me gustaría poder cerrarlo desde un script sin matarlo.

slybloty
fuente
2
¿Qué hay de malo en matar?
Zoredache
1
@Zoredache Que da como resultado un comportamiento diferente al salir, y que Chrome usa múltiples procesos, uno de los cuales (el sandbox) es la raíz setuid.
Gilles 'SO- deja de ser malvado'

Respuestas:

12

Quizás wmctrlpodría ser de alguna ayuda. Puede usar la -copción que cierra una ventana con gracia:

wmctrl -c chrome

La cadena chromese compara con los títulos de las ventanas. Tenga en cuenta que la ventana podría no cerrarse si aparece algún mensaje emergente (por ejemplo, cuando tiene varias pestañas abiertas).

Baldrick
fuente
1
Esta opción funciona perfectamente, pero requiere la instalación de wmctrl.
slybloty
wmctrl no puede cerrar la bandeja del sistema "Aplicaciones de Chrome". pkill -o chromeSin embargo.
Ken Sharp
26

Este comando sale del árbol de procesos de Chrome con gracia, en todos los administradores de ventanas:

pkill --oldest chrome

o si lo prefieres:

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

Detalles:

  • con gracia significa: evitar ver "Google Chrome no se cerró correctamente. Volver a abrir ... "la próxima vez que comience Chrome
  • El navegador Chrome (por ejemplo, la versión 39.0.2171.95) atrapa y maneja con gracia SIGTERM
  • señala un solo proceso, la raíz del árbol de procesos de Chrome, por lo tanto --oldest
  • SIGTERMes lo mismo que señal 15, por lo tanto --signal TERM, o simplemente déjelo fuera ya que SIGTERMes la señal predeterminada
  • wmctrl funciona con Unity y algunos otros, pero no funciona con todos los administradores de ventanas
  • wmctrl -c cierra una ventana a la vez, así que para cerrar todas las ventanas de cromo necesitaría algo como while wmctrl -c 'Google Chrome'; do sleep 0.2; done
Keith Cascio
fuente
1
Supongo que estoy usando una versión anterior de pkill, ya --oldestque no es una opción: usar -oworks.
Ken Sharp
El -fargumento de pkill no me funciona. Tengo algunos otros procesos ejecutándose como root que tienen la palabra chrome en sus líneas de comando, por lo que me niegan el permiso. Sin -fembargo, funciona perfectamente.
Brian Minton
Esto todavía me hace ver 'no se cerró correctamente'
xtrinch
En Ubuntu 18.04, ¿cómo podría hacer que esto se ejecute inmediatamente después de desencadenar un reinicio o un apagado?
Jaime Hablutzel
1

Esto funciona para mi:

killall --quiet --signal 15 -- chrome

Tenga en cuenta que estoy usando un comando bastante detallado para mantenerlo legible en el código, por supuesto, también podría emitir:

killall -q -15 chrome
Grillete de carne
fuente
1

Encendido Mac OS X, use esto en su lugar

pkill -a -i "Google Chrome"

Lo que hace es buscar un proceso de Google Chrome y eliminar todos sus procesos principales también.

Del manual de 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.

Según la respuesta de @ keith-cascio , puedes intentar eliminar el proceso más antiguo. Tenga en cuenta que esto no funcionó para mí.

pkill -o -i "Google Chrome"
hanxue
fuente
0

tratar:

kill -3 <pid_of_chrome>

Esto enviará una señal de "SALIR" a Chrome, que, dependiendo de su administrador de ventanas, será lo que generalmente se envía cuando se le pide que cierre.

Blackle Mori
fuente
2
Esto actúa igual killo killallcuando Chrome lo ve como un bloqueo y solicita la restauración.
slybloty
1
pruebe 15 en lugar de 3, luego
Blackle Mori
66
En realidad, SIGQUITno suele enviarse a las aplicaciones cuando se le pide que cierre (no conozco ningún WM que haga esto). WM_DELETE_WINDOWEs el estándar.
Chris Down
2
@ blacklemon67 kill -15 <pid_of_chrome>hizo lo que estaba buscando. Pero, google-chrometiene múltiples pids y tomó algunos intentos para obtener el correcto.
slybloty