Super User is a question and answer site for computer enthusiasts and power users. Join them; it only takes a minute:

Sign up
Here's how it works:
  1. Anybody can ask a question
  2. Anybody can answer
  3. The best answers are voted up and rise to the top

Let's say we have machine 1 and machine 2.
Machine 2, which is linux based, is receiving a file (let's say cat.jpg sent via SCP from machine 1 (doesn't really matter which operating system..).

How can I know in machine 2, that the file has finished uploading from machine 1 ?
Please note that by "knowing" I mean by running a command (via a cron that runs every minute), and not by an event driven way ("make the scp issue a command when it is finished uploading").

Another limitation I have is that I can't change anything in machine 1 or in the way it SCP files.

If it really matters:

  • the files being transferred are video file, MP4 extension.
  • machine 2 is ubuntu 10.10
share|improve this question
Check if the receiving process still exists. – mpez0 Jun 10 '11 at 18:31

you should be able to use the lsof command to check if the file is open in another program.

lsof | grep filename

if you get a result the file is open in another process and probably still uploading. If the result is blank the file is finished uploading or possibly the transfer failed for some reason.

share|improve this answer

There may be a cleverer way of doing it, but in these situations I just use ls to show the file size and then wait for it to stop changing for a reasonable period of time (10-20 secs) -eg:

watch ls -l *.mp4
share|improve this answer
fuser -mv / 2>&1 | grep F

That will list all users, pid and files open and in writing in a given mount-point.

share|improve this answer

as root:

fuser filename

If something is printed out, then the file is currently used by some process.

share|improve this answer

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .