QNX_LOG_DIR="/qnxlog" TOP_DIR="$QNX_LOG_DIR/top" HOGS_DIR="$QNX_LOG_DIR/hogs" PIDIN_A_DIR="$QNX_LOG_DIR/pidin" # 创建输出目录,如果不存在 mkdir -p $TOP_DIR mkdir -p $HOGS_DIR mkdir -p $PIDIN_A_DIR TOP_FILE="$TOP_DIR/top-$(date +%Y%m%d-%H%M%S).log" HOGS_FILE="$HOGS_DIR/hogs-$(date +%Y%m%d-%H%M%S).log" PIDIN_FILE="$PIDIN_A_DIR/pidin-$(date +%Y%m%d-%H%M%S).log" while true do top -i 1 >> $TOP_FILE hogs -i 1 >> $HOGS_FILE pidin a >> $PIDIN_FILE sleep 10 done 当每个文件夹数量大于2时。删除较老的文件
时间: 2024-03-18 20:42:19 浏览: 116
如果你想在每个目录中保留最近的两个文件,并删除较老的文件,可以使用下面的脚本:
```
#!/bin/bash
QNX_LOG_DIR="/qnxlog"
TOP_DIR="$QNX_LOG_DIR/top"
HOGS_DIR="$QNX_LOG_DIR/hogs"
PIDIN_A_DIR="$QNX_LOG_DIR/pidin"
# 创建输出目录,如果不存在
mkdir -p $TOP_DIR
mkdir -p $HOGS_DIR
mkdir -p $PIDIN_A_DIR
while true
do
TOP_FILE="$TOP_DIR/top-$(date +%Y%m%d-%H%M%S).log"
HOGS_FILE="$HOGS_DIR/hogs-$(date +%Y%m%d-%H%M%S).log"
PIDIN_FILE="$PIDIN_A_DIR/pidin-$(date +%Y%m%d-%H%M%S).log"
top -i 1 >> $TOP_FILE
hogs -i 1 >> $HOGS_FILE
pidin a >> $PIDIN_FILE
# 删除较老的文件
cd $TOP_DIR && ls -t | awk 'NR>2' | xargs rm -f
cd $HOGS_DIR && ls -t | awk 'NR>2' | xargs rm -f
cd $PIDIN_A_DIR && ls -t | awk 'NR>2' | xargs rm -f
sleep 10
done
```
这个脚本会在每次循环中创建一个新的文件,并将输出写入该文件中。然后,使用cd命令进入每个目录,并使用ls -t命令按时间排序列出所有文件,然后使用awk命令跳过最新的两个文件,最后使用xargs命令将剩余的文件名传递给rm命令来删除它们。
阅读全文