백그라운드에서 무한 루프를 실행하는 방법


17

스크립트 실행을 계속하면서 백그라운드에서 무한 루프를 어떻게 실행할 수 있습니까?

"스크립트"예 :

while true; do something_in_the_background; done

do_something_while_the_loop_goes_on_in_the_background

for 1 2 3; do somethingelse; done

exit 0

&잠시 후에 (시스템에 통지 ) 전체 시스템이 충돌하는 것 같습니다.

while true; do
  something_in_the_background &
done

do_something_while_the_loop_goes_on_in_the_background

for 1 2 3; do somethingelse; done

exit 0

많은 프로세스를 만드는 것은 놀라운 일이 아닙니다.
Ed Heal

포크 폭탄에 대한 지시?
Baazigar

1
백그라운드에서 무한 루프를 실행하는 의도를 알려주시겠습니까?
neuron

답변:


31

으로 &루프 내부는 백그라운드에서 새 프로세스를 시작하고 빨리 그것을 끝으로 첫 번째 프로세스를 기다리지 않고 다시 그것을 할 수있다. 대신 당신이 배경으로 루프를 데려 가고 싶다는 생각, 그래서를 넣어 &루프 자체 등에

while /bin/true; do
    something_in_the_background
done &

# more stuff

10
while : ; do something ; done &
  • 이전의 Bourne 쉘은 없었 truefalse같은 내장 명령. true대신 :에 및 false에 비슷한 별칭이 지정되었습니다 let 0.

  • & 라인의 끝에 프로세스 배경

  • : "help :"에 설명 된대로 널 명령입니다. No effect; the command does nothing. Exit Status: Always succeeds.

2
OP는 설명을 통해 크게 개선 될 것입니다. OP는 무슨 :의미 인지 알지 못하고 왜 &끝까지 옮겼는지 모를 수도 있습니다 . 또한 간격을 하나의 라이너로 변경하는 것은 혼란 스럽습니다. 이는 눈에 잘 띄지 만 완전히 중요하지 않은 변경입니다.
derobert

리뷰에 따라 게시물을 편집
John

0

.1 또는 .01 초의 절전 모드를 설정하면 루프가 더 CPU 친화적입니다. 그러나 Eric Renouf가 지적한 것처럼 &는 루프 내부가 아니라 루프의 끝에 있어야합니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.