Auto Cleanup Log - Script bash
21 tháng 9, 2023 bởi
Auto Cleanup Log - Script bash
iTricks
| Chưa có bình luận

Script sau sẽ giúp bạn tự động xóa các dòng cũ của file log khi file log quá số dòng bạn cho phép.
Nếu log của bạn quan trọng và không muốn xóa đi thì không nên sử dụng cách này, mà bạn có thể nén nó lại thành file gz bằng lệnh gzip "$file", rồi tạo 1 file log mới bằng lệnh touch "$file" 

Tạo 1 file : cleanup_logs.sh với nội dung bên dưới

#!/bin/bash# Đường dẫn đến file log
log_file1="/var/log/odoo15/odoo.log"
log_file2="/var/log/odoo16/odoo.log"
# Số dòng tối đa cho phép trong mỗi file
max_lines=300
# Hàm xử lý việc xóa các dòng cũ của một file
cleanup_log() {
    local file="$1"
    if [ -f "$file" ]; then
        num_lines=$(wc -l < "$file")
        if [ "$num_lines" -gt "$max_lines" ]; then
            # Sử dụng lệnh sed để xóa các dòng cũ trên cùng
            sed -i '1,'"$((num_lines - max_lines + 1))"'d' "$file"
        fi
    fi
}
# Gọi hàm cleanup_log cho mỗi file log
cleanup_log "$log_file1"
cleanup_log "$log_file2"

Sau đó bạn dùng crontab để chạy script trên một cách tự động tùy theo yêu cầu của bạn

Gõ lệnh: crontab -e

0 0 * * 0 /etc/auto/cleanup_logs.sh

mã trên là chạy script trong file cleanup_log.sh mỗi tuần.

Chú ý đường dẫn(pwd) của file cleanup_logs.sh 


Đăng nhập để viết bình luận