#!/bin/bash
# Array of root folders
folders=("a" "b")
# Search all specified root folders
for f in ${folders[@]}; do
# Descend hierarchy and retrieve modification date of each file with "stat"
find $f -type f -exec stat -f "%m,%N" {} ';' | \
# sort by date, most recent first
sort -gr | \
# extract first (most recent) file
head -1 | \
# return file name only
cut -d, -f2
done
Если вы не хотите контролировать размер файлов в реальном времени журнал, вы можете использовать logrotate
с cron
для этого.
Предполагая, что вы хотите повернуть screenlog.log
в каталоге / home / username /
, вы должны создать что-то вроде этого файла конфигурации:
screenlog-rotate.conf
:
/home/username/screenlog.log {
size 100k
}
затем либо запустите logrotate /home/username/screenlog-rotate.conf
, либо настройте его как задание cron для периодического запуска.Имейте в виду, что logrotate
по умолчанию должен запускаться как root, а файл конфигурации ( screenlog-rotate.conf
выше) также должен быть chown
от root , в противном случае он будет жаловаться на неправильные разрешения в конфигурации. Проверьте, запустив logrotate
с флагом -v
, чтобы убедиться, что он понял, что вы имели в виду.
Приведенный выше файл конфигурации прост и не будет хранить старые файлы журнала . Он просто удалит файл, если он превышает указанный размер, в то время как экран по-прежнему выводит свой журнал как обычно (я тестировал это). Если вы хотите сохранить старые журналы, вам нужно добавить rotate N
, где N
- это количество повернутых журналов, которое вы хотите сохранить.
Ознакомьтесь с man 8 logrotate
, чтобы узнать, как настроить logrotate
. Вот связанный с этим вопрос: Как ограничить размер файла журнала с помощью >>
logrotate
, кажется, включен по умолчанию в Arch Linux, но я не уверен в других дистрибутивах. Я ожидал, что по крайней мере Debian установит его по умолчанию, и его должно быть легко установить с помощью диспетчера пакетов.