📄 lockorder.sh
字号:
#!/bin/shset -eexport PATH=`dirname $0`:`dirname $0`/../utils:$PATHCREATEMANY=${CREATEMANY:-createmany}STATMANY=${STATMANY:-statmany}UNLINKMANY=${UNLINKMANY:-unlinkmany}LCTL=${LCTL:-lctl}MOUNT1=${MOUNT1:-/mnt/lustre1}MOUNT2=${MOUNT2:-/mnt/lustre2}DIR=${DIR:-$MOUNT1}DIR2=${DIR2:-$MOUNT2}COUNT=${COUNT:-100}cleanup() { [ $CR_PID ] && kill -9 $CR_PID [ $ST_PID ] && kill -9 $ST_PID}trap cleanup EXITLOCKDIR=$DIR/lockdirLOCKFILE=$LOCKDIR/lockfilerm -rf $LOCKDIRNUM=0MINDIR=$DIRMAXDIR=$DIRMINRES=2000000000MAXRES=0mkdir -p $MINDIRwhile [ $MINRES -gt $MAXRES ]; do FILETMP=$MINDIR/f$$${NUM} DIRTMP=$DIR/d$$/d${NUM} touch $FILETMP mkdir -p $DIRTMP FILERES=`ls -id $FILETMP | awk '{ print $1 }'` DIRRES=`ls -id $DIRTMP | awk '{ print $1 }'` if [ $DIRRES -gt $MAXRES ]; then MAXDIR=$DIRTMP MAXRES=$DIRRES fi if [ $FILERES -lt $MINRES ]; then [ -f "$MINFILE" ] && rm $MINFILE MINFILE=$FILETMP MINRES=$FILERES else rm $FILETMP fi NUM=$(($NUM + 1))donemv $MAXDIR $LOCKDIRmv $MINFILE $LOCKFILErm -rf $DIR/d$$$LCTL mark "start dir: $LOCKDIR=$MAXRES file: $LOCKFILE=$MINRES"# link will lock $LOCKFILE and $DIR as it creates ${LOCKFILE}{0,1,...}$CREATEMANY -l$LOCKFILE $LOCKFILE -$COUNT &CR_PID=$!while ! test -f ${LOCKFILE}1 ; do sleep 1done# this will lock $DIR and ${LOCKFILE}0$STATMANY -s $DIR2/lockdir/lockfile 1 -$COUNT &ST_PID=$!sleep $(($COUNT / 2))$UNLINKMANY $DIR2/lockdir/lockfile 1 $(($COUNT * 1000)) || truetrap 0kill $CR_PID || truekill $ST_PID || truerm -rf $LOCKDIR
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -