С помощью GNU Parallel вы можете сделать это:
parallel NOCI.py {1} {2} {1.}{2.}.output ::: Folder1/* ::: Folder2/*
По умолчанию будет выполняться одно задание для каждого потока ЦП параллельно.
Чтобы увидеть, что будет запущено, используйте--dry-run
:
parallel --dry-run NOCI.py {1} {2} {1.}{2.}.output ::: Folder1/* ::: Folder2/*
GNU Parallel — это универсальный распараллеливатель, который позволяет легко выполнять задания параллельно на одной машине или на нескольких машинах, к которым у вас есть доступ по ssh.
Если у вас есть 32 разных задания, которые вы хотите запустить на 4 ЦП, прямой способ распараллеливания — запустить 8 заданий на каждом ЦП:
GNU Parallel вместо этого порождает новый процесс, когда он завершается -, сохраняя активность ЦП и, таким образом, экономя время:
Установка
Из соображений безопасности вам следует установить GNU Parallel с помощью вашего менеджера пакетов, но если GNU Parallel не упакован для вашего дистрибутива, вы можете выполнить персональную установку, которая не требует root-доступа. Это можно сделать за 10 секунд, сделав это:
$ (wget -O - pi.dk/3 || lynx -source pi.dk/3 || curl pi.dk/3/ || \
fetch -o - http://pi.dk/3 ) > install.sh
$ sha1sum install.sh | grep 883c667e01eed62f975ad28b6d50e22a
12345678 883c667e 01eed62f 975ad28b 6d50e22a
$ md5sum install.sh | grep cc21b4c943fd03e93ae1ae49e28573c0
cc21b4c9 43fd03e9 3ae1ae49 e28573c0
$ sha512sum install.sh | grep da012ec113b49a54e705f86d51e784ebced224fdf
79945d9d 250b42a4 2067bb00 99da012e c113b49a 54e705f8 6d51e784 ebced224
fdff3f52 ca588d64 e75f6033 61bd543f d631f592 2f87ceb2 ab034149 6df84a35
$ bash install.sh
Другие варианты установки см. вhttp://git.savannah.gnu.org/cgit/parallel.git/tree/README
Узнать больше
Посмотреть другие примеры:http://www.gnu.org/software/parallel/man.html
Посмотрите вступительные видеоролики:https://www.youtube.com/playlist?list=PL284C9FF2488BC6D1
Прохождение обучения:http://www.gnu.org/software/parallel/parallel_tutorial.html
Прочесть книгу:https://doi.org/10.5281/zenodo.1146014
Подпишитесь на список рассылки, чтобы получить поддержку:https://lists.gnu.org/mailman/listinfo/parallel
Возможно, вам нужен модуль pam _listfile .
Блок, подобный следующему в /etc/pam.d/sshd
, скорее всего, сделает то, что вы хотите:
account [success=1 default=ignore] pam_succeed_if.so quiet uid < 6000 uid > 6500
account required pam_listfile.so file=/etc/remote-hosts item=rhost sense=allow onerr=fail
Первая строка пропускает тест pam_listfile
, если UID выходит за пределы диапазона 6000 -6500. Снимите флаг quiet
, чтобы увидеть, когда выполняется этот тест. Измените его на debug
, чтобы действительно заполнить ваши журналы.
Вторая строка проверяет, присутствует ли удаленный хост пользователя в файле доступа. Вы можете изменить эту строку, чтобы использовать onerr=succeed
; если это так, вы можете удалить этот файл доступа, чтобы разрешить вход для всех пользователей в этом диапазоне UID.
И если я могу предложить модификацию вашей стратегии, вместо использования диапазона UID добавьте таких пользователей в общую группу, например. "ограниченный". Тогда вам не нужно беспокоиться о попадании всех таких пользователей в определенный диапазон UID. Вместо этого попробуйте следующий блок:
account [success=1 default=ignore] pam_succeed_if.so quiet user notingroup restrictedssh
account required pam_listfile.so file=/etc/remote-hosts item=rhost sense=allow onerr=fail
В любом случае добавьте строки в начало файла /etc/pam.d/sshd
сразу после любых других строк account
.