|
2年前在蓝汛的时候管理的一个CDN节点, 因某些特殊原因, 没有采用蓝汛标准的系统管理方法...
为了解决日志收集的问题, 自己写了一个shell并发的小脚本....
有时日志传输会出现一些问题, 会产生一些日志堆积, 有时上千个~...单进程传输效率实在太底下了..就写了这么一个脚本...
主要并发是, 通过判断要传的目录下有多少个文件, 当前运行的进程是多少个, 达到上限就等待...不足上限就继续传...
#!/bin/bash
# Chinacache CPIS-OPT
# $Id: upload_log.sh 2012-9-18 19:10 HGL
#---------------------------------------------------------------------------|
# @Program : upload_log.sh |
# @Version : 1.0.1 |
# @Company : china cache |
# @Dep. : CPIS-OPT |
# @Writer : Kevin.han |
# @Date : 2012-9-18 |
#---------------------------------------------------------------------------|
log_dir=/data/proclog/log/squid/access/.upload/.CPISNLA
user=123
pass=123
ftpip="1.1.1.1:21"
init=1
max=5
logdir=( `ls $log_dir` )
for (( i=0;i<=$init;i++ ));do
if [ $i -ge ${#logdir[@]} ];then
exit 0
fi
lftp ftp://${user}:${pass}@${ftpip} -e "cd 2nd_edition/temp;put -c -E ${log_dir}/${logdir[$i]} -o ${logdir[$i]}.tmp;mv ${logdir[$i]}.tmp ${logdir[$i]};exit" &
if [ $i -eq $init ];then
a=`ps -eo command|grep lftp|grep -v grep|wc -l`
while (( $a > 10 ));do
sleep 5
a=`ps -eo command|grep lftp|grep -v grep|wc -l`
done
let b=${#logdir[@]}-$i
if [ $max -ge $b ];then
let init=$init+$b
else
let init=$init+$max
fi
fi
done
|
|
|