2009-12-10 12 views
2

경고 : 악성 코드. 이것을 시도하지 마십시오. 교육 목적으로 만 여기에 나타납니다.왜이 Linux 쉘 명령이 시스템을 정지 시키나요?

쉘에이 셸 조각을 입력하면 시스템이 중지 된 것 같습니다. 그 이유는 무엇입니까? 당신이 할 수있는

:() { :|:& }; :  # 

유일한 것은 당신이 몇 가지 설명

+1

이 코드가 악의적이라는 것을 분명히해야합니다. –

+0

동의. 포크 폭탄이야. – zen

+3

나는 진짜 질문이 아니라고 생각한다. 이 악성 코드가 작동하는 방식은 틀림없이 유효한 질문입니다. – caf

답변

20

그것은 끝없는 순환의 김미 수 .. 시스템을 다시 부팅합니다. ':'라는 함수를 정의하고 있습니다.이 함수는 자체를 호출하고 자체 출력을 다른 인스턴스로 파이프하고 라운드를 이동합니다. 파이프 라인은 또한 '&'덕택에 백그라운드에서 실행되고 실행됩니다. 마지막으로 ':'가 실제로 호출을 시작합니다. 세미콜론은 함수를 정의하는 이전 명령을 끝내고, 개행도 여기에서 수행합니다.

이 그것을 그것은 거의 IPC 자원의 대량 사용과 함께 포크 폭탄,의

foo() { 
    foo | foo & 
} 
foo 

를 무엇이며, 좀 더 명확하게합니다.

+2

+1 질문 및 답변; 여기에있는 질문 클로저는 때로는 지나치게 열정적 인 것처럼 보입니다. –

관련 문제