PERIGO!
Não execute este comando para 'testá-lo', a menos que você esteja preparado para uma falha e / ou forçar a reinicialização do sistema.
Eu estava no meu Virtualbox executando o 12.04 tentando compilar um aplicativo e, enquanto esperava, tive a chance de encontrar um fórum em que um comentário dizia:
Experimente o
:(){ :|: & };:
Fun também e não precisa de raiz.
Sem pensar, corri no meu terminal gnomo. Isso fez meu 12.04 (no Virtualbox) ficar tão ruim que tive que desligá-lo.
Minha pergunta é o que esse comando faz?
: () {: |: &} ;:
command-line
blade19899
fonte
fonte
Respostas:
Isso é chamado de fork fork .
:()
significa que você está definindo uma função chamada:
{:|: &}
significa executar a função:
e enviar sua saída para a:
função novamente e executá-la em segundo plano.O
;
é um separador de comandos.:
executa a função pela primeira vez.Essencialmente, você está criando uma função que se chama duas vezes a cada chamada e não tem como se finalizar. Ele continuará dobrando até você ficar sem recursos do sistema.
Correr no Virtualbox era bastante sensato, caso contrário você teria que reiniciar o seu PC.
fonte
;
é um separador de comandos. A{ ... }
parte é simplesmente o conteúdo da função.|
e o que&
faz. Eu entendo que você forneceu o funcionamento da função, mas eu queria fazer saber o que estes dois fazemEsta é uma bomba de garfo chamada implementada no shell.
da wikipedia:
fonte
Esse comando é uma versão bem conhecida da bomba de forquilha
Isso faz com que o computador fique sem memória, bifurcando um processo infinitamente. Existem algumas salvaguardas que você também pode usar:
fonte
De acordo com isso
:(){ :|: & };:
é chamadoAconselhado a não executar isso, pode causar danos ao hardware, pois causa a execução em loop, pode causar aquecimento facilmente em laptops.
Outro link explica através de capturas de tela aqui .
fonte
Ele é chamado de " fork-bomb ", como explicado acima, e outra maneira de fazer isso seria usar a execução em segundo plano em vez da tubulação:
fonte