扫描存储(PB)文件

工具说明

1
2
3
4
5
6
7
1. SGE(Sun Grid Engine)
SGE时一款作业调度系统,其组成部分有node(单台或多台)、后台程序(即master、execd)、队列(queue)、用户命令(提交、查看、修改等功能)
2. stat命令(主要用于查看系统文件的状态信息)
本文使用:%g,%F,%G,%u,%U,%s,%S,%x,%z
3. awk(用于处理输出的字符串获得自己需要的字符串)
4. rg(ripgrep)
rg是一个用Rust实现的命令行搜索工具,可以通过正则来搜索当前目录的值。默认情况下ripgrep会跳过隐藏的文件

扫描脚本函数以及并发任务生成和投递

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
# 通过脚本传进来的参数进行判断,当然也可以定义一个变量来接收位置变量
function get_script(){
if [[ $1 == "value1" ]]; then
nj="/XXXX"
elif [[ $1 == "value2" ]]; then
nj="/XXXX"
elif [[ $1 == "value3" ]]; then
nj="/XXXX"
else
echo "Please use : value1 | value2 | value3"
fi
xx_data_dir="/XXXX/home/XXXX/data/"
xx_public_dir="/XXXX/home/XXXX/public/"
declare -a xx_array1
declare -a xx_array2
xx_array1=`cd $nj && ls -l | grep "^d" | awk '{print $NF}'`
for i in $xx_array1
do
xx_array2=`cd $nj/$i && ls -l | grep "^d" | awk '{print $NF}'`
for j in $xx_array2
do
file_sh_name=`echo $i$j | awk '{gsub(/\//,"_",$nj)}{print $0}'`
echo "rg --files $nj/$i/$j|xargs -I {} stat -c "%n####%U####%G####%s####%x####%z" {} &> $xx_data_dir$1$file_sh_name.txt" > $xx_public_dir$1$file_sh_name.sh
done
done
sleep 1m
}
#通过循环语句进行任务投递
function send_task(){
declare -a script
script_dir='/XXXX/home/XXXX/public/$1/'
script=`ls -l /XXXX/home/XXXX/public/$1/ | grep -v "total" | awk '{print $NF}'`

for scr_list in $script
do
qsub -l vf=0,p=0 $script_dir$scr_list
sleep 1m
done
}
# 执行函数
get_script $1
send_task $1