Во-первых, вы можете захотеть взглянуть на использование screen
вместо того, nohup
чтобы заставить сеанс пережить разрыв соединения. screen
дает вам виртуальный терминал, к которому вы можете вернуться позже. Основное назначение - screen yourcommand
выполнить yourcommand
и screen -DR
автоматически подключиться к существующему сеансу или создать новый, если такового не существует. Просто запуск экрана без аргумента также дает вам подсказку внутри «экрана», который вы можете использовать.
Во-вторых, вы можете заглянуть в GNU Parallel для параллельных заданий. Возможно, вы не захотите запускать больше процессов, чем у процессорных ядер, из-за уменьшения отдачи и перегрузки диска. Подходящей командой для вас может быть следующая команда, которая, опять же, вам придется запустить внутри экрана, чтобы он выдержал отключение.
ls FileDirectory/Input_* | parallel -j 8 --workdir $PWD ./Executable {}
Файлы, которые вы хотите обработать, перечислены и переданы по конвейеру, в parallel
котором указывается запустить 8 параллельных заданий и работать в текущем каталоге.
Так как screen не понимает каналы и другие вещи в командах, заданных в качестве аргумента - это работа оболочки - вам нужно будет либо поместить команду в сценарий оболочки, либо дать команду sh -c для ее выполнения.
screen sh -c 'ls FileDirectory/Input_* | parallel -j 8 --workdir $PWD ./Executable {}'
или просто
screen ./runjob
где runjob
содержится:
#!/usr/bin/env bash ls FileDirectory/Input_* | parallel -j 8 --workdir $PWD ./Executable {}