On 30 Jun 2009, at 02:17, Paul Archer wrote: > I am in the process of developing a few scripts that: > 1) pull images off a CF card on my laptop > 2) move the images to a server > 3) rename the images on the server according to the EXIF info > > > I figure that for 2 & 3, the easiest way to make sure they work is > to have them run in a cron job once a minute (or five). (Wake up, > check to see if there's any work, either do it or quit.) > > The problem is that I need to make sure that if the script starts > while another copy of the script is running, it quits. I can work > out how to create lock files, stick in PIDs to make sure the script > is really there, etc. But it seems like someone must have tackled > this problem already (IIRC, I ran across a Perl module that back in > my misspent youth). > > Does anyone know of a gem (or just some canonical code) that handles > this easily? > > Paul > > PS I've also thought about using 'daemonize', but I'd still have to > worry about locking. This is not for the faint-hearted, but if you grab the Ruby Plumber's Guide from the link in my sig you'll find an example of using POSIX semaphores with syscall for process synchronisation on slide 41. This is a work in progress so you'll need to look up some syscall numbers for your platform, however if you're not in a hurry I'm hoping to have a ruby/dl version in the next version (for Rails Underground in July) which will avoid this limitation. Ellie Eleanor McHugh Games With Brains http://slides.games-with-brains.net ---- raise ArgumentError unless @reality.responds_to? :reason