I am attempting to write a shell script (bourne shell script) which will copy a tar'd and compressed file from a directory to a staging area but will not know whether the file is still open for write since files are being ftp's to my site at random times during the day.
Once I am convinced that the file is stable (not being written to) I will move it to another directory, uncompress it and untar it and then process the data.
What is a good way to determine that the file is not being written to (ftp from other site is complete) before I move it out of the directory in which it was ftp'd into.
thanks
Joe
p.s. please respond by email: EMAIL ADDRESS REMOVED
Let the job which ftp's create a trigger file(with some unique pattern) after it is done with the ftp. This would give you an idea of the completion of the file transfer.
please tell what is lsof.when ever i tried to as man lsof it is failing.my actual problm is clearly what kanejm has wrriten.
i tried like files=`lsof ${ALTAS_IN_DIR}/IINV*.* 2>/dev/null`
after that depends on files value means that is zero or one proceeding(move the files to other directory.).
but error is lsof not found.thats i want know about lsof.
An error of 'lsof: not found' means that lsof is not available in your path. Check the value of the $PATH variable in your environment. Search for lsof on your box. Then add the path to lsof in the PATH variable in your environment. Here are the steps:
1.
echo $PATH
whereis lsof
or (this may take quite a bit longer)
find /usr -name lsof -print
PATH=$PATH:/path/to/lsof; export PATH
--EDIT--
mallikarjuna, in your code you are using *.* to pass filenames to lsof. I don't think that lsof can handle more than one filename at a time. Just check that out.
--/EDIT--