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 -b -i 1 >> $TOP_DIR/top.log hogs -i 1 >> $HOGS_DIR/hogs.log pidin a >> $PIDIN_A_DIR/pidin.log sleep 10 done我想再此基础上,将每次文件名修改为启动脚本的次数,当每个文件夹的数量超过2时,删除时间早的文件
时间: 2024-03-18 20:42:32 浏览: 211
可以使用一个计数器来记录脚本启动的次数,并将其作为文件名的一部分。同时,可以在循环中添加删除旧文件的逻辑,以保持文件夹中的文件数量不超过 2。具体实现可以参考以下代码:
```
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 $HOGS_DIR $PIDIN_A_DIR
# 设置计数器初始值为1
count=1
while true; do
# 将计数器的值作为文件名的一部分
top -b -i 1 >> $TOP_DIR/top-$count.log
hogs -i 1 >> $HOGS_DIR/hogs-$count.log
pidin a >> $PIDIN_A_DIR/pidin-$count.log
# 计数器自增
((count++))
# 删除旧文件,保持文件夹中的文件数量不超过 2
if [ $(ls $TOP_DIR | wc -l) -gt 2 ]; then
# 删除时间最早的文件
rm $TOP_DIR/$(ls -t $TOP_DIR | tail -1)
fi
if [ $(ls $HOGS_DIR | wc -l) -gt 2 ]; then
# 删除时间最早的文件
rm $HOGS_DIR/$(ls -t $HOGS_DIR | tail -1)
fi
if [ $(ls $PIDIN_A_DIR | wc -l) -gt 2 ]; then
# 删除时间最早的文件
rm $PIDIN_A_DIR/$(ls -t $PIDIN_A_DIR | tail -1)
fi
# 等待 10 秒
sleep 10
done
```
这样,每次脚本启动时,计数器会自增,并将计数器的值作为文件名的一部分。例如,第一次启动时的文件名为 top-1.log,第二次启动时的文件名为 top-2.log,以此类推。在循环中,会检查文件夹中的文件数量是否超过 2,如果超过则删除时间最早的文件。
阅读全文