1#!/bin/sh 2# 3# $OpenBSD: follow-renames.sh,v 1.2 2012/11/03 08:41:25 ajacoutot Exp $ 4 5# test if tail follows a file descriptor across renames 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 13echo bar > ${DIR}/bar 14 15# retry until file appears for nfs 16RET=1 17while [ ${RET} == 1 ] ; do 18 tail -f ${DIR}/bar > ${OUT} & 19 RET=$? 20 PID=$! 21 sleep 1 22done 23 24mv ${DIR}/bar ${DIR}/bar2 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 33 34# cleanup if okay 35rm -Rf ${DIR} 36