There are several ways to do this, but I’m not sure which one of them is the best.
Here’s what I can think of:
- Look for the process using pgrep.
- Have the script lock itself using flock, and then check if it is locked each time it runs.
- Create a pid file in /var/run/program_name.pid and check for existence, and compare pids if needed.
There are probably more ways to do this. What do you think is the best approach?
There are many ways to do it. PID files are the traditional way to do it. You could also hold a lock on a file, for example the program itself. This small piece of code will do the trick:
One advantage over PID files is that files automatically get unlocked when the program exits. It’s much easier to implement in a reliable way.