Como xkill uma aplicação pelo seu id?

3

Eu preciso simular o comportamento do atalho de teclado (ALT + F4) usando o Terminal para um determinado aplicativo.

Se eu abrir, por exemplo, gedit e clicar em ALT + F4 , então o GEDIT será xkilled. Se eu quiser conseguir a mesma coisa usando o Terminal, como devo proceder?

O seguinte comando (para matar o processo de gedit) funciona bem:

kill $eval 'pidof gedit'

ainda, o comando

xkill -id gedit

me pede para clicar na janela do aplicativo cliente para xkill, coisa que eu quero evitar desde o começo.

A razão pela qual eu quero alcançar esse comportamento é que alguns clientes de aplicativos mantêm seu processo em execução, mesmo que você ALT + F4. Minha necessidade é que eu tenha um aplicativo que inicia em cada login e eu preciso fechar seu cliente automaticamente 3 ou 5 segundos depois que ele aparecer.

    
por Hanynowsky 11.11.2012 / 17:51

4 respostas

2

Um equivalente de xkill é a função windowkill em xdotool . Se você não tem xdotool instalado, por favor, execute

sudo apt-get install xdotool

Com essa ferramenta, você pode realmente matar uma janela usando a opção de pesquisa e especificando sua classe:

xdotool search --class gedit windowkill

Você pode encontrar o pid do processo com getwindowpid , mas basta especificar o nome da classe da janela (ou seja, --class gedit ). A ferramenta é não-interativa no sentido de que você não precisa clicar em uma janela para matá-la, como às vezes você precisa fazer com xkill .

Mais informações sobre as opções disponíveis com xdotool estão disponíveis com man xdotool e no Manpages do Ubuntu online . As páginas de manual explicam bem como xdotool pode ser incorporado em um script muito mais fácil do que xkill poderia ser.

Portanto, acho que provavelmente a opção xdotool's windowkill é o que você quer e pode ser mais útil do que a de xkill .

No entanto , se você ainda quiser usar xkill e alimentar o id do recurso da janela, para que ela feche a janela sem avisar, você poderá analisar a saída de xwininfo , como neste exemplo usando o programa Meld :

xkill -id $(xwininfo -name Meld | awk -F ':*"*' '{print }')

No entanto, o nome do programa enviado para xwininfo deve estar no caso correto, por isso, inicie o programa antecipadamente e, em nosso exemplo aqui, veja se ele é Meld ou meld .

Prefiro o comando xdotool que dei acima, pois o caso não precisa estar correto: Meld ou meld funcionará como a opção search --name , em vez disso, usa regex para corresponder a uma determinada string e ignora o caso.

    
por user76204 12.11.2012 / 03:38
1

você pode usar killall , que enviará um TERMSIG (sinal de término) para o aplicativo que você especificar. você pode usar o killall com o seguinte comando

killall <id> 

por exemplo, você pode fechar o firefox com

kilall firefox

se, por algum motivo, você precisar encontrar o ID correto de um aplicativo / processo, poderá sempre usar ps para ver todos os processos em execução e seus nomes.

    
por Sam 11.11.2012 / 19:27
1
kill -9 <id>

definitivamente matará tudo associado a esse pid.

para encontrar o pid, eu uso

ps -u $USER -f | grep gedit

eles podem ser incorporados em um comando se você precisar fazer isso com frequência

    
por philshem 11.11.2012 / 20:30
0

Use o comando top para obter o ID do processo específico. Anote e digite o seguinte comando para matar o processo.

kill <process id>
    
por Ketankumar Patel 12.11.2012 / 04:45

Tags