Я пытаюсь выполнить некоторые команды в паралели, в фоновом режиме, используя bash. Вот что я пытаюсь сделать:
forloop {
//this part is actually written in perl
//call command sequence
print `touch .file1.lock; cp bigfile1 /destination; rm .file1.lock;`;
}
Часть между backticks (``) порождает новую оболочку и последовательно выполняет команды. Дело в том, что управление исходной программой возвращается только после выполнения последней команды. Я хотел бы выполнить весь оператор в фоновом режиме (я не ожидаю никаких значений вывода/возврата), и я бы хотел, чтобы цикл продолжал работать.
Вызывающая программа (та, которая имеет цикл) не заканчивается, пока не закончится все порожденные оболочки.
Я мог бы использовать потоки в perl, чтобы создавать разные потоки, которые вызывают разные оболочки, но это кажется излишним...
Можно ли запустить оболочку, дать ей набор команд и сказать, чтобы она переходила на задний план?