The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.

custom_sleep - Demo for a custom 'sleep' function

This example demonstrates the usage of the 'sleep' option for Schedule::Cron with a custom sleep method which can dynamically modify the crontab even inbetween to cron events. It provides a cron daemon which listens on a TCP port for commands.

Please note that this is an example only and should obviously not used for production !

When started, this script will listen on port 65331 and will first ask for a password. Use 'Purfect' here. Then the following commands are available:

   status                  -- Print internal job queue
   add id "cron spec" name -- Add a sample jon which will bring "id: name" 
                              each time "cron spec" fires
   load /path/to/crontab   -- Load a crontab as with Schedule::Cron->load_crontab 
   delete id               -- Delete job entry
   quit                    -- Disconect

A sample session looks like:

First start the server:

  ./custom_sleep.pl
  Please wait while initialization is scheduled
  Schedule::Cron - Starting job 0
  Ready, my port is localhost::65331
  Schedule::Cron - Finished job 0
  Schedule::Cron - Starting job 5
  Now: Periodic
  Schedule::Cron - Finished job 5

And then a client:

  $ telnet localhost 65331
  Trying 127.0.0.1...
  Connected to localhost.localdomain (127.0.0.1).
  Escape character is '^]'.
  Password: Purfect
  Password accepted

  status
  Job 0 0 0 1 1 * Next: Sun Jan 1 00:00:00 2012 - NewYear( )
  End of job queue

  load cron.tab
  Loaded cron.tab

  status
  Job 1 34 2 * * Mon Next: Mon Jun 6 02:34:00 2011 - "make_stats"( )
  Job 2 43 8 * * Wed Next: Wed Jun 8 08:43:00 2011 - "Make Peace"( )
  Job 0 0 0 1 1 * Next: Sun Jan 1 00:00:00 2012 - NewYear( )
  End of job queue

  add Halloween "30 18 31 10 *" Pumpkin time
  Added 30 18 31 10 *

  add Today "11 15 * * *" Something to do
  Added 11 15 * * *
 
  add Now "*/2 * * * * 30" Periodic
  Added */2 * * * * 30

  status
  Job 5 */2 * * * * 30 Next: Thu Jun 2 13:40:30 2011 - Now( Periodic )
  Job 4 11 15 * * * Next: Thu Jun 2 15:11:00 2011 - Today( Something to do )
  Job 1 34 2 * * Mon Next: Mon Jun 6 02:34:00 2011 - "make_stats"( )
  Job 2 43 8 * * Wed Next: Wed Jun 8 08:43:00 2011 - "Make Peace"( )
  Job 3 30 18 31 10 * Next: Mon Oct 31 18:30:00 2011 - Halloween( Pumpkin time )
  Job 0 0 0 1 1 * Next: Sun Jan 1 00:00:00 2012 - NewYear( )
  End of job queue
 
  delete Today
  Deleted Today
  
  status
  Job 4 */2 * * * * 30 Next: Thu Jun 2 13:42:30 2011 - Now( Periodic )
  Job 1 34 2 * * Mon Next: Mon Jun 6 02:34:00 2011 - "make_stats"( )
  Job 2 43 8 * * Wed Next: Wed Jun 8 08:43:00 2011 - "Make Peace"( )
  Job 3 30 18 31 10 * Next: Mon Oct 31 18:30:00 2011 - Halloween( Pumpkin time )
  Job 0 0 0 1 1 * Next: Sun Jan 1 00:00:00 2012 - NewYear( )
  End of job queue

  q
  Connection closed by foreign host.