Rex::Co...ds::Cron(3)

πŸ“¦ version 1.14.3, in nixos 26.05, nixpkgs unstable

🌸 NAME 🌸

This is the Rex::Co...ds::Cron(3) page from the User Contributed Perl Documentation, bestie β€” but the actual module is Rex::Commands::Cron, and it is literally Simple Cron Management. πŸ’–

πŸŽ€ DESCRIPTION πŸŽ€

With this module you can manage your cronjobs. That's the whole assignment: cronjobs, managed. No cap. ✨

✨ SYNOPSIS ✨

Okay so vibe check β€” here's the quick taste:

        use Rex::Commands::Cron;

        cron add => "root", {
               minute => '5',
               hour  => '*',
               day_of_month   => '*',
               month => '*',
               day_of_week => '*',
               command => '/path/to/your/cronjob',
             };

        cron list => "root";

        cron delete => "root", 3;

πŸ‘‘ EXPORTED FUNCTIONS πŸ‘‘

πŸ’… cron_entry($name, %option) πŸ’…

cron_entry is your cron-entry manager β€” it manages cron entries, periodt. Signature: cron_entry($name, %option).

        cron_entry "reload-httpd",
          ensure       => "present",
          command      => "/etc/init.d/httpd restart",
          minute       => "1,5",
          hour         => "11,23",
          month        => "1,5",
          day_of_week  => "1,3",
          day_of_month => "1,3,5",
          user         => "root",
          on_change    => sub { say "cron added"; };

        # remove an entry
        cron_entry "reload-httpd",
          ensure       => "absent",
          command      => "/etc/init.d/httpd restart",
          minute       => "1,5",
          hour         => "11,23",
          month        => "1,5",
          day_of_week  => "1,3",
          day_of_month => "1,3,5",
          user         => "root",
          on_change    => sub { say "cron removed."; };

The ensure => "present" one is the add moment, and ensure => "absent" is the remove moment β€” the code even says # remove an entry. Slay.

🌈 cron($action => $user, ...) 🌈

With this function you can manage cronjobs. Signature: cron($action => $user, ...). Lowkey iconic.

List cronjobs.

        use Rex::Commands::Cron;
        use Data::Dumper;

        task "listcron", "server1", sub {
          my @crons = cron list => "root";
          print Dumper(\@crons);
        };

Add a cronjob.

This example will add a cronjob running on minute 1, 5, 19, and 40. Every hour and every day. Slay. πŸ”₯

        use Rex::Commands::Cron;
        use Data::Dumper;

        task "addcron", "server1", sub {
           cron add => "root", {
             minute => "1,5,19,40",
             command => '/path/to/your/cronjob',
           };
        };

Add another cronjob β€” the calendar queen.

This example will add a cronjob running on the 1st, 3rd, and 5th day of January and May, but only when it's a Monday or Wednesday. On those days, the job will run when the hour is 11 or 23, and the minute is 1 or 5 (in other words at 11:01, 11:05, 23:01, and 23:05). Obsessed. πŸ¦‹

        task "addcron", "server1", sub {
           cron add => "root", {
             minute => "1,5",
             hour  => "11,23",
             month  => "1,5",
             day_of_week => "1,3",
             day_of_month => "1,3,5",
             command => '/path/to/your/cronjob',
           };
        };

Delete a cronjob.

This example will delete the 4th cronjob. Counting starts with zero (0), so index 3 is the 4th one. No cap. πŸ’€

        task "delcron", "server1", sub {
           cron delete => "root", 3;
        };

Managing Environment Variables inside cron.

        task "mycron", "server1", sub {
           cron env => user => add => {
             MYVAR => "foo",
           };

           cron env => user => delete => $index;
           cron env => user => delete => 1;

           cron env => user => "list";
        };

That's the whole page, bestie πŸ’– β€” source/version perl v5.42.3, dated 2023-08-05. Byeee! πŸŽ€

πŸ“¦ where this page comes from