
Tenho um usuário antigo (bob) em meu sistema. De acordo com a saída de 'top' parece que muitos processos são executados por este usuário (o comando para a maioria deles é 'java'). Como tenho acesso root, excluí o usuário, mas os processos continuam rodando com o usuário como '1000'. Como faço para impedir que esses processos sejam executados permanentemente?
Responder1
Se você excluiu o usuário e também excluiu quaisquer cronjobs, etc. que o usuário possa ter, a reinicialização do sistema deve eliminar seus processos sem reiniciá-los quando o sistema for reiniciado.
Se a reinicialização não for uma opção, você poderá enviar um sinal de encerramento para todos os processos pertencentes ao usuário com UID 1000 usando
sudu pkill -u 1000
Você pode ver quais processos seriam afetados por esse comando executando primeiro
pgrep -u 1000
Veja também man pkill
.
Responder2
Primeiro vou salvar o estado atual de todos os processos do servidor em um arquivo.
ps -wwfax -o uid=,pid=,ppid=,cmd= > /root/list_of_process_as_today.txt
Depois vou me concentrar no meu usuário ruim.
ps -wwfax -o uid=,pid=,ppid=,cmd= | sed '/^ *1000 *\([0-9][0-9]*\) .*$/p;d'
Um exemplo de saída pode ser:
1000 3096 3087 \_ sshd: em444@pts/0
1000 3099 3096 \_ -bash
1000 3543 3099 \_ ps -wwfax -o uid=,pid=,ppid=,cmd=
1000 3544 3099 \_ sed /^ *1000 *\([0-9][0-9]*\) .*$/p;d
1000 21628 1 SCREEN
1000 21629 21628 \_ /bin/bash
Análise da lista de processos
meu shell atual é o processo 3099 . você pode ver algum processo filho, o comando que executei3543e um dos pais3096
Você pode ver que tenho o processo 21628, o pai dele é o processo1, processo1é pai de todos os processos.
Depois que eu puder usar este comando para matar todos os processos.
kill $(/root/list_of_process_as_today.txt | sed 's/^ *1000 *\([0-9][0-9]*\) .*$/\1/p;d')