如何在后台运行无限循环

如何在后台运行无限循环

如何在后台运行无限循环,同时继续执行脚本?

“脚本”示例:

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

答案1

&循环内部,它将在后台启动一个新进程,并尽可能快地再次执行该进程,而无需等待第一个进程结束。相反,我认为您想将循环放入后台,因此将 放在&循环本身上,就像

while /bin/true; do
    something_in_the_background
done &

# more stuff

答案2

while : ; do something ; done &
  • 早期的 Bourne shell 没有trueandfalse作为内置命令。true相反,只是简单地别名为:, 和false类似的东西let 0

  • &在该行的末尾背景该过程

  • :是空命令,如“help :”所述:No effect; the command does nothing. Exit Status: Always succeeds.

答案3

将睡眠时间设置为 0.1 或 0.01 秒将使您的循环对 CPU 更加友好。但正如 Eric Renouf 所指出的, & 应该位于循环的末尾,而不是循环内部。

相关内容