How can a file be locked for a certain time?


 
Thread Tools Search this Thread
Top Forums UNIX for Dummies Questions & Answers How can a file be locked for a certain time?
# 1  
Old 12-10-2001
How can a file be locked for a certain time?

I want to be able to lock a file for 60 minutes so that an automated monitoring program will not execute the script more that once an hour. I have never used a lock file but have heard that is what I need to use. Does anyone have any examples of how I would use this?

lock 60 filename.ksh ---?

Thanks,
# 2  
Old 12-10-2001
A "lock" file is nothing more than an ordinary file
that is used a a sort of "semaphore". Meaning, for example,
you can create a lock file from within a shell script
(say "myprog.ksh")
that can contain the shell script's process ID by doing...

echo $$ > /tmp/myprog..LCK

...this will create the file called "myprog..LCK" in the
"/tmp" directory. This file will contain the process id of
the shell script "myprog.ksh" for that particular instance
in which it was run.

There are several good reasons to do this. For instance,
"myprog.ksh" may be executed every 60min via "cron" but
occasionally make take more than 60min to complete. Therefore
you may wish to skip execution if the previous execution
is still running.

However, I'm not exactly clear on your requirements. It may
be that a lock file is not necessary. For example, if you wanted to
execute a shell script every 60min you could simply create a
"cron" job to run at 60min intervals.
# 3  
Old 12-10-2001
We have a program that monitors application events that can happen at any given time. When that event happens another script is executed to send an email or a page. Some application events happen quite frequently and we want to limit the number of notifications we receive within a certain time period. It was understood that integrating some type of lock file would be a good resolution to the problem.

- Thanks rwb1959
# 4  
Old 12-10-2001
OK that clears it up a bit...

You pager/email-er shell script might include code like...

#!/bin/sh

if [ -f /tmp/myprog..LCK ]
then
exit 0
fi

echo $$ > /tmp/myprog..LCK
...
Do your paging and email stuff here
...

sleep 3600

rm -f /tmp/myprog..LCK
exit 0
# 5  
Old 12-08-2003
Same problem, kinda

I have this same problem except when I create the semaphore file using a shell script, what happens if the shell script fails and the semaphore file is sitting out there forever?

So, the next time the script runs, it sees the semaphore file and doesn't run.

I need something like a 'finally' block in Java where if the shell script bails out, it needs to remove the semaphore file.

Any idea how to do this using shell scripting?
# 6  
Old 12-08-2003
One solution is to put the uid of the creating process in the file:
echo $$ > $lockfile


Then if the lockfile exists, do a secondary check to see if the process is still around:
lpid=`cat $lockfile`
if kill -0 $lpid ; then
echo locked by process $lpid
exit 1
else
echo $$ > $lockfile
fi

This can fail if the pid's have wrapped around and the old lpid is currently in use by a process that can be signaled from the the current process. But it's pretty good anyway.
# 7  
Old 12-09-2003
oooooo

That is a great idea. I just tried it and it works great. Thanks very much!
 
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

How to check the file locked or in use at FTP?

Hi Experts, I am beginner to shell scripting, I have a archive script which will connect to the FTP server and archive the files from FTP source location to FTP archive location. Now the problem here is, the script working for few files and not working for few.I am facing the below error... (1 Reply)
Discussion started by: spidy
1 Replies

2. Shell Programming and Scripting

How to kill the process when the file is locked?

I was trying to read the file to create a table in SAS and I got error as follows while I read. Resource is write-locked by another user. File =/usr/sas/sas_config/Lev1/SASApp/StoredProcessServ​er/Logs/SASApp_STPServer_2015-09-29_tmp_18208.log. System Error Code = 0. ERROR: File is in... (10 Replies)
Discussion started by: Ram Kumar_BE
10 Replies

3. UNIX for Dummies Questions & Answers

UNIX Account getting Locked Everyday between same Time Frame

I am facing an Issue with a particular Unix Account ( ie a particular Userid) getting LOCKED everyday between 7:30am and 8:00am. The Password associated with this particular Account has been setup such that it should never Expire at all but it does LOCK the Account after more than 3 failed... (5 Replies)
Discussion started by: pchegoor
5 Replies

4. Shell Programming and Scripting

Check if file is locked otherwise gzip it

Dear community, I've a continuos tcpdump on redhat that close the dumped file every 100000 captured packets. To avoid disk full I would like to gzip the closed *.cap file. But how can I check if the file is currently opened by tcpdump and skip it from gzip? Thanks! EDIT: Just to post an... (9 Replies)
Discussion started by: Lord Spectre
9 Replies

5. Solaris

fssnap error :snapshot error: File system could not be write locked

Hi Guys. This is part of my filesystem structure : Filesystem size used avail capacity Mounted on /dev/md/dsk/d0 47G 5.2G 42G 12% / /devices 0K 0K 0K 0% /devices ctfs 0K 0K 0K 0% ... (2 Replies)
Discussion started by: aggadtech08
2 Replies

6. UNIX for Dummies Questions & Answers

find locked files, print file path, unlock file

using OS X and the Terminal, I'd like to find all locked files in a specified directory, unlock them, and print a list of those files that were unlocked how can I do this? I'm familiar with chflags nouchg for unlocking one file but not familiar with unix enough to do what I'd like. Thanks! (0 Replies)
Discussion started by: alternapop
0 Replies

7. UNIX for Advanced & Expert Users

How to list locked file in unix?

Hi, I want to list out all files which are lock by some process. ex- ~/critical I want to list all files in critical directory which has been locked. I need this very badly. Any suggestion highly appriciated. Regards, Ashok (1 Reply)
Discussion started by: ashokd001
1 Replies

8. Shell Programming and Scripting

Convert Epoch time format to normal date time format in the same file

I have a file named "suspected" with series of line like these : {'protocol': 17, 'service': 'BitTorrent KRPC', 'server': '219.78.120.166', 'client_port': 52044, 'client': '10.64.68.44', 'server_port': 8291, 'time': 1226506312L, 'serverhostname': ''} {'protocol': 17, 'service': 'BitTorrent... (3 Replies)
Discussion started by: rk4k
3 Replies

9. Shell Programming and Scripting

checking whether a file is locked

hi Guys, I just wondering how I can check and ensure a file is not locked by another process. I need to modify a file using sed but I need to ensure that is not being modified by another process at the same time. Thanks. Harby. (2 Replies)
Discussion started by: hariza
2 Replies

10. Shell Programming and Scripting

Lock a file. AND Wait if file is locked

Hi, I want to do the foll steps: 1. Check if someone has a lock on my file1. 2. if file1 is locked by any other user wait in a loop till another user releases lock 3. when lock released, lock file1. 4. do procesing (write) on file1. 5. processing complete. release lock on file1. ... (2 Replies)
Discussion started by: sunil_neha
2 Replies
Login or Register to Ask a Question