Як запустити нескінченну петлю на задньому плані


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
Скажіть, будь ласка, про намір запустити нескінченну петлю на задньому плані?
нейрон

Відповіді:


31

З &внутрішньої петлі він почне новий процес у фоновому режимі і так само швидко, як зможе зробити це знову, не чекаючи, коли перший процес закінчиться. Натомість я думаю, що ви хочете поставити цикл на задній план, тому надіньте &цикл, як

while /bin/true; do
    something_in_the_background
done &

# more stuff

10
while : ; do something ; done &
  • Раніше снарядів Борна не було trueі falseяк вбудовані команди. trueзамість цього просто псевдонім :, а falseщо - щось на зразок let 0.

  • & в кінці рядка фоновий процес

  • : - це команда null, як описано в "help:": No effect; the command does nothing. Exit Status: Always succeeds.

2
Ваша відповідь буде значно покращена, пояснивши її - ОП може не знати, що :означає, і, ймовірно, не знає, чому ви переїхали &до кінця. Крім того, зміна інтервалу, щоб зробити його однолінійним, просто заплутує - це дуже помітна зміна, але абсолютно неважлива.
derobert

Редагував публікацію відповідно до ваших відгуків
Джон

0

Якщо увімкнути сон, скажімо, 1 або 0 секунд, це зробить ваш цикл більш сприятливим для процесора. Але, як вказував Ерік Реноф, & повинен бути в кінці циклу, а не всередині нього.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.