Не могли бы вы также использовать совершенно другое приложение, например kdb + ?
(его 32-разрядная версия бесплатна - as-in-beer с ограничением памяти 4 ГБ)
Некоторые основы:
Загрузка файла в виде числового списка с одной колонкой.
flip (enlist "I"; ",") 0: hsym `$" / path / to / input "
Применение функции cross
.
крестик a: ...
q
(язык kdb +) может быть довольно кратким, но это также означает присвоение переменных (например, a: 42
для установки 42
на a
) можно назначить и использовать упорядоченным образом. Здесь мы назначаем входной файл переменной a
, чтобы мы могли пересечь сам
. Подготовьте строковый вывод.
"," 0: перевернуть ...
0:
используется здесь для подготовки результатов в виде строк, разделенных запятыми. Запись в выходной файл.
(hsym `$" / путь / к / выходу ") 0:", "...
()
вокруг левого аргумента 0:
, чтобы функционально использовать для hsym
явный. Наконец, 0:
здесь используется для третьего времени записи в файл. Собираем все вместе:
(hsym`$"/path/to/output")0:","0:flip a cross a:flip(enlist"I";",")0:hsym`$"/path/to/input"
А теперь плохие новости ...
Ограничение 4 ГБ ОЗУ 32-разрядной бесплатной версии обрабатывает только до 6000 строк . ..
q)\ts (hsym`$"output6k.txt")0:","0:flip a cross a:flip(enlist"I";",")0:hsym`$"test6k.txt"
23428 3378126736
q)count distinct flip (enlist "I";",") 0:hsym`$"test6k.txt"
6000
\ ts
показывает, что затраченное время составляет чуть менее 24 секунд, при этом используется почти 3,4 ГБ памяти.
( Я решил все же опубликовать это в качестве ответа, чтобы мои усилия не пропали даром ... )
Была аналогичная проблема со сценариями запуска/отключения ssh (без использования selinux ), пока я не нашел этот вопрос.
Хотя вопрос довольно старый, я решил его, изменив следующие параметры песочницы в определении службы:
ProtectSystem=true
#ProtectHome=true
ProtectHome=read-only
Возможно, это поможет кому-то еще. Дополнительную информацию можно найти здесь .
У меня также недавно была эта проблема, и оказалось, что selinux
. Вот что вы можете сделать, чтобы смягчить:
cd /etc/openvpn
mkdir -p scripts
chown -R root:root scripts
chmod 0700 scripts
cd scripts
# create up and down scripts here
# placing scripts in this directory is important!!
# restorecon must be run
restorecon -R /etc/openvpn/scripts/
setsebool openvpn_run_unconfined on
Короче говоря, selinux имеет предустановленную конфигурацию, которая позволяет запускать сценарии up и down, если они размещены в /etc/openvpn/scripts. Как только скрипты будут помещены в этот каталог, запуск restorecon установит правильные флаги selinux для ваших скриптов, а установка sebool на on позволит запускать скрипты up и down.