以下回复参考:皆我百晓生、券券喵儿等免费微信小程序作答:
你可以使用Shell脚本来实现这些需求。以下是一个简单的脚本示例,可以满足你的需求:
#!/bin/bash
LOG_DIR="/var/log/" # 日志文件目录
THRESHOLD_SIZE=100M # 日志文件大小阈值
COMPRESSION_LOG="${LOG_DIR}compression_log.txt" # 压缩日志记录文件
ERROR_LOG="${LOG_DIR}compression_error_log.txt" # 错误日志记录文件
# 检查日志文件并压缩
check_and_compress() {
local log_file="$1"
local threshold="${2}"
local log_size=$(stat -c "%s" "${log_file}") # 获取文件大小(字节)
if [ "${log_size}" -gt "${threshold}" ]; then # 如果文件大小超过阈值
echo "$(date '+%Y-%m-%d %H:%M:%S') - Compressing ${log_file}" >> "${COMPRESSION_LOG}" # 记录开始压缩的时间
gzip "${log_file}" # 压缩文件
if [ $? -eq 0 ]; then # 检查压缩是否成功
echo "$(date '+%Y-%m-%d %H:%M:%S') - Compressed ${log_file} successfully." >> "${COMPRESSION_LOG}" # 记录成功压缩的时间
rm "${log_file}" # 删除原始日志文件
else
echo "Error compressing ${log_file}: $!" >> "${ERROR_LOG}" # 记录压缩失败的信息和错误代码
fi
fi
}
# 遍历日志目录中的所有文件并检查大小
find "${LOG_DIR}" -type f -exec bash -c 'check_and_compress "{}" "${THRESHOLD_SIZE}"' \;
这个脚本首先定义了日志目录、大小阈值、压缩日志记录文件和错误日志记录文件的路径。然后定义了一个函数 check_and_compress
来检查并压缩单个日志文件。最后,使用 find
命令遍历日志目录中的所有文件并调用 check_and_compress
函数来处理每个文件。如果在压缩过程中遇到错误,错误信息和错误代码将被记录到 compression_error_log.txt
文件中。成功压缩的文件和压缩时间将被记录到 compression_log.txt
文件中。