What is the best way to prevent a Linux program/daemon from being executed more than once at a given time?
Share
Sign Up to our social questions and Answers Engine to ask questions, answer people’s questions, and connect with other people.
Login to our social questions & Answers Engine to ask questions answer people’s questions & connect with other people.
Lost your password? Please enter your email address. You will receive a link and will create a new password via email.
Please briefly explain why you feel this question should be reported.
Please briefly explain why you feel this answer should be reported.
Please briefly explain why you feel this user should be reported.
The most common way is to create a PID file: define a location where the file will go (inside /var/run is common). On successful startup, you’ll write your PID to this file. When deciding whether to start up, read the file and check to make sure that the referenced process doesn’t exist (or if it does, that it’s not an instance of your daemon: on Linux, you can look at
/proc/$PID/exe). On shutdown, you may remove the file but it’s not strictly necessary.There are scripts to help you do this, you may find
start-stop-daemonto be useful: it can use PID files or even just check globally for the existence of an executable. It’s designed precisely for this task and was written to help people get it right.