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

📄 news.daily

📁 早期freebsd实现
💻 DAILY
字号:
#! /bin/sh##  $Revision: 1.22 $##  Daily news maintenance.##  Optional arguments:##	expdir=xxx	Directory in which to build new history file##	flags=xxx	Pass xxx flags to expire##	noexpire	Do not expire##	noexplog	Do not log expire output##	nologs		Do not scan logfiles##	nomail		Do not capture and mail output##	norenumber	Do not renumber the active file##	norm		Do not remove certain old files##	norotate	Do not rotate logfiles##	nostat		Do not run innstat##	delayrm		Delay unlink files, then do it quicker (expire -z)##	/full/path	Path to a program to run before expiring##  =()<. @<_PATH_SHELLVARS>@>()=. /var/spool/news/data/innshellvarsEXPLOG=${MOST_LOGS}/expire.logINNSTAT=${NEWSBIN}/innstatMAIL="${MAILCMD} -s 'Daily Usenet report' ${NEWSMASTER}"##  If your expire does not pause or throttle innd, enable this next line:#MESSAGE="Expiration script $$"##  Renumber all at once, or in steps?  Set to the delay if steps (that##  may take a long time!).RENUMBER=PROGNAME=news.dailyLOCK=${LOCKS}/LOCK.${PROGNAME}##  Set defaults.DOEXPIRE=trueDOEXPLOG=trueDOEXPIREOVER=falseDOLOGS=trueDOMAIL=trueDORENUMBER=trueDORM=trueDOSTAT=trueEXPDIR=EXPIREFLAGS="-v1"EXPIREOVERFLAGS=PROGRAMS=REASON=RMFILE=SCANARG=##  Parse JCL.for Ido    case "X$I" in    Xdelayrm)	RMFILE=${MOST_LOGS}/expire.rm	;;    Xexpdir=*)	EXPDIR=`expr "${I}" : 'expdir=\(.*\)'`	REASON="Expiring $$ on ${EXPDIR}"	;;    Xexpireover)	DOEXPIREOVER=true	;;    Xexpireoverflags=*)	EXPIREOVERFLAGS=`expr "${I}" : 'expireoverflags=\(.*\)'`	;;    Xflags=*)	EXPIREFLAGS=`expr "${I}" : 'flags=\(.*\)'`	;;    Xnoexpire)	DOEXPIRE=false	;;    Xnoexplog)	DOEXPLOG=false	;;    Xnologs)	DOLOGS=false	;;    Xnomail)	DOMAIL=false	MAIL=cat	;;    Xnonn)	# Ignore this.	;;    Xnorenumber)	DORENUMBER=false	;;    Xnorm)	DORM=false	;;    Xnorotate)	SCANARG="${SCANARG} norotate"	;;    Xnostat)	DOSTAT=false	;;    X/*)	PROGRAMS="${PROGRAMS} ${I}"	;;    *)	echo "Unknown flag ${I}" 1>&2	exit 1	;;    esacdone${DOEXPIRE} || {    EXPDIR=    RMFILE=}test -n "${EXPDIR}" && EXPIREFLAGS="${EXPIREFLAGS} '-d${EXPDIR}' '-r${REASON}'"test -n "${RMFILE}" && {    EXPIREFLAGS="${EXPIREFLAGS} -z${RMFILE}"    EXPIREOVERFLAGS="${EXPIREOVERFLAGS} -z ${RMFILE}"}test -z "${EXPIREOVERFLAGS}" && EXPIREOVERFLAGS=-sif ${DOMAIL} ; then    ##  Try to get a temporary file.    TEMP=${TMPDIR}/doex$$    test -f ${TEMP} && {	echo "Temporary file ${TEMP} exists" | eval ${MAIL}	exit 1    }    touch ${TEMP}    chmod 0660 ${TEMP}    exec 3>&1 >${TEMP} 2>&1ficd ${NEWSLIB}##  Show the status of the news system.${DOSTAT} && {    ${INNSTAT}    echo ''}##  Lock out others.trap 'rm -f ${LOCK} ; exit 1' 1 2 3 15shlock -p $$ -f ${LOCK} || {    ( echo "$0: Locked by `cat ${LOCK}`"; ${INNSTAT} ) | eval ${MAIL}    exit 1}##  Run any user programs.if [ -n "${PROGRAMS}" ] ; then    for P in ${PROGRAMS} ; do	echo ''	echo "${P}:"	eval ${P}    donefi##  The heart of the matter:  prologs, expire, epilogs.if ${DOEXPIRE} ; then    ## Wait to be fairly certain innwatch is not in the middle of a pass    ## Since we're locked, innwatch will pause now till we're done    sleep 30    ##  See if we're throttled for lack of space.    SERVERMODE=`ctlinnd mode 2>/dev/null | ${SED} 1q`    case "${SERVERMODE}" in    'Server paused'*'[innwatch:'*)	## If paused, by innwatch, then turn pause into throttle	## as we're going to stay that way for a while now	ctlinnd -s throttle "`expr \"${SERVERMODE}\" : 'Server paused \(.*\)'`"    esac    case "${SERVERMODE}" in    *space*" -- throttling")	echo "${SERVERMODE} -- trying to recover"	THROTTLED=true	EXPIREFLAGS="${EXPIREFLAGS} -n"	MESSAGE=	;;    *"[innwatch:"*)	echo "${SERVERMODE} -- pressing on"	THROTTLED=false	EXPIREFLAGS="${EXPIREFLAGS} -n"	MESSAGE=	;;    *)	THROTTLED=false	;;    esac    ##  Throttle server if we need to.    if [ -n "${MESSAGE}" ] ; then	ctlinnd -s -t120 throttle "${MESSAGE}" 2>&1 || {	    ( echo "$0: Cannot throttle news"; ${INNSTAT} ) | eval ${MAIL}	    exit 1	}    fi    ##  Actual expire the articles (finally!).    if ${DOEXPLOG}; then	echo "expire begin `date`: (${EXPIREFLAGS})"		>>${EXPLOG}	( exec 2>&1 ; eval expire "${EXPIREFLAGS}" ) \	    | ${SED} -e 's/^/    /' >>${EXPLOG}	echo "    expire end `date`"				>>${EXPLOG}    else	eval expire "${EXPIREFLAGS}"    fi    test -n "${RMFILE}" -a -f "${RMFILE}" && {	sort -o ${RMFILE} ${RMFILE}	${DOEXPIREOVER} && {	    eval expireover "${EXPIREOVERFLAGS}"	    DOEXPIREOVER=false	}	expirerm ${RMFILE}    }    ${DOEXPIREOVER} && eval expireover "${EXPIREOVERFLAGS}"    ##  If built on another filesystem, move history files.    if [ -n "${EXPDIR}" ] ; then	if [ ! -f ${EXPDIR}/history.n -o ! -f ${EXPDIR}/history.n.done ] ; then	    ( echo "$0: No new history files"; ${INNSTAT} ) | eval ${MAIL}	    exit 1	fi	mv -f ${EXPDIR}/history.n ${HISTORY}	mv -f ${EXPDIR}/history.n.dir ${HISTORY}.dir	mv -f ${EXPDIR}/history.n.pag ${HISTORY}.pag	rm -f ${EXPDIR}/history.n.done	case "${EXPIREFLAGS}" in	*-n*)	    ;;	*)	    MESSAGE="${REASON}"	    ;;	esac    fi    ##  Restart the server if we need to.    if ${THROTTLED} || test -n "${MESSAGE}" ; then	ctlinnd -s go "${MESSAGE}" 2>&1 || {	    ( echo "$0: Cannot unthrottle news"; ${INNSTAT} ) | eval ${MAIL}	    exit 1	}    fifi##  Renumber the active file.if ${DORENUMBER} ; then    echo ''    echo 'Renumbering active file.'    if [ -z "${RENUMBER}" ] ;then	ctlinnd -s -t`wc -l <${ACTIVE}` renumber '' 2>&1    else	while read GROUP hi lo flag ; do	    ctlinnd -s renumber ${GROUP} 2>&1	    sleep ${RENUMBER}	done <${ACTIVE}    fifi${DOLOGS} && {    echo ''    scanlogs ${SCANARG}}##  Remove old sockets.${DORM} &&    find ${TEMPSOCKDIR} -name "${TEMPSOCK}" -mtime +2 -exec rm -f '{}' ';'##  Mail the report.if ${DOMAIL} ; then    # Stop using the temp file, and mail captured output.    exec 1>&3 2>&1 3>&-    test -s ${TEMP} && cat ${TEMP} | eval ${MAIL}    rm -f ${TEMP}fi##  All done; warn if we can't release the lock.rm ${LOCK}date >${NEWSLIB}/.news.daily${RNEWS} -Uexit 0

⌨️ 快捷键说明

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