Existe uma maneira mais rápida de desligar o sistema?

20

Ou é shutdown -h nowo mais rápido que pode obter?

Eu procuro algum syscall ou similar que permita ignorar muitas coisas feitas antes do desligamento (em especial para se preocupar com os processos em execução).

Na melhor das hipóteses, gostaria de uma solução relacionada ao kernel, ignorando o init-middleware (como systemdou upstart).

Os riscos relacionados com ie matar diretamente todos os serviços como cups / apache / pulseaudio etc ... Eu não me importaria ....

observação: a solução deve ser vice-software. Pressionar botões no dispositivo não é o que procuro.

humanidade e paz
fonte
8
"Os riscos relacionados a, por exemplo, matar diretamente todos os serviços, como cups / apache / pulseaudio etc ... Eu não me importaria ...." -> Você tem certeza? Deixar um software complexo em um estado inconsistente pode causar surpresas desagradáveis ​​na próxima vez em que for usado. Talvez você deva considerar desativar serviços que você não usa muito (por exemplo, cups, apache); você sempre pode iniciar e parar essas coisas manualmente quando quiser usá-las.
precisa
O método que eu procuro é o momento em que quero evitar que as pessoas tenham acesso ao meu PC. Qualquer atraso no desligamento permite travessuras. Eu prefiro perder dados e expô-los.
humanityANDpeace
2
Também visite isto
Pandya
8
Há uma ideia. Comece a economizar dinheiro para algum hardware novo.
John WH Smith
sudo shutdown -P 0 Eu uso isso e ele começa o processo de desligamento imediato, não importa o que os aplicativos estão abertos
gkmohit

Respostas:

30

Não é muito mais rápido do que usar a funcionalidade System Request (SysRq) e, em seguida, acionar um imediato reboot.

Esta é uma combinação de teclas entendida pelo kernel.

Ative o SysRq:

echo 1 > /proc/sys/kernel/sysrq

Agora, envie-o para reiniciar.

echo b > /proc/sysrq-trigger

b - Reinicialize imediatamente o sistema, sem desmontar ou sincronizar sistemas de arquivos.

Nota:

Embora esse seja um rebootcomportamento, a energia foi cortada, o que não é recomendado.

Se você quiser synce umountos sistemas de arquivos antes da mão, use:

echo s > /proc/sysrq-trigger
echo u > /proc/sysrq-trigger

ou se você quiser apenas desligar o sistema:

echo o > /proc/sysrq-trigger

Combinações de teclas mágicas

Também há combinações de teclas a serem interpretadas pelo kernel:

Alt+ SysRq / Print Screen+Command Key

Teclas de comando:

R- Assuma o controle do teclado de volta do X.
E- Envie o SIGTERM para todos os processos, permitindo que eles terminem normalmente.
I- Envie o SIGKILL para todos os processos, forçando-os a terminar imediatamente.
S- Liberar dados para o disco.
U- Remonte todos os sistemas de arquivos somente leitura.
B- Reinicie.

Citando a partir do Wiki Magic SysRq Key :

Um uso comum da chave mágica SysRq é executar uma reinicialização segura de um computador Linux que foi bloqueado.

  1. Mantenha pressionadas as teclas Alte SysRq(Print Screen).
  2. Enquanto mantém pressionadas, digite as seguintes teclas em ordem, com vários segundos de diferença: REISUB .
  3. Computador deve reiniciar.

Uma maneira de lembrar estes são:

" R eboot E ven I f S istema U tterly B roken" ou simplesmente a palavra " mais ocupada " ler para trás.

Referências

Wiki Magia do SysRq Key
Fedora SysRq

geedoubleya
fonte
11
É importante observar que um sistema limpo pode levar até menos de 2 segundos para desligar. Quando eu chamo poweroffna minha máquina Arch, eu não posso nem ver o registo de desligamento a ser impresso na tela ...
John WH Smith
Antes do segundo eco, você desejaria executar sync( linux.about.com/library/cmd/blcmdl8_sync.htm ), o que garantiria que os buffers sejam gravados no disco, incluindo superblocos.
Arcege 21/10/14
você sugere que o bser não é o mesmo o. B é melhor?
humanityANDpeace
Depende do que você quer dizer com melhor. Embora a bopção seja muito rápida, não syncos discos, o que não é o ideal, existem muitas opções que fornecem maneiras de reduzir o tempo de desligamento, algumas mais extremas que outras. Há também uma panicopção. Leia o wiki, tentativa e erro para ver o que melhor atende às suas necessidades.
geedoubleya
Bem, no meu sistema estragado, echo o /proc/sysrq-triggerisso cria um jeito. O sistema permanece ligado. De fato, o bsistema se foi. No entanto, é reinicializado, o que significa que a RAM pode ser mantida, o que é uma vulnerabilidade. Gostaria da bopção com o sistema desativado no final. Infelizmente isso não funciona com a oopção no meu sistema. Obrigado pela sugestão para você e também para @Pandya
humanityANDpeace
8

A abordagem desagradável é shutdown -h -n now.

Observe que isso não fará nenhuma limpeza; portanto, os sistemas de arquivos podem ficar inconsistentes, os bancos de dados quebram etc., mas encerram o sistema muito rapidamente.

Simon Richter
fonte
11
obrigado, isso parece interessante: esta -nopção está documentada e ainda está na versão atual do desligamento?
humanityANDpeace
11
Sim, isso é padrão. Ele diz diretamente ao kernel para largar tudo. Este comando é normalmente usado a partir do último script de desligamento, quando o desligamento regular é concluído.
Simon Richter
7
Mas não posso enfatizar o suficiente para que isso provavelmente cause efeitos negativos, pois é o equivalente a puxar o plugue.
Simon Richter
Maravilhosamente simples e eficaz. Essa opção -n é exatamente o que eu estava procurando. Muito obrigado por responder à pergunta feita. Você não sabe o quão frustrante é fazer uma pergunta e ouvir as barbáries dizerem por que sua pergunta está errada, em vez de apenas respondê-la. Eu votaria esta resposta cinquenta vezes, se pudesse. OBRIGADO.
Joshua Pech 14/09
4

Algumas distribuições oferecem um poweroffcomando que é mais simples que shutdown.

Usando-o com:

poweroff -f

executará uma sincronização de disco e depois desligará. Esse é um bom compromisso entre ser muito mais rápido e ainda executar o desligamento mínimo para garantir que os sistemas de arquivos não estejam corrompidos.

Validade
fonte
0

Tente usar o comando init:

init 0
Stuxnet78
fonte