Mauricio escreveu:
> Ontem aconteceu uma situaćão aqui na empresa curiosa. Uma das máquinas do 
> nosso datacenter perdeu o filesystem e não rodava nenhum 
> executável. A questão era como dar o reboot na máquina estando como root e 
> usando somente o bash (e seus comandos internos) e a conexão 
> ssh... alguém teria uma sugestão?
> Bom, ligamos para o condomínio e eles rebotaram a máquina para nós. Mas ficou 
> o desafio... alguém teria uma idéia? Pensei em colocar o 
> código de um executável tipo o halt numa variável e depois executá-lo. Isso 
> funcionaria???
>   

Bom, se não me engano o bash tem um kill "builtin"; como o init tem 
sempre o PID 1, então acho que rolaria algo como:

kill -SIGINT 1

De acordo com a manpage do init, o SIGINT executa como o "ctrlaltdel" do 
inittab.

*PORÉM*... o ctrlaltdel executa o /sbin/shutdown, e se ele não está mais 
acessível...
Bem, se ele deixar de executar o shutdown e ir adiante, matando os 
processos e avisando o kernel que ele pode reiniciar, beleza.
Se não...De volta à prancheta. Alguém quer tentar esse?

Bom, acho que um:
cd /proc; for i in [0-9]*; do [ "$i" == "$$" -o ] || kill -SIGINT $i; done

Ou seja, vai no /proc (já que não temos /bin/ps), e pra cada processo 
rodando, tenta dar um SIGINT nele. Nesse caso, pelo menos os aplicativos 
que já estão rodando vão morrer. Hmm mas se o init não reiniciar como no 
caso anterior, isso também não vai reiniciar a máquina, e você vai 
acabar com um sistema totalmente sem processos rodando... De volta à 
prancheta de novo.

... Hmm, não sei. Definitivamente, o init não vai me ajudar.

Acho que o esquema é mandar pro kernel um "magic sysrequest", aquela 
combinação de teclas emergencial que o kernel recebe pra desmontar os 
sistemas de arquivos, reiniciar, desligar... Você poderia alterar o INIT 
pra mandar uma mensagem dessas pro kernel...

(/me procura por kernel sysrq)

IP Tables network magic SysRq function - 
http://marek.terminus.sk/prog/ipt_sysrq.shtml

Esse cara pensou nisso antes, e a solução é melhor ';) Não precisa nem 
do SSH estar rodando. Hmm acho que vou botar nuns servidores que ficam 
nos morros por aqui.

Quem quer experimentar? ':D

HTH,
-- 
Eliphas


---------------------------------------------------------------------
Esta lista não admite a abordagem de outras liguagens de programação, como 
perl, C etc. Quem insistir em não seguir esta regra será moderado sem prévio 
aviso.
---------------------------------------------------------------------
Sair da lista: [EMAIL PROTECTED]
---------------------------------------------------------------------
Esta lista é moderada de acordo com o previsto em 
http://www.listas-discussao.cjb.net
---------------------------------------------------------------------
Servidor Newsgroup da lista: news.gmane.org
Grupo: gmane.org.user-groups.programming.shell.brazil

 
Links do Yahoo! Grupos

<*> Para visitar o site do seu grupo na web, acesse:
    http://br.groups.yahoo.com/group/shell-script/

<*> Para sair deste grupo, envie um e-mail para:
    [EMAIL PROTECTED]

<*> O uso que você faz do Yahoo! Grupos está sujeito aos:
    http://br.yahoo.com/info/utos.html

 


Responder a