yes
명령을 사용하는 것이 궁금 할 때이 의견을 우연히 발견하고 실행하려고했습니다.
yes $(yes yes)
내가 이해 한 바에 따르면, 이것은 단순히 무한 시퀀스를 yes
출력해야하지만 대신 아무것도 출력하지 않고 몇 초 후에 그래픽 터미널이 충돌합니다. (tty1에서 실행하면 얼마 후 로그인 프롬프트가 표시됩니다.)
여기서 무슨 일이 일어나고 있습니까?
답변
이미 실행하기에 충분해야합니다
echo $(yes yes)
는 $(...)
이 모든 출력을 완료하고 캡처 할 때까지 내부 명령을 실행합니다. -이제 yes
오랜 시간 동안 실행하고 많은 출력을 생성함에 따라 bash는 결국 메모리가 부족하고 충돌합니다.
답변
쉘을 닫는 오류에 대한 메시지를 보려면 서브 쉘을 실행해야합니다.
$ sh
$ kill -9 $$
Killed
$
$ sh
$ yes $(yes yes)
sh: xrealloc: cannot allocate 18446744071562067968 bytes
$