shell 脚本 将top -d 3600的 输出定向到top.log中,当top.log的size大于10M时,写入下一个文件,当该文件夹下数量大于二时,删除日期早的,写入新文件
时间: 2024-03-17 20:46:06 浏览: 57
枚举文件夹下所有的文件,文件数量数量超过一定数目后,自动删除较早的文件
您可以使用以下 shell 脚本来实现此功能:
```bash
#!/bin/bash
LOG_DIR="/path/to/log/dir"
LOG_FILE_PREFIX="top"
MAX_SIZE=10485760 # 10MB
MAX_FILES=2
# Create log directory if it doesn't exist
if [ ! -d "$LOG_DIR" ]; then
mkdir -p "$LOG_DIR"
fi
# Get list of existing log files sorted by modification time
log_files=($(ls -1t "$LOG_DIR"/"$LOG_FILE_PREFIX"*.log))
# Check number of log files and delete oldest if necessary
if [ "${#log_files[@]}" -ge "$MAX_FILES" ]; then
rm "${log_files[-1]}"
fi
# Write top output to log file
while true; do
# Get current log file size
log_size=$(wc -c < "$LOG_DIR"/"$LOG_FILE_PREFIX".log)
# Check if log file has reached max size
if [ "$log_size" -ge "$MAX_SIZE" ]; then
# Generate new log file name
timestamp=$(date +"%Y%m%d%H%M%S")
new_log_file="$LOG_DIR"/"$LOG_FILE_PREFIX"_"$timestamp".log
# Rename current log file and create new one
mv "$LOG_DIR"/"$LOG_FILE_PREFIX".log "$new_log_file"
touch "$LOG_DIR"/"$LOG_FILE_PREFIX".log
fi
# Append top output to log file
top -d 3600 >> "$LOG_DIR"/"$LOG_FILE_PREFIX".log
done
```
这个脚本会在指定的日志目录下创建名为 `top.log` 的日志文件,并将 `top -d 3600` 命令的输出定向到该日志文件中。当日志文件大小超过 10MB 时,会将当前日志文件重命名为带有时间戳的文件名,并创建一个新的 `top.log` 日志文件,继续将 `top -d 3600` 命令的输出定向到新的日志文件中。最多只保留两个日志文件,如果超过两个,则会删除最早的一个。
阅读全文