Instead of checking the file size you should check if the file is open. You can use the fuser utility to do that:
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.
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)
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)
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)
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)
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)
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)
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)
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)
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
LEARN ABOUT FREEBSD
fuser
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