Получение конкретного "Недостаточно памяти!" сообщение при запуске очень сложного Perl-скрипта
Я запускаю Perl-скрипт, который анализирует информацию из примерно 7000 HTML-файлов. Наверное, не совсем актуально, но я просто пытаюсь описать, что это, ну, в общем, много чего делает. Первоначально я попросил их просто распечатать информацию, которую я искал, прямо в терминал, а затем вставил ее в свою электронную таблицу. Тем не менее, примерно на полпути мне сказали, что у меня недостаточно памяти, и это прекратилось.
Out of memory! - ничего больше
Я гуглил, но не смог найти ничего такого, что говорило бы о терминале, специально напечатающем это. Я мог найти сообщения, связанные с Linux, просто о том, что обычно не хватает памяти, но я хотел быть уверен. Я пытался, но безуспешно, заставить его записывать в файл.txt вместо распечатки в терминал.
Как я могу это исправить и позволить скрипту Perl работать до конца?
1 ответ
Вместо того, чтобы бороться с оптимизацией perl, используйте обертку, подобную этой:
wrapper.sh
#!/bin/bash
for i in `ls $1`
do
echo $i
<perl script> $i
done
Используйте это следующим образом:
./wrapper.sh *.html
Таким образом, вместо того, чтобы скрипт perl просматривал 7 тыс. Файлов за один прогон, это новый старт для каждого файла.
Я также предлагаю вам перенаправить вывод в файл вместо экрана. Вполне возможно, что терминал (xterm, gnome-term и т. Д.) Израсходовал всю вашу память, если установлен неограниченный буфер / строки.