Tập lệnh bash của tôi tạo ra một tệp nhật ký. Bây giờ tôi muốn thực hiện một số tập tin đăng nhập xoay.
Giả sử lần đầu tiên được gọi là somelog.log, lần tiếp theo được đổi tên thành somelog.log.1 và tệp nhật ký mới somelog.log.
Lần thứ ba đăng nhập mới là somelog.log một lần nữa, nhưng somelog.log.1 được đổi tên thành somelog.log.2 và cũ somelog.log để somelog.log.1.
Tôi sẽ có thể cấp tối đa là ví dụ 5.
Điều này được thực hiện trước đó (tập lệnh mẫu), mọi đề xuất. Tôi đánh giá cao bất kỳ lời khuyên nào.Xoay tập tin nhật ký tập lệnh Bash
7
A
Trả lời
2
Hãy thử chức năng bash này, phải mất hai tham số:
- số megabyte tối đa các tập tin được vượt quá để được luân chuyển (nếu không được phép bị ảnh hưởng)
- đường dẫn đầy đủ của tên tập tin.
nguồn:
function rotate() {
# minimum file size to rotate in MBi:
local MB="$1"
# filename to rotate (full path)
local F="$2"
local msize="$((1024*1024*${MB}))"
test -e "$F" || return 2
local D="$(dirname "$F")"
local E=${F##*.}
local B="$(basename "$F" ."$E")"
local s=
echo "rotate msize=$msize file=$F -> $D | $B | $E"
if [ "$(stat --printf %s "$F")" -ge $msize ] ; then
for i in 8 9 7 6 5 4 3 2 1 0; do
s="$D/$B-$i.$E"
test -e "$s" && mv $s "$D/$B-$((i+1)).$E"
# emtpy command is need to avoid exit iteration if test fails:
:;
done &&
mv $F $D/$B-0.$E
else
echo "rotate skip: $F < $msize, skip"
fi
return $?
}
0
Tôi đã chỉ cần thực hiện một kịch bản bash cho rằng: https://github.com/lingtalfi/logrotator
Nó cơ bản kiểm tra kích thước tập tin đăng nhập của bạn, và nếu nó vượt quá một ngưỡng tùy ý, nó sao chép tệp nhật ký vào thư mục nhật ký.
Đó là cron thân thiện, hoặc bạn có thể sử dụng nó theo cách thủ công.
Một lệnh điển hình trông như thế:
> ./logrotator.sh -f private/log -m {fileName}.{datetime}.txt -v
Các vấn đề liên quan
- 1. Tập lệnh Bash, kiểm tra lỗi, ghi nhật ký
- 2. Tập lệnh Bash để lưu trữ các tệp nhật ký
- 3. Thực hiện một tập lệnh bash khi tạo tập tin
- 4. Tập lệnh Bash - Đọc tập tin nhị phân
- 5. Bash - Thoát tập lệnh mẹ từ tập lệnh con
- 6. Viết nhật ký vào tập tin
- 7. Chạy tập lệnh bash từ tập lệnh R
- 8. dòng lệnh exec từ tập tin trong bash
- 9. Tập lệnh Bash hoặc Bourne?
- 10. Tự xóa tập lệnh bash
- 11. Ghi nhật ký và quay các tập tin bằng Python
- 12. tập tin wget và gửi cho bash
- 13. Tệp nguồn trong tập lệnh bash
- 14. Đoạn mã BASH: tập tin whiptail chọn
- 15. Giữ một tập tin mở mãi mãi trong một tập lệnh bash
- 16. Tập lệnh Bash để thêm một số ngẫu nhiên vào tất cả các tập tin
- 17. Nhận MSBuild để xuất tập tin vào nhật ký?
- 18. Tập tin cấu hình ghi nhật ký Python
- 19. tập tin nhật ký tăng cường không được ghi vào
- 20. Tập lệnh tự động để nén nhật ký IIS?
- 21. Bản ghi nhật ký tập lệnh tùy chỉnh Teamcity
- 22. Lỗi Standard_in trong tập lệnh bash
- 23. Tập lệnh Bash là gì: = cho?
- 24. Chạy tập lệnh bash shell trong java
- 25. bash: truyền đối số tập lệnh
- 26. Xuất JSON từ tập lệnh Bash
- 27. Chạy tập lệnh bash từ Windows PowerShell
- 28. Truy cập biến trong tập lệnh bash
- 29. Biến tập lệnh bash nội tuyến
- 30. Fool python's os.isatty từ tập lệnh bash
người đàn ông [logrotate] (http://linux.die.net/man/8/logrotate)? –
Đã được trả lời. [tại đây] [1] [1]: http://stackoverflow.com/questions/3690936/change-file-name-suffixes-using-sed/3691279#3691279 –