1#!/bin/sh 2# 3# $OpenBSD: follow-overwrite-by-file.sh,v 1.2 2012/11/03 08:41:25 ajacoutot Exp $ 4 5# test if tail follows a file overwritten by another new file 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 25echo 'bar2' >> ${DIR}/bar2 26mv ${DIR}/bar2 ${DIR}/bar 27echo 'bar' >> ${DIR}/bar 28 29# hey nfs ! 30sleep 5 31kill ${PID} 32diff -u ${OUT} ${0%%.sh}.out || exit 1 33grep -q "tail: ${DIR}/bar has been replaced, reopening." ${ERR} || exit 2 34 35# cleanup if okay 36rm -Rf ${DIR} 37