Saia do Google Chrome do terminal


28

Existe uma maneira de causar google-chromea saída, do terminal, além de usar killall google-chrome?
Eu gostaria de poder fechá-lo de um script sem matá-lo.


2
O que há de errado com matar?
— Zoredache

1
@ Zoredache Isso resulta em um comportamento diferente de sair e que o Chrome usa vários processos, um dos quais (a sandbox) é a raiz do setuid.
— Gilles 'SO- stop be evil'

Respostas:


12

Talvez wmctrlpossa ser de alguma ajuda. Você pode usar a -copção que fecha uma janela normalmente:

wmctrl -c chrome

A sequência chromeé comparada com os títulos da janela. Observe que a janela pode não fechar se alguma mensagem aparecer (por exemplo, quando você tiver várias guias abertas).


1
Esta opção funciona perfeitamente, mas exigiu a instalação de wmctrl.
— slybloty

O wmctrl não pode fechar a bandeja do sistema "Chrome Apps". pkill -o chromefaz embora.
— Ken Sharp

26

Este comando sai da árvore de processos do chrome normalmente, em todos os gerenciadores de janelas:

pkill --oldest chrome

ou se você preferir:

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

Detalhes:

  • significa normalmente: evite ver "O Google Chrome não foi desligado corretamente. Para reavaliar ... ”da próxima vez que o chrome for iniciado
  • navegador Chrome (por exemplo, versão 39.0.2171.95) intercepta e manipula normalmente SIGTERM
  • sinalizar um único processo, a raiz da árvore de processos do chrome, --oldest
  • SIGTERMé o mesmo que sinal 15, portanto --signal TERM, ou simplesmente deixe de fora, pois SIGTERMé o sinal padrão
  • wmctrl funciona com o Unity e alguns outros, mas não funciona com todos os gerenciadores de janelas
  • wmctrl -c fecha uma janela de cada vez, para fechar todas as janelas cromadas, você precisa de algo como while wmctrl -c 'Google Chrome'; do sleep 0.2; done

1
Suponho que estou usando uma versão antiga do pkill, pois --oldestnão é uma opção: usar o -oworks.
— Ken afiada

o -fargumento para pkill não está funcionando para mim. Eu tenho alguns outros processos em execução como root, que possuem a palavra chrome em suas linhas de comando; portanto, apenas recebo permissão negada. Sem o -f, ele funciona perfeitamente embora.
— Brian Minton

Isso ainda me faz ver 'não foi encerrado corrently'
— xtrinch

No Ubuntu 18.04, como eu poderia fazer isso ser executado imediatamente após acionar uma reinicialização ou um desligamento ?.
— Jaime Hablutzel

1

Isso funciona para mim:

killall --quiet --signal 15 -- chrome

Observe que estou usando um comando bastante detalhado para mantê-lo legível no código, é claro que você também pode emitir:

killall -q -15 chrome

1

Em Mac OS X, use isso em vez

pkill -a -i "Google Chrome"

O que ele faz é procurar um processo do Google Chrome e matar todos os seus processos-pai também.

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

De acordo com a resposta de @ keith-cascio , você pode tentar matar o processo mais antigo. Observe que isso não funcionou para mim.

pkill -o -i "Google Chrome"

0

experimentar:

kill -3 <pid_of_chrome>

Isso enviará um sinal de "QUIT" para o chrome, que, dependendo do gerenciador de janelas, será o que normalmente é enviado quando solicitado a fechar.


2
Isso funciona exatamente como killou killallonde o Chrome o vê como uma falha e pede para restaurar.
— slybloty

1
tente 15 em vez de 3, então
— Blackle Mori

6
Na verdade, SIGQUITgeralmente não é enviado aos aplicativos quando solicitado a fechar (não conheço nenhum WMs que faça isso). WM_DELETE_WINDOWé o padrão.
— 31412 Chris Down

2
@ blacklemon67 kill -15 <pid_of_chrome>fez o que eu estava procurando. Mas, google-chrometem vários pids e foram necessários alguns para realmente conseguir o caminho certo.
— slybloty
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.