vieyahn2017 / shellv

shell command test and study
4 stars 1 forks source link

8.14 日志清理xargs参数限制,导致未完成 #69

Closed vieyahn2017 closed 3 years ago

vieyahn2017 commented 4 years ago

xargs参数数量限制

vieyahn2017 commented 4 years ago

linux的命令 xargs传值 有个上限值,估计2000左右吧

大于2000个文件,对脚本的功能有影响

vieyahn2017 commented 4 years ago

2261 1 /Log/ce_20200807-1574.log.zip 2262 1 /Log/ce_20200807-1917.log.zip 2263 1 /Log/ce_20200810-1238.log.zip 2264 1 /Log/ce_20200810-1018.log.zip 2265 1 /Log/ce_20200810-935.log.zip 2266 1 /Log/ce_20200807-1647.log.zip 2267 1 /Log/ce_20200807-1473.log.zip 2268 1 /Log/ce_20200810-1283.log.zip 2269 1 /Log/**ce_20200807-2026.log.zip 2270 796 total

2494 1 /Log/ce_20200810-1195.log.zip 2495 1 /Log/ce_20200807-1567.log.zip 2496 1 /Log/**ce_20200810-775.log.zip 2497 79 total

上面的 linux命令求和 弄成了两次, 之前的实现方式用最后一行作为结果,取到的就是那个79 了 本来应该是875 (796+79才对)

vieyahn2017 commented 4 years ago

8.14新写的 生成测试日志文件的脚本

通用的:
cd /Log/ivd/VIIDGW/run/
zip_file=$(ls -lrS  | grep Service | grep zip | awk 'END{print $9}')
log_file=$(ls | grep "Service.log$")
n=54;j=0
for ((i=1;i<=12000;i++))
do
 new=$[n+j]
 #echo $new
 cp  $zip_file $zip_file-$new.log.zip
 let j=j+1
done
for ((i=1;i<=10;i++))
do
 cp $zip_file $zip_file-$i.log.tmp
done
for ((i=1;i<=100;i++))
do
 cp $log_file $log_file-$i.log
done

先造12000个zip文件 以及别的

vieyahn2017 commented 4 years ago

du -cm 1038 . 1038 total

du -lh 1.1G .

find /Log/*path -name 'key' | xargs du -cm | grep total 671 total 366 total

find /Log/*path -name 'key' | xargs du -cm | grep total | awk '{sum += $1};END {print sum}' 1037

vieyahn2017 commented 4 years ago

find /Log/path -name 'key' | xargs du -cm | grep total 774 total 768 total 768 total 768 total 768 total 757 total 41 total

find /Log/path -name 'key' | xargs du -cm | grep total | awk '{sum += $1};END {print sum}' 4644

vieyahn2017 commented 4 years ago

之前的方式,取最后一行(汇总的total) find /Log/path -name 'key*' | xargs du -cm | awk 'END {print $1}'

明显不行