Last active
May 19, 2019 13:31
-
-
Save benzBrake/ff60208a24da617386dbe4c0f7cefd3b to your computer and use it in GitHub Desktop.
Shell script for generating a large number of files randomly, support multithreading / SHELL脚本使用多线程随机生成大量文件
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| #!/bin/sh | |
| # 文件生成路径 / Directory | |
| TMPDIR="./tmp" | |
| # 线程数 / Thread numbers | |
| THNUM=5 | |
| # 文件数量 / File numbers | |
| JOBNUM=100000 | |
| function randStr | |
| { | |
| if [[ ! -n "$1" ]]; then | |
| LEN=1000 | |
| else | |
| LEN=$1 | |
| fi | |
| j=0; | |
| for i in {a..z}; do | |
| array[$j]=$i;j=$(($j+1)) | |
| done | |
| for i in {A..Z}; do | |
| array[$j]=$i;j=$(($j+1)) | |
| done | |
| for ((i=0;i<${LEN};i++)); do | |
| STRS="$STRS${array[$(($RANDOM%$j))]}" | |
| done | |
| echo ${STRS} | |
| } | |
| function createFile() { | |
| if [[ ! -n "$1" ]]; then | |
| FILENAME="tmpfile" | |
| else | |
| FILENAME=$1 | |
| fi | |
| # 随机字符串长度 100~200 | |
| STRLEN=($RANDOM%100+100) | |
| echo "creating file ${FILENAME}" | |
| echo `randStr $STRLEN` > ${FILENAME} | |
| } | |
| # 清理临时文件 / Clean tmp file | |
| rm -rf ${TMPDIR}/`hostname` | |
| mkdir -pv ${TMPDIR}/`hostname` | |
| # 多线程执行任务 / Multithreading | |
| TMPFIFO="/tmp/$$.fifo" | |
| mkfifo ${TMPFIFO} | |
| exec 6<>${TMPFIFO} | |
| for ((i=0;i<${THNUM};i++));do | |
| echo | |
| done >&6 | |
| for ((i=0;i<${JOBNUM};i++)); do | |
| read -u6 | |
| { | |
| createFile ${TMPDIR}/`hostname`/${i}.log | |
| } & | |
| echo >&6 | |
| done | |
| # 等待所有线程运行完毕 / Wait for job done. | |
| wait | |
| rm -f ${TMPFIFO} | |
| exec 6>&- | |
| echo "Job done!" |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment