2015-06-12 2 views
0

Я использую трубу, включая сортировку, чтобы объединить несколько больших текстовых файлов и удалить обманы.
У меня нет прав root, но ящик не настроен каким-либо образом разрезать привилегии без root ниже, чем debian jessie по умолчанию.
Коробка имеет 32 ГБ оперативной памяти и 16 ГБ.
Независимо от того, как я называю sort (GNU sort 8.13), он заполняет всю оставшуюся оперативную память и выдает «из памяти».
Он действительно заполняет всю память перед сбоем. Я следил за процессом наверху.
Я попытался явно установить максимальное использование памяти с параметром -S от 80% до 10% и от 8Г до 500М.
Вся труба выглядит примерно так:сортировка заканчивается из памяти

cat * | tr -cd '[:print:]' |sort {various params tested here} -T /other/tmp/path/ | uniq > ../output.txt 

всегда то же самое поведение.
Кто-нибудь знает, что может вызвать такую ​​проблему?
И, конечно, как его решить?

ответ

1

Я сам нашел проблему. Это довольно легко.
«tr -cd» [: print:] '»удаляет разрывы строк и сортирует строки по строкам.
Поэтому он пытается прочитать все файлы как одну строку, а параметр -S не может выполнять свою работу.

Смежные вопросы