现在有两个shell脚本,脚本A的功能是通过adb shell logcat 将log导入到log.txt中,当log.txt的大小大于1G 时,将log导入到log2.xt文件,log2.txt大于1G时,将log导入log3.txt,依次类推。脚本B的功能时通过grep 检测脚本A生成的文件当检测到F DEBUG 关键字时,停止脚本A的运行。并删除除检测到关键字之外的所有log文件
时间: 2023-11-22 22:52:46 浏览: 134
shell脚本功能
脚本A:
```bash
#!/bin/bash
# 初始文件名为log.txt
file_name="log.txt"
# 初始文件大小为0
file_size=0
while true
do
# 获取文件大小
file_size=$(du -k "$file_name" | cut -f1)
# 如果文件大小超过1G,则新建一个文件
if [ $file_size -gt 1048576 ]
then
# 获取当前文件编号
file_num=$(echo "$file_name" | grep -o '[0-9]*' | tail -1)
# 新建下一个文件
file_name="log$((file_num + 1)).txt"
fi
# 导入log到文件中
adb shell logcat >> "$file_name"
done
```
脚本B:
```bash
#!/bin/bash
# 监测的关键字
keyword="F DEBUG"
# 检测log文件中是否包含关键字
function check_log() {
if grep -q "$keyword" "$1"; then
echo "Found keyword $keyword in $1"
return 0
else
echo "Keyword $keyword not found in $1"
return 1
fi
}
# 循环检测log文件
while true
do
# 获取所有以log开头的文件名
log_files=$(ls log*.txt 2>/dev/null)
# 如果没有log文件,则等待一段时间后再次检测
if [ -z "$log_files" ]
then
sleep 10
continue
fi
# 检测每个log文件是否包含关键字
for log_file in $log_files
do
check_log "$log_file"
# 如果包含关键字,则删除其他log文件,并停止脚本A的运行
if [ $? -eq 0 ]
then
rm log*.txt 2>/dev/null
killall -SIGINT scriptA.sh
exit 0
fi
done
# 等待一段时间后再次检测
sleep 10
done
```
阅读全文