⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 sendbatch

📁 早期freebsd实现
💻
字号:
#! /bin/sh##  $Revision: 1.10 $##  SH script to send UUCP batches out.  By Mike Cooper and Rich $alz.##  Based on B News sendbatch 1.22 10/29/89.##  =()<. @<_PATH_SHELLVARS>@>()=. /var/spool/news/data/innshellvars##  Place to run a df, and amount of space needed.UUSPOOL=/usr/spool/uucpSPOOLFREE=20000##  Program names and flags.  Most can be set on the command-line.C7=COMP=COMPFLAGS=COMPRESS=/usr/ucb/compressECHO=##  Not a config param since this is the remote rnews.RNEWS=rnewsUUX=uuxUUXFLAGS="- -r -n -gd"##  Desired size of each batch, total number of bytes we want to queue.DEFBYTES=50000BYTESQUEUED=1000000000PROG=`basename $0`LOCK=${LOCKS}/LOCK.${PROGNAME}##  Go to where the action is.cd ${BATCH}##  Loop over command line.for SITEdo    ##  Is this a flag?    case "${SITE}" in    -s*)	DEFBYTES=`expr "${SITE}" : '-s\(.*\)'`	continue	;;    -m*)	BYTESQUEUED=`expr "${SITE}" : '-m\(.*\)'`	continue	;;    +m)	BYTESQUEUED=''	continue	;;    -p*)	BYTESPERRUN=`expr "${SITE}" : '-p\(.*\)'`	continue	;;    +p)	BYTESPERRUN=''	continue	;;    -r*)	RNEWS=`expr "${SITE}" : '-r\(.*\)'`	continue	;;    -U*)	UUX=`expr "${SITE}" : '-U\(.*\)'`	continue	;;    -u*)	UUXFLAGS=`expr "${SITE}" : '-u\(.*\)'`	continue	;;    -c7)	COMP="; exec ${COMPRESS} ${COMPFLAGS} | $LIB/encode"	ECHO="echo '#! c7unbatch'"	continue	;;    -c)	COMP="; exec ${COMPRESS} ${COMPFLAGS}"	ECHO="echo '#! cunbatch'"	continue	;;    +c)	COMP=''	C7=''	ECHO=''	COMPFLAGS=''	continue	;;    -[bBC]*)	COMPFLAGS="${COMPFLAGS} ${SITE}"	continue	;;    -o*)	ECHO=`expr "${SITE}" : '-o\(.*\)'`	RNEWS='cunbatch'	continue	;;    +o)	ECHO=''	RNEWS=rnews	continue	;;    -D*)	UUSPOOL=`expr "${SITE}" : '-D\(.*\)'`	continue	;;    +D)	UUSPOOL=''	continue	;;    -f*)	SPOOLFREE=`expr "${SITE}" : '-f\(.*\)'`	continue	;;    esac    test -z "${BYTESPERRUN}" && BYTESPERRUN=${BYTESQUEUED}    ##  We have a site; lock it.    LOCK=${LOCKS}/LOCK.${SITE}    trap 'rm -f ${LOCK} ; exit 1' 1 2 3 15    shlock -p $$ -f ${LOCK} || {	echo "${PROG}:  ${SITE} Locked by `cat ${LOCK}`."	continue    }    ##  Flush the batchfile.    BATCHFILE=${BATCH}/${SITE}.uucp    if [ -f ${SITE}.work ] ; then	cat ${SITE}.work >>${BATCHFILE}	rm -f ${SITE}.work    fi    mv ${SITE} ${SITE}.work    ctlinnd -s -t30 flush ${SITE} || {	echo "${PROG}:  Can't flush ${SITE}."	rm -f ${LOCK}	continue    }    cat ${SITE}.work >>${BATCHFILE}    rm -f ${SITE}.work    if [ ! -s ${BATCHFILE} ] ; then	echo "${PROG}:  No articles for ${SITE}."	rm -f ${LOCK}	continue    fi    ##  Check free space on the partition?    if [ -n "${UUSPOOL}" ] ; then	FREE=`(cd ${UUSPOOL}; df . | ${AWK} '		$6 == "'${UUSPOOL}'" { print $4 ; exit }		$1 == "'${UUSPOOL}'" && NF == 7 { print $4 ; exit }		$2 == "'${UUSPOOL}'" { print $5 ; exit }		$1 == "'${UUSPOOL}'" { print $3 ; exit }	    ')`	if [ -n "${FREE}" -a "${FREE}" -lt ${SPOOLFREE} ] ; then	    echo "${PROG}:  No space on ${UUSPOOL} for ${SITE} (${FREE})."	    rm -f ${LOCK}	    continue	fi    fi    ##  Check the host's queue size?    QUEUE=0    if [ -n "${BYTESQUEUED}" ] ; then	if [ -d /usr/spool/uucp/${SITE} ] ; then	    # Get queue size from directory size	    QUEUE=`du -s "/usr/spool/uucp/${SITE}" \		    | ${AWK} '{ printf("%s000\n", $1); }'`	else	    ##  Get queue size from uuq command.	    QUEUE=`uuq -l -s${SITE} | ${AWK} '{print $4; exit }'`	fi	test -z "${QUEUE}" && QUEUE=0	if [ "${QUEUE}" -gt ${BYTESQUEUED} ] ; then	    echo "${PROG}:  ${SITE} has ${QUEUE} bytes queued."	    rm -f ${LOCK}	    continue	fi    fi    ##  Set how many bytes we can queue this time.    if [ -z "${BYTESQUEUED}" ] ; then	BATCHBYTES=${BYTESPERRUN}    else	BATCHBYTES=`expr ${BYTESQUEUED} - "${QUEUE}"`	test ${BATCHBYTES} -gt ${BYTESPERRUN} && BATCHBYTES=${BYTESPERRUN}    fi    # Say how big each batch should be.  Assume 50% compression.    if [ -n "${COMP}" ] ; then	MAXBYTES=`expr ${DEFBYTES} \* 2`    else	MAXBYTES=${DEFBYTES}    fi    ##  Assemble uux command to have batcher(1) run.    if [ -f ${SITE}.cmd ] ; then	UUXCOM="`cat ${SITE}.cmd`"    elif [ -n "${ECHO}" -o -n "${COMP}" ]; then	UUXCOM="( ${ECHO} ${COMP} ) | ${UUX} - ${UUXFLAGS} ${SITE}!${RNEWS}"    else	UUXCOM="${UUX} - ${UUXFLAGS} ${SITE}!${RNEWS}"    fi    ## Create batches.    if [ ${BATCHBYTES} -gt 0 ] ; then	${NEWSBIN}/batcher -B ${BATCHBYTES} -b ${MAXBYTES} -p "${UUXCOM}" \	    ${SITE} ${BATCHFILE}    fi    rm -f ${LOCK}done

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -