Before I delete any file in Unix, How can I check no open file handle is pointing to that file?


 
Thread Tools Search this Thread
Operating Systems Solaris Before I delete any file in Unix, How can I check no open file handle is pointing to that file?
# 8  
Old 10-05-2010
Getting an app that does not like to open and close the log to move to a new file is impossible. Many servers are set up to close all logs and reread all configs when you signal them with SIGINT. Others assume they can write forever, being written by HS kids! Smilie

You might be able to put a named pipe there, and write your own process to read that named pipe and change logs periodically. Some apps may not accept a named pipe. If you put two servers under a load sharing and relibility tool, you can take down one to reset the log and when it is back up, recycle the other.
# 9  
Old 10-05-2010
Quote:
Originally Posted by DGPickett
However, if the program appends with a high file position, all the space is reallocated and written to zeros
This is slightly incorrect, at least when using UFS or ZFS. If the writing program is seeking to the previous end of the file location, the space from the beginning of the file to that new location isn't filled with zeroes but unallocated, leading to the creation of a sparse file. If you read the unallocated data, the OS will return "virtual" zeroes but they use no space at all on the disk.
# 10  
Old 10-05-2010
Quote:
Originally Posted by jlliagre
This is slightly incorrect, at least when using UFS or ZFS. If the writing program is seeking to the previous end of the file location, the space from the beginning of the file to that new location isn't filled with zeroes but unallocated, leading to the creation of a sparse file. If you read the unallocated data, the OS will return "virtual" zeroes but they use no space at all on the disk.
I was taken in by the zeros! You can close it, and there is no space allocated? I guess it is all done in the allocation storage. It is an interesting resource in the 64 bit world, as you could have a very huge, sparse file with just a few blocks. Consider how handy that is in conjunction with mmap64().
# 11  
Old 10-05-2010
Quote:
Originally Posted by DGPickett
You can close it, and there is no space allocated?
This space isn't allocated whether the file is closed or not.
Quote:
I guess it is all done in the allocation storage. It is an interesting resource in the 64 bit world, as you could have a very huge, sparse file with just a few blocks. Consider how handy that is in conjunction with mmap64().
A simpler approach is to mmap /dev/zero which is kind of an infinite sparse file by design.
# 12  
Old 10-06-2010
Quote:
Originally Posted by jlliagre
This space isn't allocated whether the file is closed or not.
A simpler approach is to mmap /dev/zero which is kind of an infinite sparse file by design.

The idea is that you could has a key to calculate an address in a virtually huge and actually small file of unallocated blocks and write or fetch a piece of data there, as long as you accept nulls as a miss on a fetch. You can write a sparse file. Pages are allocated only as they are written into the sparse matrix. Current hash maps must drop the key to the modulus of the bucket count and use an array of pointers to indirectly find the bucket data, if the bucket has been created. Here, you can drop the hash to 8 bytes and seek directly to your information within the sparse file. With a mmap64, the seek is just reach out and touch it! Of course, your key generation must leave space for the bucket between possible 64 bit addresses. I guess if the bucket is occupied, you might permute the address in some standard way to pick a new bucket address in a place not likely occupied. Think stock symbols, 1-5 bytes uppercase in a very time dependent industry, like an elecronic order book and matching engine, for instance.
# 13  
Old 10-06-2010
Quote:
Originally Posted by kchinnam
My observation is different. If we delete "catalina.out" from a tomcat web server logs folder. Tomcat would not create another log,, until we restart tomcat. Where as other applications do create a new log file.
Now that we know what you actually want we can give you better advice.

You shouldn't be handling logfiles this way if you can possibly avoid it. Many daemons let you safely truncate the logfile: : > /path/to/logfile ...and the daemon will start writing from the beginning again. Others will recreate the file when deleted. Others want SIGHUP sent to the daemon process to tell it to truncate or rotate its own logfiles.

If the daemon is so badly written as to force you to hack things with fuser instead of these methods you should get it fixed or replaced.
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. UNIX for Beginners Questions & Answers

How to check if a file is open in editor?

Hi there! I'm developing a program that allows the user to open and edit files using both an editor and the terminal. Once the user has finished editing the file an update is sent to the logbook that compares the file before and after it was edited - this can only be done if the file is closed (I... (23 Replies)
Discussion started by: cherryTango
23 Replies

2. Shell Programming and Scripting

To check if a file is open and in use (logs are being written to it)

Hello Experts, I need to write a shell script to check if a file is open and something is being written to it. I want to know how OS handles it. I checked with lsof command but it is not working. For a test I did this. while true; do echo `date` >>abc.txt; done then I checked lsof |... (5 Replies)
Discussion started by: shekhar_4_u
5 Replies

3. UNIX for Dummies Questions & Answers

UNIX command to check if file name ends with .tar OR if the file is a tar file

Hello Team, Would you please help me with a UNIX command that would check if file is a tar file. if we dont have that , can you help me with UNIX command that would check if file ends with .tar Thanks in advance. (10 Replies)
Discussion started by: sanjaydubey2006
10 Replies

4. Shell Programming and Scripting

Check file presence and delete other file

Hello, I have file all_file.txt at the end of process this file all_file.txt should be deleted only if there is no file present in dir /all_file/tmp/ or in it's sub directory. can you please help me with the peace of code for this. Thanks (2 Replies)
Discussion started by: kumar30213
2 Replies

5. Shell Programming and Scripting

Need unix commands to delete records from one file if the same record present in another file...

Need unix commands to delete records from one file if the same record present in another file... just like join ... if the record present in both files.. delete from first file or delete the particular record and write the unmatched records to new file.. tried with grep and while... (6 Replies)
Discussion started by: msathees
6 Replies

6. Shell Programming and Scripting

how to open a file and read a file in UNIX

HI can any one tell me how to open and read a file in UNIX actually i have the following script can you please suggest me on this.. LOG,">$log" or NotifyAdmin "Failed to open file $log";... this is the perl statement.. which opens log file. i want to open same log file in unix Thanks... (5 Replies)
Discussion started by: sravan008
5 Replies

7. Shell Programming and Scripting

avoid open file to check field.

Hi Everyone, # cat a.txt 94,aqqc,62345907, 5,aeec,77, # cat 1.pl #!/usr/bin/perl use strict; use warnings; use Date::Manip; open(my $FA, "/root/a.txt") or die "$!"; while(<$FA>) { chomp; my @tmp=split(/\,/, $_); if (index($tmp, "qq") ne -1) { ... (4 Replies)
Discussion started by: jimmy_y
4 Replies

8. UNIX for Advanced & Expert Users

Unable to delete an open file

I am working on a unix server. I killed all the processes with my id on the machine. After that I tried to delete a file, I got an error:- file not removed.Text File busy. Deletion of directory prompted:- Directory not empty. Can anyone help me regarding this...??? Thanks, Vikas (11 Replies)
Discussion started by: vikasrout
11 Replies

9. UNIX for Dummies Questions & Answers

delete open file

hi, I have a little problem. I deleted a file, which was opened in vim editor. it was bad idea... now "df" still display same space. I kill process vim, but maybe file was controlled or opened by another application. Is any eventuallity to find which process has lock file? Command "ps -ax"... (2 Replies)
Discussion started by: delonism
2 Replies

10. Solaris

Error Message: find: cannot open /: Stale NFS file handle

I am using the "find" command below and it respond with the error message " find: cannot open /: Stale NFS file handle" what does it mean? what can I do about it? Need advice, thanks. below are the command that I enter, the respond and the error message: root@ScripServer:/# find / -name... (1 Reply)
Discussion started by: ezsurf
1 Replies
Login or Register to Ask a Question