GNU sort
имеет-m, который может, вероятно, выручить Вас. Давайте предположим, что у Вас есть 200 .gz-файлов, которые Вы хотите отсортировать и объединить. Затем Вы могли использовать Параллель GNU, чтобы сделать:
seq 1 200 | parallel mkfifo /tmp/{}
ls *.gz | nice parallel -j200 'zcat {} | sort >/tmp/$PARALLEL_SEQ' &
seq 1 200 | parallel -X sort -m /tmp/{} >/tmp/sorted
Если ввод-вывод является проблемой, и память не является проблемой, использование-S для первого sort
для проверки все остается в памяти. Также можно хотеть использовать lzop
каждый раз Вы пишете в диск (-compress-program=lzop): Диски часто являются ограничивающим фактором, таким образом, lzopping на лету может дать Вам дополнительную скорость. Или Вы могли сделать псевдодиск и установить-T на тот dir.
Невозможно сделать это с помощью только одной команды для каждого DNAT - если ... см. Ниже. Но можно ввести данные только один раз.
Давайте определим диапазон отметок 1024–2047 для соединений, которые получают DNAT-адрес и перенаправляют.
Одна строка с каждым условием соответствия DNAT в mangle:
iptables -t mangle -A PREROUTING -p tcp --dport 46000 -j MARK --set-mark 0x400
iptables -t mangle -A PREROUTING -p tcp --dport 46001 -j MARK --set-mark 0x401
iptables -t mangle -A PREROUTING -p tcp --dport 46002 -j MARK --set-mark 0x402
Одна команда для каждого in nat:
iptables -t nat -A PREROUTING -m mark --mark 0x400 -j DNAT \
--to-destination 172.16.8.2:46000
iptables -t nat -A PREROUTING -m mark --mark 0x401 -j DNAT \
--to-destination 172.16.8.2:46001
iptables -t nat -A PREROUTING -m mark --mark 0x402 -j DNAT \
--to-destination 172.16.8.2:46002
Одна команда для всех в фильтре:
iptables -A FORWARD -m mark --mark 0x400/0x400 -j ACCEPT
BTW: Нет необходимости указывать порт назначения для -j DNAT
, если он не изменен.
Редактировать 1:
Вы можете сделать это, если вы не разрешаете соединения явно, если вас устраивает разрешение всего, что было DNATted. В этом случае вы должны придерживаться своего
iptables -t nat -A PREROUTING -p tcp --dport 46000 -j DNAT --to-destination 172.16.8.2:46000
, но иметь только одно правило FORWARD для всех:
iptables -A FORWARD -m conntrack --ctstate DNAT -j ACCEPT