Используйте файлы из команды find в параллельных пакетах

Как и в Debian Jessie, пакет netfilter-persistent (позволяющий загружать правила iptables до запуска сети) имеет netfilter-persistent.service, который выглядит следующим образом:

# https://www.freedesktop.org/wiki/Software/systemd/NetworkTarget/
# based on the netfilter-persistent package
[Unit]
Description=netfilter persistent configuration
DefaultDependencies=no

Before=network-pre.target
Wants=network-pre.target

Wants=systemd-modules-load.service local-fs.target
After=systemd-modules-load.service local-fs.target

Conflicts=shutdown.target
Before=shutdown.target

[Service]
Type=oneshot
RemainAfterExit=yes
ExecStart=/usr/sbin/netfilter-persistent start
ExecStop=/usr/sbin/netfilter-persistent stop

[Install]
WantedBy=multi-user.target

1
10.09.2017, 05:00
1 ответ

Используя xargs, вы можете достичь определенной степени параллелизма:

find. -type d -maxdepth 1 -mindepth 1 -print0 |
xargs -t0 -n 1 -P 5 -I XX tar czf XX.tar.gz XX

Это флаг -P 5, который ограничивает количество параллельных процессов, запускаемых xargs, до пяти, в то время как -n 1используется для выполнения утилиты только с одной входной строкой за раз. С помощью -I XXмы говорим, что строка ввода, которая будет путем к каталогу, должна быть заменена на строку XXв команде.

xargsраспечатает вызовы tarпо мере их выполнения. Удалите -t, чтобы отключить это.

Пути к каталогам передаются из findс -print0и принимаются xargsс -0(, т. е. с использованием \0в качестве разделителя ), чтобы можно было использовать экзотические имена.


Как указано в ответе в другом месте на этом сайте:

Note that the bottleneck of the operation would likely be the hard drive. For that reason, even if you did split the task in two or more processes, it would not go faster unless they operate on different drives.

1
28.01.2020, 01:08

Теги

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