Last touched file by a specific program ?


 
Thread Tools Search this Thread
Top Forums UNIX for Advanced & Expert Users Last touched file by a specific program ?
# 1  
Old 11-23-2014
CPU & Memory Last touched file by a specific program ?

i have a directory where all .csv files are available. i have 3 perl programs(ex: a.pl,b.pl,c.pl) which continuously runs every 1 minute to scan all files in that directory. now i have 2 questions

1) how can i write an app lock on that particular folder to make sure only one program will scan that folder to get files so that other program will not catch same files ?

2) how to know if one perl program already touched a particular file ?
ex:
a.pl program scanned a folder and accessing 1.csv, 2.csv and 3.csv 3 files. Now it released app lock, now b.pl program accessing same folder but it should not read 1.csv, 2.csv and 3.csv files since a.pl already reading or accessed those folders.

Note: i don't want to rename any files in this process. How to do this ?

any help would be appreciated
# 2  
Old 11-23-2014
Create a new file in that directory, that will be used as a lock file. Use flock - perldoc.perl.org on that lock file in all three scripts. Use that lock file to store information about which script executed last in this directory.
# 3  
Old 11-23-2014
This would be one of the few examples the access time stamp could be sensibly used. Keep a.pl's starting time stamp in the lock file proposed by bartus11; any file access since was by a.pl, any file accessed before can be processed by b.pl.
# 4  
Old 11-23-2014
With respect to RudiC, use of a file's access time can be problematic if any other process reads the file, such as backups.

Why 3 programs? Are they three instances of the same program?

If the expense of starting a new process is not onerous, perhaps it would be easier just to use a dispatcher that launches no more than N of your programs:

(pseudo shell code!)
Code:
filescanner | while read file; do
  while [[ ${N} -le $(pgrep appropriateoptions | wc -l) ]]; sleep ${time}; done
  fileomatic ${file} &
done

Or the dispatcher could write a file to one of N named-pipes, one for each fileomatic, something like:

(more pseudo shell code)
Code:
work=$(mktemp -d)

N=0

while read fileomatic; do
  (( N = N + 1 ))
  pipe=${work}/pipe.${N}
  ready=${work}/ready.${N}

  mkfifo ${pipe}

  ${fileomatic} ${ready} < ${pipe} &
done 

filescanner | while read file; do

  while sleep ${delay}; do

    ls -1 ${work}/*.ready | read -aready

    if [[ 0 -lt ${#ready[*]} ]]; then
      i=$(( ${RANDOM} % ${#ready[*]} ))
      n=${ready[$i]}
      echo "${file}" >> ${work}/pipe.${n##*.}
      break
    fi

  done

done

The idea is that the fileomatic will touch the 'ready' file when it can process a file

Last edited by derekludwig; 11-27-2014 at 02:59 PM.. Reason: Typo in arithmantic expression, and some bad logic
# 5  
Old 12-02-2014
Do you run them by crontab?
Then maybe you can simply chain them.
Code:
* * * * * a.pl; b.pl; c.pl

Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. UNIX for Beginners Questions & Answers

Seraching for a specific program

I know that Qt exists on this IMX6+ the device has Linux 4.9.184 embedded. I need to figure out which version of Qt it has. What is the best way to find a program given only a text based terminal? Is there a way I can grep for it? (2 Replies)
Discussion started by: Circuits
2 Replies

2. Shell Programming and Scripting

Running program and output files in specific directories

I have been running a program mseed2sac using the following command cd IV find . -type f -exec /swadmin/mseed2sac '{}' \; The problem is that I end up with a lot of files in directory IV. Instead I would like to select the designator HHZ, create a directory IV.SAC and all the files output... (11 Replies)
Discussion started by: kristinu
11 Replies

3. Shell Programming and Scripting

Program to search for the files with specific format

Hi All, Your help on the below requirement is highly appreciated. I am building a program which should pick the file from a source directory and place them into target directory. While selecting the file in source it should look for some pattern in the file name. Ex: File Name 1:... (10 Replies)
Discussion started by: bharath561989
10 Replies

4. Shell Programming and Scripting

Extract specific line in an html file starting and ending with specific pattern to a text file

Hi This is my first post and I'm just a beginner. So please be nice to me. I have a couple of html files where a pattern beginning with "http://www.site.com" and ending with "/resource.dat" is present on every 241st line. How do I extract this to a new text file? I have tried sed -n 241,241p... (13 Replies)
Discussion started by: dejavo
13 Replies

5. AIX

how to find which program that update a specific file

Hello Would you tell me how to find which program that update a specific file? I am implementing migration project. My machines OS are AIX. It is because lack of documentation, some program cannot working properly on new machine. We found the root cause of this problem is that some data... (4 Replies)
Discussion started by: cstsang
4 Replies

6. UNIX for Dummies Questions & Answers

Never touched UNIX before.. Where do I start?

I will be taking a UNIX course as a part of my college Data Com concentration curriculum. Just thought it would be a good idea to get a little head start, since this class will most likely be quite difficult for someone like me. I never did any programming and I never dealt with Unix or Linux short... (3 Replies)
Discussion started by: ibex333
3 Replies

7. What is on Your Mind?

Finally I touched 1000.Yahooooo!!!

This, my venerable audience, is my 1000th post here. Thanks for your support and help..:b: ---Vidyadhar:) (4 Replies)
Discussion started by: vidyadhar85
4 Replies

8. UNIX for Advanced & Expert Users

Checking mem usage at specific times in a program

Hi all, I'm running a simulator and I'm noticing an slow increase in memory for long simulations such that the simulation has to end because of a lack of memory. A colleague of mine ran Valgrind memcheck and reported that nothing of interest was reported other than known mem leaks. My advisor... (2 Replies)
Discussion started by: pl4u
2 Replies

9. UNIX for Dummies Questions & Answers

comparing timestamp of a file with its touched version

Hi, I'm new to unix,I wanna know how can I compare timestamp of a file with its touched version.i.e I want to be sure if the touch command has worked properly i.e if the file has been touched then a msg should be printed saying success else failure.All this to be incurred in a script. Any... (2 Replies)
Discussion started by: prince258
2 Replies

10. UNIX for Advanced & Expert Users

Which Base Level Filesets needed by a specific program?

hello... thats a great forum btw :) my problem is that I need a list of the Base Level Filesets (BLF) which are needed by a specific program. Is there any command/tool which shows me that? during the installation I can choose "Preview only" so that I can see what BLF´s are missing etc but... (4 Replies)
Discussion started by: cypher82
4 Replies
Login or Register to Ask a Question