Данные добавляются в файл, и когда их размер превышает 200 МБ, необходимо создать новый файл.

Данные добавляются в файл, и когда их размер превышает 200 МБ, необходимо создать новый файл.

Я написал скрипт, который запускается ps -efкаждые 5 минут, и вывод добавляется в файл. Я хочу, чтобы новый файл создавался, когда текущий размер файла превышает 200 МБ. Может ли кто-нибудь мне помочь с этим?

решение1

Вы можете добавить что-то подобное в свой скрипт, прежде чем добавлять файл.

FILE="your-file"
if test $(( $(stat  -c"%s" "$FILE") )) -ge "$(( 200*1024*1024 ))"; then
    mv "$FILE" "$FILE-$(date +"%FT%T")"
fi

решение2

Проверьте logrotateпрограмму. Сначала создайте файл конфигурации, скажем, /home/john/logrotate/ps.conf, с таким содержимым: (предполагая, что вы выгружаете свой psвывод в /home/john/logrotate/log/ps.log)

/home/john/logrotate/log/ps.log {
    size = 200MB
    missingok
    notifempty
}

Затем вы можете создать crontab для запуска /usr/bin/logrotate /home/john/logrotate/ps.conf. Смотритемужчинадля получения дополнительных опций, таких как сжатие.

Связанный контент