На сервере Linux я хочу уменьшить размер файла журнала, который составляет несколько ГБ. Отрезание верхней половины или, может быть, первого миллиона строк подойдет.
Это довольно часто всплывает в интервью ...
Вы хотите обрезать файл, не прерывая процессы? Ценна ли какая-либо информация в файле журнала? В таком случае я обычно обнуляю файл с помощью простой строки bash.
: > /var/log/badlogfile
Это происходит в ситуациях, когда у вас может быть приложение, которое нельзя перезапустить контролируемым образом. Допустим, это приложение для финансовой торговли, и программа не может быть остановлена или перезапущена в течение торгового дня. Однако файлы журналов растут с неприличной скоростью из-за ошибки приложения. Усечение файлов журнала с помощью метода, описанного выше или ниже, может поддерживать работу системы.
Также см: http://www.cyberciti.biz/faq/truncate-large-text-file-in-unix-linux/
Вы можете поместить его в logrotate, тогда он не выйдет из-под контроля так легко
Если он активно пишется, вам действительно нечего делать с помощью усечения. Единственный вариант - очистить файл (сначала вы можете скопировать его в другое место).
echo "" >/var/log/fileYouWantToEmpty
Таким образом, файл оказывается пустым, но остается тем же файлом / индексом, поэтому он не нарушит работу программы, ведущей журнал.
Вы также можете попробовать cat / dev / null> / var / log /. Но я должен предупредить, что / dev / null не реализован в некоторых старых версиях ...