Como fechar todos os processos sem reiniciar uma máquina?

2

Eu tenho muitos processos em execução e preciso matar todos eles.

Como posso fazer isso sem reiniciar uma máquina?

    
por terdon 21.06.2015 / 08:58

5 respostas

2

Mais seriamente, em vez do radical kill , você pode alternar para o modo de manutenção (também conhecido como Single User ):

# as root:
/sbin/init 1

Seu sistema mudará para nível de execução 1 , dedicado a tarefas de manutenção. [Quase] Todos os processos serão [muito bem] eliminados, todos os sistemas de arquivos desmontados e o login interativo direcionado para o console (o argumento console boot).

Para voltar mais tarde ao nível de execução de vários usuários:

/sbin/init 3

ou, para ativar o gerenciador de login gráfico:

/sbin/init 5
    
por 21.06.2015 / 12:01
2

Você não pode fazer isso. Seja o que for que você faça, deve haver pelo menos um processo em execução. Ou melhor, quando você pode fazer isso, você fará com que o kernel descarregue o núcleo e o pânico. Uma reinicialização imediata provavelmente ocorrerá - ou então nada acontecerá até que você desligue a máquina.

Existe espaço no kernel e existe espaço no usuário. O espaço do usuário é sustentado a partir da inicialização pelo PID 1 - init . Matar todos dos processos é matar o espaço do usuário e, em seguida, o que você faria com o computador?

Quando o sistema é inicializado, o firmware do sistema ou algum carregador de inicialização intermediário executa o kernel na memória. O kernel faz algumas verificações de integridade e procura por init . Se encontrar e init fizer alguma coisa útil, você poderá usar seu computador. Se isso não acontecer, você não poderá usar seu computador.

Para o resto da vida desse ciclo de inicialização, o espaço de usuário dos serviços do kernel - ou seja, os filhos de init . Tire as coisas e não tem propósito. E provavelmente não ficará feliz com isso também.

    
por 21.06.2015 / 11:37
0

Se a chave mágica do SysRq estiver ativada no seu sistema, você pode pressionar Alt + Imprimir Scrn / SysRq + E ou executar

echo e > /proc/sysrq-trigger

para enviar SIGTERM para todos os processos, exceto init (PID 1).

Você também pode usar Alt + Imprimir Scrn / SysRq + I ou

echo i > /proc/sysrq-trigger

para enviar SIGKILL.

    
por 21.06.2015 / 11:49
0

Você pode matar todos os processos seguindo o comando:

kill -9 -1

De página de manual : -

$ man kill | sed -n '5,6p' ; man kill | awk 'NR>=38 && NR<=40'
NAME
       kill - send a signal to a process
EXAMPLES
       kill -9 -1
              Kill all processes you can kill.

Isso matará todos os processos e você será redirecionado para a tela de login.

    
por 21.06.2015 / 12:16
0

Se a sua distro usa systemd , você pode alternar para o mínimo systemd target:

systemctl isolate emergency.target

Isso matará quase todos os aplicativos, moverá seu sistema para o modo de login raiz de usuário único. Depois disso você executa:

systemctl isolate graphical.target

Você será levado de volta para o X. Isso praticamente ocorrerá em uma reinicialização.

    
por 21.06.2015 / 19:41

Tags