On Tue, 2009-11-03 at 13:31 -0800, Donald Russell wrote:
Another system uses FTP to drop files in a directory for me to
process.
I have a bash script to process the incoming files. The script is
started by cron periodically.
There's a problem if the FTP transfer is still in progress because the
process begins reading the file even though it isn't complete yet.
From a bash script, is there a way to tell if the file is still being
written to?
I was looking at the lsof command, which will tell me if the file is
opened or not, so that's a possibility... but it sure seems awkward
for the task.
Not really. Since you know that the ftp demon is the only potential
writer for the file, you can use
lsof -p <demon-pid> | grep <filename>
I could also configure the ftp server to lock files being written,
but
that seems to be discouraged. (based on man vsftpd.conf)
inotify(7) could do the job, but would require some programming.
poc