Как я могу запустить бесконечный цикл в фоновом режиме, продолжая выполнение сценария?
Пример "скрипт":
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
Ответы:
С
&
внутри цикла он начнет новый процесс в фоновом режиме и так быстро , как это может сделать это снова , не дожидаясь первого процесса до конца. Вместо этого я думаю, что вы хотите поместить цикл в фоновый режим, поэтому поместите&
цикл какисточник
Раньше у снарядов Bourne не было
true
иfalse
встроенных команд.true
вместо этого был просто псевдоним:
, иfalse
что-то вродеlet 0
.&
в конце строки стола процесс:
является пустой командой, как описано в «help:»:No effect; the command does nothing. Exit Status: Always succeeds.
источник
:
значит, и, вероятно, не знает, почему вы переместили его&
до конца. Кроме того, изменение интервала, чтобы сделать его однострочным, просто сбивает с толку - это изменение, которое очень заметно, но совершенно неважно.Установка режима сна, скажем, на 0,1 или 0,01 секунды сделает ваш цикл более дружественным к процессору. Но, как указал Эрик Ренуф, символ & должен находиться в конце цикла, а не внутри него.
источник