Sponsored Content
Top Forums Shell Programming and Scripting check if some file is in copy process, then transfer it Post 302480672 by fnds on Wednesday 15th of December 2010 12:57:07 PM
Old 12-15-2010
Instead of checking the file size you should check if the file is open. You can use the fuser utility to do that:

Code:
f=/tmp/x.x
test ! -f $f && echo file not found && exit
c=`fuser -f $f 2>&1 | wc -w`
c=`echo $c`
case $c in
1) echo file is not open;;
*) echo file is open;;
esac

Tested with bash on OpenBSD

---------- Post updated at 12:57 PM ---------- Previous update was at 12:54 PM ----------

Quote:
Originally Posted by DGPickett
Bad idea -- how long is long enough? Best idea: write under another name like same.temp and then rename when done. Second choice: use fuser to see if it is open, but even if not open, file may be incomplete due to a failed writer, unless you have a way to validate it, such as a trailer record.

PS: Comment s/b after the do line!
Agreed. Copy/rename is the fool proof way to avoid problems.
 

10 More Discussions You Might Find Interesting

1. Programming

transfer an open file description between two process

How can I transfer an open file description between two process? (1 Reply)
Discussion started by: xu_wen_dong
1 Replies

2. Shell Programming and Scripting

How to check a file exist and do a copy of other files

Hi, I would like to perform bash which would check the file A.txt to be size 0 or not. If the size is 0, I would copy file B.txt to replace A.txt. Please help. Thanks. -Jason (6 Replies)
Discussion started by: ahjiefreak
6 Replies

3. Shell Programming and Scripting

Copy Files to Dir and Check If File Exists

Hi everyone. I am trying to write a bash script that will copy files from one directory to another but I need to be able to check the directory that I'm copying the files to and see if the file already exists. If it does I need to add a number at the end of the copied file. Thanks for your help. (3 Replies)
Discussion started by: snag49ers
3 Replies

4. Shell Programming and Scripting

check if file finished to copy

Hi all, I have a script that is monitoring a hot folder. This script works fine with one exception when the script is executed while a file is being copied to the hot folder. What is the easiest method to check if the copy file is completed? I'd like to get the solution in bash :) (8 Replies)
Discussion started by: gigagigosu
8 Replies

5. UNIX for Advanced & Expert Users

How to copy a binary file while the file is being written to by another process

Hello, Can I copy a binary file while the file is being written to by another process? Another process (program) “P1” creates and opens (for writing) binary file “ABC” on local disk. Process P1 continuously write into ABC file every couple of seconds, adding 512-byte blocks of data. ABC file... (1 Reply)
Discussion started by: mbuki
1 Replies

6. UNIX for Advanced & Expert Users

Secure Copy - File Transfer between 2 server

Using RCP command we can transfer file from one server to another server. While transferring we can rename the file also e.g. File name = FILE123.txt (lying on Source server = oldserver) Target Server Name = newyour Renamed File = FILE456.txt rcp FILE123.txt newyour:./FILE456.txt... (1 Reply)
Discussion started by: Pash
1 Replies

7. Shell Programming and Scripting

Automation, Copy, File Status Check --> Script(s)

All, I have to write a script to do the following requirement. There is a file called BUSINESS_DATE.TXT. This file get updated once the oracle partition created. In Oracle, Partition will be created every day. There is a seperate script scheduled to take care ORACLE partition creation. The... (3 Replies)
Discussion started by: karthi_mrkg
3 Replies

8. UNIX for Dummies Questions & Answers

Ftp - file transfer and check successful delivery

In shell script, I want to transfer files continuously and make sure transfer is successful. Please advise... how to make sure ftp transfer is successful? Also is there any option such as sftp -b where I can pass multiple put <file name> commands to ftp Thanks! (1 Reply)
Discussion started by: vegasluxor
1 Replies

9. UNIX for Dummies Questions & Answers

Issues in Csv file transfer copy from one dir to another

Hi Unix community, I got this code from you guys and I tried to modify it to use for my csv dir transfer basically i want the .csv file to copy itself and populate it to the archive dir. #!/bin/ksh dir1="/home/pumela/unixtestprod" cd "$dir1" echo "code is running" for srcd in... (13 Replies)
Discussion started by: phumaree
13 Replies

10. UNIX for Beginners Questions & Answers

If statement to check file transfer

Hello Guys, I am trying scp few file within if statement, but getting error, can someone please help to understand, what mistake I am making ? if && ] ; then echo " Files transferred to Log servers successfully. " else echo " One or more file transfer failed over... (10 Replies)
Discussion started by: UnknownGuy
10 Replies
FUSER(1)						    BSD General Commands Manual 						  FUSER(1)

NAME
fuser -- list IDs of all processes that have one or more files open SYNOPSIS
fuser [-cfkmu] [-M core] [-N system] [-s signal] file ... DESCRIPTION
The fuser utility writes to stdout the PIDs of processes that have one or more named files open. For block and character special devices, all processes using files on that device are listed. A file is considered open by a process if it was explicitly opened, is the working directory, root directory, jail root directory, active executable text, kernel trace file or the controlling terminal of the process. If -m option is specified, the fuser utility will also look through mmapped files. The following options are available: -c Treat files as mount point and report on any files open in the file system. -f The report must be only for named files. -k Send signal to reported processes (SIGKILL by default). -m Search through mmapped files too. -u Write the user name associated with each process to stderr. -M Extract values associated with the name list from the specified core instead of the default /dev/kmem. -N Extract the name list from the specified system instead of the default, which is the kernel image the system has booted from. -s Use given signal name instead of default SIGKILL. The following symbols, written to stderr will indicate how files is used: r The file is the root directory of the process. c The file is the current workdir directory of the process. j The file is the jail-root of the process. t The file is the kernel tracing file for the process. x The file is executable text of the process. y The process use this file as its controlling tty. m The file is mmapped. w The file is open for writing. a The file is open as append only (O_APPEND was specified). d The process bypasses fs cache while writing to this file (O_DIRECT was specified). s Shared lock is hold. e Exclusive lock is hold. EXIT STATUS
The fuser utility returns 0 on successful completion and >0 otherwise. EXAMPLES
The command: ``fuser -fu .'' writes to standard output the process IDs of processes that are using the current directory and writes to stderr an indication of how those processes are using the directory and user names associated with the processes that are using this directory. SEE ALSO
fstat(1), ps(1), systat(1), iostat(8), pstat(8), vmstat(8) STANDARDS
The fuser utility is expected to conform to IEEE Std 1003.1-2004 (``POSIX.1''). HISTORY
The fuser utility appeared in FreeBSD 9.0. AUTHORS
The fuser utility and this manual page was written by Stanislav Sedov <stas@FreeBSD.org>. BUGS
Since fuser takes a snapshot of the system, it is only correct for a very short period of time. When working via kvm(3) interface the report will be limited to filesystems the fuser utility knows about (currently only cd9660, devfs, nfs, ntfs, nwfs, udf, ufs and zfs). BSD
May 13, 2011 BSD
All times are GMT -4. The time now is 08:23 AM.
Unix & Linux Forums Content Copyright 1993-2022. All Rights Reserved.
Privacy Policy