Как статически скомпилировать программу на NixOS?

Внешний цикл, который у вас есть, в основном

for i in {1..10}; do
    some_compound_command &
done

Это приведет к запуску десяти одновременных экземпляров some_compound_commandв фоновом режиме. Они будут запущены как можно быстрее, но не совсем "все одновременно" (т.е. если some_compound_commandзаймет очень мало времени, то первый вполне может закончиться раньше, чем начнется последний ).

Тот факт, что some_compound_commandоказывается циклом, не важен. Это означает, что код, который вы показываете, является правильным в том, что итерации внутреннегоj-цикла будут выполняться последовательно, но все экземпляры внутреннего цикла (по одному на итерацию внешнегоi-Цикл )будет запущен одновременно.

Единственное, что нужно иметь в виду, это то, что каждое фоновое задание будет выполняться в подоболочке. Это означает, что изменения, внесенные в среду (, например. изменения значений переменных оболочки, изменения текущего рабочего каталога с помощью cdи т. д. )в одном экземпляре внутреннего цикла не будут видны за пределами этого конкретного фонового задания.

Возможно, вы захотите добавить оператор waitпосле цикла, просто чтобы дождаться фактического завершения всех фоновых заданий, по крайней мере, до завершения скрипта:

for i in {1..10}; do
    for j in {1..10}; do
        run_command "$i" "$j"
    done &
done

wait
0
21.10.2020, 16:53
0 ответов

Теги

Похожие вопросы