Take the 2-minute tour ×
Super User is a question and answer site for computer enthusiasts and power users. It's 100% free, no registration required.

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
add comment

4 Answers

as root:

fuser filename

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

share|improve this answer
add comment
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
add comment

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
add comment

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
add comment

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.