2013-11-08 4 views
2

Похоже на тривиальную проблему, но я не нашел решения. У меня есть несколько файлов журналов в установке php на Debian/Linux, которые имеют тенденцию расти совсем немного, и я хотел бы обрезать каждую ночь до последних 500 строк или около того. Как это сделать, возможно, в оболочке и применить команду к * log?Обрезка файлов журнала linux

Спасибо, Фабрицио

ответ

3

Для этого, я хотел бы предложить использовать logrotate с конфигурацией по своему вкусу, а не программировать свой собственный сценарий.

0

Если вы хотите сохранить историю старых файлов, вам необходимо зарегистрироваться logrotate.

В противном случае, это может быть сделано тривиально с помощью командной строки:

LOGS="/var/log" 
MAX_LINES=500 

find "$LOGS" -type f -name '*.log' -print0 | while read -d '' file; do 
    tmp=$(mktemp) 
    tail -n $MAX_LINES $file > $tmp 
    mv $tmp $file  
done 
1

Там может быть более элегантный способ сделать это программно, но можно использовать tail и для цикла, для этого:

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