Enviando sinais SIGSTOP ou SIGCONT graficamente (similar ao xkill)

1

Pergunta

Você conhece alguma ferramenta / script para enviar SIGSTOP (para pausar um processo) ou SIGCONT (para resumi-lo) a um processo clicando em uma janela gráfica gerada pelo processo?

Algum contexto

Já existe uma ferramenta chamada xkill que mata programas clicando em uma janela, mas não tem opções para enviar um sinal específico. Isso é uma pena, porque algumas ferramentas de linha de comando relacionadas, como kill , têm essa opção.

Normalmente, faço isso via linha de comando, obtendo manualmente os nomes de processos correspondentes e usando ferramentas como kill , pkill ou killall , mas seria bom fazer isso graficamente, de forma semelhante a clicando em uma janela com a ferramenta xkill .

Aplicativos

Eu acharia essa ferramenta muito útil para pausar graficamente alguns processos pesados quando a CPU está muito "estressada" sem terminá-los e sem perder dados que não podem ser salvos (por exemplo, para resultados parciais de cálculos longos).

    
por Kubuntuer82 23.04.2018 / 20:21

1 resposta

1

Você pode usar xdotool para permitir que o usuário clique em uma janela e obtenha seu ID de processo. Então você pode usar kill para enviar, por ex. os sinais STOP ou CONT para esse processo e congelar / descongelar dessa forma.

Primeiro, você provavelmente precisará instalar o xdotool , já que ele não vem pré-instalado:

sudo apt install xdotool

Em seguida, o comando para obter o PID do processo que possui uma janela específica, que pode ser selecionada clicando com o mouse, seria:

xdotool selectwindow getwindowpid

Isso imprime o ID do processo numérico. Você pode usá-lo como argumento para kill -STOP ou kill -CONT para pausar e continuar o processo. Isso pode ser simplificado armazenando o PID em uma variável, como neste pequeno script abaixo, que pausa o processo da janela clicada por 5 segundos:

#!/bin/bash
wpid="$(xdotool selectwindow getwindowpid)"
kill -STOP "$wpid"
sleep 5
kill -CONT "$wpid"

Agora você pode salvar este script no seu computador e, por exemplo, ligá-lo a um atalho de teclado.

Note: man xdotool says about the getwindowpid subcommand:

"This requires effort from the application owning a window and may not work for all windows."

     

Em outras palavras, pode não funcionar de todo ou pelo menos não exatamente como pretendido com algumas aplicações.
  Também pode acontecer que várias janelas tenham o mesmo ID de processo correspondente, por exemplo, Todas as instâncias do terminal do gnome são de propriedade do mesmo pai. Nesse caso, o comando congelaria todos eles, o que pode não ser intencional.

    
por Byte Commander 23.04.2018 / 21:25