Existe uma maneira de causar google-chrome
a saída, do terminal, além de usar killall google-chrome
?
Eu gostaria de poder fechá-lo de um script sem matá-lo.
Existe uma maneira de causar google-chrome
a saída, do terminal, além de usar killall google-chrome
?
Eu gostaria de poder fechá-lo de um script sem matá-lo.
Respostas:
Talvez wmctrl
possa ser de alguma ajuda. Você pode usar a -c
opçã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).
wmctrl
.
pkill -o chrome
faz embora.
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:
SIGTERM
--oldest
SIGTERM
é o mesmo que sinal 15
, portanto --signal TERM
, ou simplesmente deixe de fora, pois SIGTERM
é o sinal padrãowmctrl
funciona com o Unity e alguns outros, mas não funciona com todos os gerenciadores de janelaswmctrl -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
--oldest
não é uma opção: usar o -o
works.
-f
argumento 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.
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
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"
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.
kill
ou killall
onde o Chrome o vê como uma falha e pede para restaurar.
SIGQUIT
geralmente 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.
kill -15 <pid_of_chrome>
fez o que eu estava procurando. Mas, google-chrome
tem vários pids e foram necessários alguns para realmente conseguir o caminho certo.