В настоящее время я установил настройку прокрутки терминала gnome (Правка -> Настройки профиля -> Прокрутка) на 10000 строк. Я хочу поставить галочку «Неограниченно», но боюсь, что это может привести к сбоям памяти (если я оставлю программу с большим объемом вывода работать на ночь, я бы не хотел, чтобы она из-за этого упала).
У меня есть вопросы:
Сохраняются ли эти строки прокрутки в памяти или они кэшируются в файле на диске?
Если я изменю с 10000 на 100000 или на 1 миллион, я все еще в безопасности? Какие параметры (ОЗУ, свободное место на диске, количество открытых терминалов) мне нужно учитывать)? Безопасен ли выбор Unlimited?
решение1
По-видимому, он хранится в удаленных файлах на диске, согласно очень интересным данным.Сообщение блога:
Я мог просто посмотреть, какие файлы
gnome-terminal
были открыты, так чтоlsof
это спасение. Затем я обнаружил, что он был скрытным, у него было несколько файлов, называемых/tmp/vteXYZ1tv
открытыми, но он уже удалил их. Таким образом, вы не можете видеть их при просмотре, и они будут удалены, когда программа закроется. Это имеет смысл, это означает, что когда процесс закрыт, неважно, как (по крайней мере, я думаю), пространство файлов может быть восстановлено, т. е. мы не получим оставшиеся файлы при сбое программы илиkill -9
. Однако их можно восстановить, мой способ (вероятно, есть и другие) заключался в том, чтобы сделать ,ls -l
/proc/<gnome-terminal pid>/fd
чтобы увидеть, на что они указывают. Затем вы можете сделатьcat
это, чтобы создать новый файл. Это просто дословная копия вывода терминала. Никакого сжатия. Ничего. Как оказалось, одна из моих историй терминала составляла почти 900 МБ! Но это было только после того, как случайные данные выдавались очень быстро в течение довольно долгого времени, что вряд ли произойдет при обычном использовании.
И я еще раз это подчеркну: постер работал base64 < /dev/urandom
некоторое время, проверяя увеличение использования памяти или диска — 900 МБ были бы исключительным использованием.
решение2
gnome-terminal
(на самом деле vte
) действительно сохраняет прокрутку в немедленно удаляемом файле в /tmp
(точнее: в стандартном расположении временных файлов, на которое влияет $TMPDIR
и, возможно, несколько похожих).
Этот дизайн был выбран в основном для того, чтобы неограниченная прокрутка не вызывала ошибок OOM. Диск гораздо менее вероятно заполнится, и даже если это произойдет, это менее вредно для всей системы, чем нехватка памяти.
vte-0.40
(который, скорее всего, появится в Ubuntu 15.10 WW) сожмет и зашифрует эти файлы. Это сократит требуемое хранилище примерно до трети-четверти его размера (если ваше приложение создает X объем данных в виде обычного текста, то где-то между X/4 .. X/3 — разумная оценка необходимого хранилища), а также избавит от проблемы конфиденциальности/безопасности в случае, если кто-то получит прямой доступ к жесткому диску.
Мы планируем добавить возможность сохранять прокрутку в памяти, примерно так же, как если бы вы /tmp
были на tmpfs
. Если все пойдет по плану, это появится vte-0.42
в Ubuntu 16.04 XX LTS. Хотя я не могу этого обещать.