1#!/bin/sh 2# 3# $OpenBSD: follow-overwrite-data.sh,v 1.2 2012/11/03 08:41:25 ajacoutot Exp $ 4 5# test if tail follows a file overwritten by data 6 7#set TMPDIR to a nfs-based dir for nfs testing 8DIR=$(mktemp -d) 9echo DIR=${DIR} 10 11NAME=${0##*/} 12OUT=${DIR}/${NAME%%.sh}.out 13ERR=${DIR}/${NAME%%.sh}.err 14echo bar > ${DIR}/bar 15 16# retry until file appears for nfs 17RET=1 18while [ ${RET} == 1 ] ; do 19 tail -f ${DIR}/bar 2> ${ERR} > ${OUT} & 20 RET=$? 21 PID=$! 22 sleep 1 23done 24 25# smaller data 26echo 'ba' > ${DIR}/bar 27sleep 1 28# bigger data with delay 29echo 'baar' > ${DIR}/bar 30# smaller data without delay 31echo 'bar' > ${DIR}/bar 32 33# hey nfs ! 34sleep 5 35kill ${PID} 36diff -u ${OUT} ${0%%.sh}.out || exit 1 37[ $(grep -c "tail: ${DIR}/bar has been truncated, resetting." ${ERR}) -eq 3 ] || exit 2 38 39# cleanup if okay 40rm -Rf ${DIR} 41