unkillable / unstoppable processo normal do usuário, como controlá-lo de maneira forçada?

3

De um dos meus scripts, chamei o comando find , como usuário normal (não raiz).
Ele não estava retornando / continuando, então eu matei o script e find ainda está em execução.
Em htop , vejo que está sempre usando 100% de um núcleo (4 núcleos aqui).
O núcleo em 100% muda de tempos em tempos, a propósito.
No htop, seu estado é 'R' (em execução), não vai mudar depois de matar os sinais abaixo.

Eu tentei: SIGKILL, SIGSTOP, SIGTERM, SIGABRT, hup, 15, nenhum funciona.
Nem usando sudo .

Eu também tentei todos os possíveis sinais de morte:

astr=('kill -l |grep "..[)]" -o |tr -d ')'')
for str in "${astr[@]}"; do echo "======== $str";kill -$str 2315444;ps -o pid,stat,status,state,pcpu,cmd -p 2315444;sleep 1;done

mas depois de cada um, o resultado é sempre o mesmo:

PID STAT STATUS S %CPU CMD
2315444 RN        - R 99.5 find

apparmor está em execução, mas find não está listado nele (após verificar ), mas pará-lo não trabalhe também. O SELinux não está em execução e ainda não encontrei nenhuma maneira de verificar o LSM aqui.

pensando em isso eu tentei desmontar a partição em que ela estava sendo executada (o que causaria nenhum problema) e, depois disso, find ainda estava em execução.

O que mais eu posso tentar, além de reiniciar?
Não há nada de especial no dmesg também. Poderia ser uma falha de hardware? ou um bug do kernel?

Acho que isso poderia ter acontecido com qualquer outro processo, não tenho certeza. Talvez esteja relacionado ao processo que faz IO do disco rígido?

OS .: Ubuntu 16.04

    
por Aquarius Power 17.08.2017 / 21:26

1 resposta

3

Eu posso evitar a reinicialização usando os comandos abaixo:

sudo cgcreate -g cpu:/cpulimited
sudo cgclassify -g cpu:cpulimited 2315444 #the 'find' pid
cd /sys/fs/cgroup/cpu/cpulimited
echo 1000000 |sudo tee cpu.cfs_period_us
echo 1000 |sudo tee cpu.cfs_quota_us #cant be less than 1000 as I tested

leia a explicação completa sobre cpu.cfs_quota_us em aqui , desta dica

A magia cgroup funciona em um processo tão inábil!

Apesar de ps mostrar o pcpu como 98%, todos os outros monitores do sistema mostram que esse processo não está usando nada do cpu, como htop , top e o aplicativo "monitor do sistema".
Portanto, agora, o uso da máquina é suave novamente, já que esse processo único sempre a 100% estava fazendo com que, em intervalos intermitentes, parasse por um segundo.

Uma resposta, a respeito de outras maneiras que não o kill para finalizar esse processo, ainda seria melhor.

thx u todas as dicas!

    
por 17.08.2017 / 23:39

Tags