http://www.perlmonks.org?node_id=478842


in reply to Writing a Perl Daemon

(B) Try to flock a lockfile without blocking. Exit if you didn't get the lock.

Alternatively, if your application is an IP server which always listens on the same port, forget the lockfile and exit if you can't create the server socket. You can't create two sockets on the same port, so the socket will act as the lockfile.

(C) Launch it in your OS's startup script.

(D) Create a cron job that starts the script periodically. (B) will make sure only one is running.

Update: By the way, you might want to have the script check for the presence of a specific file (perhaps called "no_start") at startup. If the file exists, then exit immediately. That will allow you to kill the server to do maintenance without worrying about it restarting itself.