Existe algum utilitário do Linux para interromper todos os processos do usuário, incluindo uma VM?

1

Eu sei do comando kill5 do sistema killall5.

Existe algo semelhante em que posso enviar um SIGSTOP para todos os processos do usuário, um sistema operacional host e um sistema operacional convidado incluídos?

Possivelmente killall -SIGSTOP ??

    
por user_ABCD 13.07.2016 / 15:54

3 respostas

1

Se você realmente quiser fazer isso, o seguinte, executado pelo root, enviará o sinal STOP para tudo :

kill -STOP -1

Isso vai estragar seu sistema imensamente, então não faça isso .

Especificando -1 como o ID do processo (da especificação da biblioteca kill() C no SUSv4):

If pid is -1, sig shall be sent to all processes (excluding an unspecified set of system processes) for which the process has permission to send that signal.

Executado por um usuário, isso fará o mesmo com todos os processos pertencentes a esse usuário, incluindo o shell atual . Então, não faça isso .

Para interromper todos os processos de um usuário em particular, enquanto não sendo esse usuário (ou seja, você é root):

pkill -STOP -u otheruser 

Se você executar isso com sudo enquanto estiver logado como otheruser , ele ainda vai atrapalhar, então não faça isso .

O único motivo pelo qual posso ver o envio de STOP para todos os processos de um usuário é quando esse usuário é um usuário do daemon que está executando um número muito limitado de coisas.

Além disso, lembre-se de enviar CONT depois ...

    
por 13.07.2016 / 16:05
1
O

pkill (consulte o pgrep) é um utilitário de linha de comando inicialmente escrito para uso com o sistema operacional Solaris 7. Desde então, foi reimplementado para Linux e alguns BSDs.

Como nos comandos kill e killall, o pkill é usado para enviar sinais aos processos. O comando pkill permite o uso de padrões de expressões regulares estendidos e outros critérios de correspondência.

Para sinalizar todos os processos de um determinado usuário, use:

pkill -signal <signalname> -u <userid>    //(by default it will send SIGTERM)

Você pode usar o pgrep com isso como um teste antes de executá-lo para ver o nome do processo e o pid do que será sinalizado:

pgrep  -u  <userid> -l 

Você pode usar qualquer sinal (veja kill -l ) com pkill. veja man pkill


Informações da página man
O pgrep examina os processos atualmente em execução e lista os IDs do processo que correspondem aos critérios de seleção para stdout. Todos os critérios devem corresponder.
Por exemplo, pgrep -u root sshd

listará apenas os processos chamados sshd AND de propriedade de root. Por outro lado,

pgrep -u

root,daemon

listará os processos de propriedade do daemon OR raiz.

O pkill enviará o sinal especificado (por padrão, SIGTERM) para cada processo, em vez de listá-los no stdout.

Opções

-d delimiter Define a string usada para delimitar cada ID do processo na saída (por padrão, uma nova linha). (apenas pgrep.)
-f O padrão é normalmente correspondido apenas ao nome do processo. Quando -f está configurado, a linha de comando completa é usada.
-g pgrp,... Corresponda apenas processos nos IDs do grupo de processos listados. O grupo de processos 0 é traduzido no próprio grupo de processos do pgrep ou pkill.
-G gid,... Corresponda apenas processos cujo ID de grupo real esteja listado. O valor numérico ou simbólico pode ser usado.
-l Liste o nome do processo, bem como o ID do processo. (apenas pgrep.)
-n Selecione apenas os processos mais recentes (iniciados mais recentemente).% -o Selecione apenas o mais antigo (iniciado menos recentemente) dos processos correspondentes. %código% Corresponder somente processos cujo ID de processo pai esteja listado.
-P ppid,... Corresponda apenas processos cujo ID de sessão do processo esteja listado. O ID da sessão 0 é traduzido no ID de sessão do pgrep ou pkill.
-s sid,... Apenas corresponde processos cujo terminal de controle esteja listado. O nome do terminal deve ser especificado sem o prefixo "/ dev /".
-t term,... Corresponda apenas processos cujo ID de usuário efetivo esteja listado. O valor numérico ou simbólico pode ser usado.
-u euid,... Corresponda apenas processos cujo ID de usuário real esteja listado. O valor numérico ou simbólico pode ser usado.
-U uid,... Nega a correspondência.
-v Corresponda somente aos processos cujo nome (ou linha de comando, se -f for especificado) corresponder exatamente ao padrão.
-x Define o sinal para enviar para cada processo correspondente. O nome numérico ou simbólico do sinal pode ser usado. (somente pkill.)

    
por 13.07.2016 / 16:08
1

kill permite o valor especial -1 para o parâmetro PID, significando "todos processos (excluindo um conjunto não especificado de processos do sistema) para os quais o processo tem permissão para enviar esse sinal ", então isso deve ser semelhante ao que uma chamada para killall5 teria feito se fosse dada a número para o sinal STOP:

kill -SIGSTOP -1
    
por 13.07.2016 / 16:05

Tags