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


in reply to Writing a Perl Daemon


  1. In your script, a while(1)-like cycle with some kind of sleep or select(undef, undef, undef, [time]) will do.

  2. Use a lock file and write your pid ($$) in it. In this way, daemon startup code can check for lock file, and if the pid stored in it is not alive (kill 0, $pid) you can safely start the current instance and overwrite the pid file.

  3. A simple way is to append a line in your /etc/rc.d/rc.local file, like the following:
    # Start my daemon... logger "My Daemon starting. All you out there, watch out!" /mypath/mydaemon.pl &
  4. AFAIK, it isn't possible to "tolerate" a SIGKILL. However, you can restart your deamon ASAP. To achieve that, you probably want to modify your /etc/inittab file. In this way, your init process takes care of restarting your daemon when it detects that it is not running. Put a line like this in inittab:
    # Run my daemon in runlevels 345 x:345:respawn:/mypath/mydaemon.pl

Are you running on *nix, are you? :-)