Beefy Boxes and Bandwidth Generously Provided by pair Networks
There's more than one way to do things
 
PerlMonks  

I can't get cron to work on cygwin...

by cecil36 (Monk)
on Jun 12, 2002 at 14:12 UTC ( #173832=perlquestion: print w/ replies, xml ) Need Help??
cecil36 has asked for the wisdom of the Perl Monks concerning the following question:

...so I'm thinking about writing a script in perl that will call another perl script every hour. What tools or modules would I need to get?

Comment on I can't get cron to work on cygwin...
Re: I can't get cron to work on cygwin...
by vladb (Vicar) on Jun 12, 2002 at 14:16 UTC
    If you simply need to invoke a script every once in a while (say, 1 hour), you can pretty much get by without the aid of special modules. Simply, have a main loop in your script, inside of which you'll spawn off a process and sleep for 1 hour and then repeat this cycle all over again.
    my $script = 'foobar.pl'; my $sleep_time = 60*60; # sleep for 1 hour. while (1) { system("foobar.pl"); sleep($sleep_time); }


    UPDATE: However, for complex scheduling, I suggest you take a look at the Schedule-Cron module. So, your script might look as following:
    use Schedule::Cron; sub run_scripts { system("foobar.pl"); } # Create new object with default dispatcher my $cron = new Schedule::Cron(); # Add dynamically crontab entry # invoke run_scripts() every 0 minute past # each hour. $cron->add_entry("0 * * * Mon-Fri", \&run_scripts); # Run scheduler $cron->run(detach=>1);


    _____________________
    open(I,$0);<I>;$~=$/;$/='~';$_=<I>;($/)=/(.)$~/;s/[$~~]//g;/(v)/;$-=$-[0];s;\Q$/\E;$~;g;($/,$^)=/^(.)(.)/;
    #%  xxxxxx   xx-+  xx    xxx xx  xx       xx  xx   xxx   xxxxx+ xx  xx xxxx xxxxx  ......+
    #x xxxxvxxx xx  xx xv   xxxx x+ %+  ===== xx  xx  xx xx  x+  =x xx xx  xx   xx xx ...+
    #x xx xx xx xx  xx xx  xx xx xxx+         xxxxxx xx   +x xx     xx+x-  xxxx xxxx ........+
    #% xx xx xx xx  xx xx xx  x+ xx xx  =+=== xx  xx xxxx-xx xx  =x +x xx  xx   xx xx ...+
    #% xx xx xx  -+x+  xxx+   xx xx  xx       xx  xx x+   xx xxx+xx xx  xx xxxx xx  xx ....+~
    for(split/$~/){s,[ $/],,g;/(.)$/;$l=$-[0];/(.)/||next;$_=chr$-+$l;$".=($1=~/$^/)?" \u$_":$_;}print$";
    
Re: I can't get cron to work on cygwin...
by Joost (Canon) on Jun 12, 2002 at 14:20 UTC
    I remember hearing something about an at command on windows, so maybe you can look at that.

    Otherwise:

    while (1) { system("some command") and die "Error running command: $?"; sleep 60*60; }
    Should at least try to do the job.
    -- Joost downtime n. The period during which a system is error-free and immune from user input.
Re: I can't get cron to work on cygwin...
by perrin (Chancellor) on Jun 12, 2002 at 14:25 UTC
    The "Scheduled Tasks" feature of Windows (at least Win2K) works just fine for this. I've been using it for months with no trouble.
      I second that. I use cygwin all the time but for something like this, I would use Scheduled Tasks (you can find it in the Control Panel on Win2K) or the scheduler service on NT. I currently use Scheduled Tasks to run a Perl script daily and it works great.

Log In?
Username:
Password:

What's my password?
Create A New User
Node Status?
node history
Node Type: perlquestion [id://173832]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this? | Other CB clients
Other Users?
Others chilling in the Monastery: (10)
As of 2014-09-16 16:55 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    How do you remember the number of days in each month?











    Results (36 votes), past polls