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