Killing outros processos do usuário

3

Existem certos ambientes de usuário nos quais temos que fazer login durante determinados testes de desempenho e eliminar todo o processo em execução nesse ambiente.

Os nomes do ambiente são como rswrk01 ,… até rswrk98 . e é assim que entramos.

sudo su - rswrk96

Ele não solicita senhas e registros diretos.

É possível automatizar um script para eliminar todos os processos em execução em todos os ambientes, em vez de efetuar login manualmente e eliminar os processos?

Eu não sou o usuário root, a propósito.

$ uname -a
HP-UX rcihp145 B.11.23 U 9000/800 3683851961 unlimited-user license
    
por munish 17.01.2012 / 15:25

3 respostas

4

Portanto, rswrk01 e co são usuários. Um ocasionalmente útil de kill é que se você passar -1 como o PID, o O sinal é enviado para todos os processos para os quais o remetente do sinal tem permissão para enviar sinais. Em outras palavras, para um usuário não raiz, kill -$sig -1 envia o sinal para todos os processos em execução como esse usuário. Isso inclui o assassino, mas a entrega é atômica, então todos os processos envolvidos recebem um sinal.

Agora tudo que você precisa fazer é colocar isso em um loop e pronto. Uma vez que formatar números com zeros à esquerda é um pouco trabalhoso, um truque não muito bonito mas conveniente é colocar um 1 (ou seja, contar de 101 a 198 em vez de 1 a 98) e remover isso.

i=101
while [ $i -le 98 ]; do
  sudo su - rswrk${i#1} kill -KILL -1
  i=$((i+1))
done

Ou no ksh:

for ((i=101; i<=198; i++)); do
  sudo su - rswrk${i#1} kill -KILL -1
done

Ou no bash ou zsh:

for i in {01..98}; do
  sudo su - rswrk$i kill -KILL -1
done
    
por 18.01.2012 / 02:55
6

sudo -u rswrk96 -i killall ... deve ser o mesmo que fazer su - rswrk96 e, em seguida, killall ... .

O que sobra é gerar a sequência 00-96. Isso deve funcionar:

for i in $(seq -w 00 96); do sudo -u rswrk$i -i killall ...; done

Agora que penso nisso, você provavelmente poderia fazer

for i in $(seq -w 00 96); do sudo killall -u rswrk$i; done

Não precisa fazer login.

    
por 17.01.2012 / 15:36
1

kill -9 -1 simplesmente revogará todos os processos em execução em nome do usuário executante do comando, mesmo os shells. Você pode tentar isso com o sudo para matar os processos de outros usuários. sudo -u user1 kill -9 -1

Ou simplesmente use o comando -u to pkill .

    
por 18.01.2012 / 06:59