С помощью GNU Parallel вы можете сделать это:
parallel analysis.C ::: *.txt
Или если у вас очень много.txt
-файлов:
printf '%s\0' *.txt | parallel -0 analysis.C
По умолчанию будет выполняться одно задание на каждый поток ЦП. Это можно настроить с помощью -j20
для 20 параллельных заданий.
В отличие от решенияparallel.moreutils
-вы можете постобработать вывод. :Вывод сериализуется, поэтому вы никогда не увидите вывод двух смешанных заданий.
GNU Parallel — это универсальный распараллеливатель, который позволяет легко выполнять задания параллельно на одной машине или на нескольких машинах, к которым у вас есть доступ по ssh.
Если у вас есть 32 разных задания, которые вы хотите запустить на 4 ЦП, прямой способ распараллеливания — запустить 8 заданий на каждом ЦП:
GNU Parallel вместо этого порождает новый процесс по завершении одного из них -, сохраняя активность ЦП и тем самым экономя время:
Установка
Из соображений безопасности вам следует установить GNU Parallel с помощью вашего менеджера пакетов, но если GNU Parallel не упакован для вашего дистрибутива, вы можете выполнить персональную установку, которая не требует root-доступа.Это можно сделать за 10 секунд, сделав это:
(wget -O - pi.dk/3 || curl pi.dk/3/ || fetch -o - http://pi.dk/3) | bash
Другие варианты установки см. в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
По крайней мере, в Debian 10 (и, вероятно, также в Ubuntu )есть сценарии в каталоге /lib/systemd/system-sleep/
, которые будут выполняться с параметром pre
при переходе в спящий режим и с post
при пробуждении.
Это означает, что вы можете создать каталог /etc/systemd/system-sleep/
для своих собственных настроек и поместить туда свои собственные скрипты.
Ваш скрипт может выглядеть, например, так:
Имя файла:/etc/systemd/system-sleep/workaround-script
Содержание:
#!/bin/bash
PATH=/sbin:/usr/sbin:/bin:/usr/bin
case "$1" in
pre) systemctl stop ckb-next-daemon.service
# add here any other commands if needed to fully unload the CKB-Next driver
exit 0
;;
post) systemctl start ckb-next-daemon.service
exit 0
;;
*) exit 1
;;
esac