生成随机大小的临时文件
程序测试中需要在每个计算节点的临时目录下生成临时文件,临时文件的大小随机,以验证程序的正确和健壮性。
用dd命令可以生成的临时文件:
dd if=/dev/urandom of=/tmp/data.bin bs=1M count=$RANDOM
RANDOM变量会返回一随机非负整数(参考 how-to-generate-random-number-in-bash)。Random Entropy in Bash 该博客提供一个更为随机的方式,采用该方法(gen_tmp_file.sh)
#!/bin/bash
if [ -z ${TEST_TMPDIR} ]; then
echo "need to set TEST_TMPDIR"
exit 1
fi
A=${1:-10000}
B=${2:-10000}
RANDOM=$(date +%s%N | cut -b10-19)
COUNT=$(($A+$RANDOM%$B))
#COUNT=10000
echo "COUNT=$COUNT"
mkdir -p ${TEST_TMPDIR}/
rm -f ${TEST_TMPDIR}/*
dd if=/dev/urandom of=${TEST_TMPDIR}/data.bin bs=1M count=$COUNT
ls -l ${TEST_TMPDIR}/data.bin
该脚本首先会清理临时路径下的所有内容,脚本接收两个输入参数$1和$2 以随机生成count, 在TEST_TMPDIR路径下生成data.bin文件,文件内容随机,文件长度计算公式 c o u n t = A + r a n d o m % B count=A+random\%B count=A+random%B !
在N个计算节点上批量生成临时文件
srun -N 32 ./gen_tmp_file.sh
清理/tmp路径下的临时文件,腾出空间
clean_tmp.sh
#!/bin/bash
find /tmp -type f -user xxxx 2>/dev/null | xargs rm -f
批量执行
srun -N 32 ./clean_tmp.sh