Вывод last(1)
прибывает из традиционного wtmp
файл (обычно /var/log/wtmp
). Как Вы могли бы предположить, этот файл не является записываемым обычными пользователями (на этом поле, он принадлежит root:wtmp
).
Традиционно, getty
было ответственно за поддержание wtmp
, но в эти дни это - PAM, посредством pam_lastlog.so
, который также поддерживает /var/log/lastlog
.
Если Вы - суперпользователь компьютера, можно перейти в /etc/pam.d
и прокомментируйте pam_lastlog.so
строка от того, везде, где это появляется там, как соответствующее. На моей машине это использовало только в login
файл. Конечно, если Вы - суперпользователь компьютера, можно также заменить last
и lastlog
со сценарием обертки, который делает что-то как last.orig | fgrep -v some_user
.
Если Вы не суперпользователь компьютера и сайт, Вы находитесь на использовании, эта схема, нет ничего, которое можно делать с этим. И с точки зрения законности и с точки зрения полномочий, Вы не можете мешать системе регистрировать Ваши логины и выходы из системы.
xmllint --noout 4GB.xml
Такие работы.
Это выходит из памяти также, но по крайней мере это проверяет что-то, прежде чем это умрет.
xmlint
поставка с большинством дистрибутивов или необходимо ли установить его отдельно?
– amphibient
22.02.2013, 22:39
Не пробуют его самостоятельно, но испытывают это:
xmllint --valid 4GB.xml
Это старый вопрос, но, поскольку я еще не видел, что он предложил:
Perl с XML :: Twig
может обрабатывать большие файлы XML благодаря имению метода «очистки», который отбрасывает в памяти данных, как вы идете.
use strict;
use warnings;
use XML::Twig;
my $twig = XML::Twig->new(
twig_handlers => {
_all_ => sub { $_->purge }
}
)->parsefile( 'my_xml_file.xml' );
Обработчик _ALL_
_ALL_
запускается каждый элемент веточки и отбрасывает данные памяти. Это важно на файле 4G, потому что след памяти XML составляет около 10x. Но это будет бросать предупреждение и прервать, если XML не сложно сформирован:
mismatched tag at line 12, column 27, byte 274 at C:/Perl/lib/XML/Parser.pm line 187.
(но имейте в виду, потому что он прерваний, он только покажет вам только первым .
все равно работает на моем (намного меньше 4G) данных образца.