Расшифровка команды crontab - PullRequest
       6

Расшифровка команды crontab

1 голос
/ 22 января 2011

Это мой первый вопрос по stackoverflow:)

Мне нужно добавить следующий crontab cPanel для сайта, который я только что перенес на hostgator, однако у меня возникают проблемы с его пониманием.

Вот переданная команда cron:

*/30    *    *    *    *    /usr/local/bin/php /data/web/vhosts/advisorcheck.com/cron/geocode_paid_members.php
0        9,15       *       *       *       /usr/bin/wget http://www.advisorbackgroundcheck.com/--spider

Мне нужна помощь в расшифровке вышеуказанного и добавлении его в crontab!

Ответы [ 2 ]

4 голосов
/ 17 февраля 2011

Есть полезный сайт по адресу http://cronwtf.github.com/, где вы можете вставить строки cron, и он даст вам английское объяснение того, что он будет делать. Вставка ваших строк дает следующие результаты:

Работает /usr/local/bin/php /data/web/vhosts/advisorcheck.com/cron/geocode_paid_members.php в минуты: 00,: 30, каждый час.

Работает /usr/bin/wget http://www.advisorbackgroundcheck.com/--spider в минута: 00, часы 9, 15, каждый день.

Существует также модуль perl Schedule :: Cron :: Events , который делает нечто подобное, этот модуль доступен в Ubuntu 16.04. Надеемся, что он доступен через менеджеры пакетов других дистрибутивов.

Чтобы установить модуль в Ubuntu:

$ sudo apt install libschedule-cron-events-perl

Использование этого модуля в скрипте:

#!/usr/bin/perl

use strict;
use warnings;

use Schedule::Cron::Events;

my $cron_line = shift;

my $count = 10;

my $cron = new Schedule::Cron::Events($cron_line, Seconds => time() );
my ($sec, $min, $hour, $day, $month, $year);

print "The next $count events for the cron line:\n\n" . $cron_line . "\n\nwill be:\n\n";

for (1..$count) {
    # find the next execution time
    ($sec, $min, $hour, $day, $month, $year) = $cron->nextEvent;
    printf(
        "Event %02d will start at %02d:%02d:%02d on %d-%02d-%02d\n",
        $_,
        $hour,
        $min,
        $sec,
        ($year+1900),
        ($month+1),
        $day,
    );
}

$cron->resetCounter;
($sec, $min, $hour, $day, $month, $year) = $cron->previousEvent;
printf(
    "\nThe most recent event started at %02d:%02d:%02d on %d-%02d-%02d\n",
    $hour,
    $min,
    $sec,
    ($year+1900),
    ($month+1),
    $day
);

выдаст следующий вывод:

$ ./cron-events.pl '0 9,15 * * *'
The next 10 events for the cron line:

0 9,15 * * *

will be:

Event 01 will start at 15:00:00 on 2017-02-21
Event 02 will start at 09:00:00 on 2017-02-22
Event 03 will start at 15:00:00 on 2017-02-22
Event 04 will start at 09:00:00 on 2017-02-23
Event 05 will start at 15:00:00 on 2017-02-23
Event 06 will start at 09:00:00 on 2017-02-24
Event 07 will start at 15:00:00 on 2017-02-24
Event 08 will start at 09:00:00 on 2017-02-25
Event 09 will start at 15:00:00 on 2017-02-25
Event 10 will start at 09:00:00 on 2017-02-26

The most recent event started at 09:00:00 on 2017-02-21
1 голос
/ 22 января 2011

Первая команда будет выполняться каждые 30 минут, а вторая будет выполняться дважды в день (при 9 00 и 15 00 ).

Вот объяснение синтаксиса crontab: http://en.wikipedia.org/wiki/Cron#Examples

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...