LINUX.ORG.RU

Может ли (и - почему) дублироваться cron? И необходимо ли это исправлять?

 


0

1

CentOS Linux 7

ps waxfu отображает вывод вроде

root      XXXX  0.0  0.0 128300  1696 ?        Ss   Jun06   0:17 /usr/sbin/crond -n
root      XXXX  0.0  0.0 180324  2552 ?        S    10:56   0:00  \_ /usr/sbin/CROND -n
www       XXXX  0.0  0.0 113116  1204 ?        Ss   10:56   0:00  |   \_ /bin/sh -c /usr/bin/php74 ...
www       XXXX  0.1  0.0 632232 46160 ?        S    10:56   0:00  |       \_ /usr/bin/php74 ...
root      XXXX  0.0  0.0 180324  2552 ?        S    11:00   0:00  \_ /usr/sbin/CROND -n
www       XXXX  0.0  0.0 113116  1204 ?        Ss   11:00   0:00  |   \_ /bin/sh -c /usr/bin/php74 ...
www       XXXX  0.2  0.0 632232 46152 ?        S    11:00   0:00  |       \_ /usr/bin/php74 ...
root      XXXX  0.0  0.0 180324  2552 ?        S    11:04   0:00  \_ /usr/sbin/CROND -n
www       XXXX  0.0  0.0 113116  1196 ?        Ss   11:04   0:00  |   \_ /bin/sh -c /usr/bin/php74 ...
www       XXXX  8.5  0.1 822556 144496 ?       S    11:04   0:10  |       \_ /usr/bin/php74 ...
root      XXXX  0.0  0.0 180324  2552 ?        S    11:04   0:00  \_ /usr/sbin/CROND -n
www       XXXX  0.0  0.0 113116  1200 ?        Ss   11:04   0:00  |   \_ /bin/sh -c /usr/bin/php74 ...
www       XXXX  0.7  0.0 632232 46160 ?        S    11:04   0:00  |       \_ /usr/bin/php74 ...
root      XXXX  0.0  0.0 180324  2552 ?        S    11:05   0:00  \_ /usr/sbin/CROND -n
www       XXXX  0.0  0.0 113116  1200 ?        Ss   11:05   0:00  |   \_ /bin/sh -c /usr/bin/php74 ...
www       XXXX  3.0  0.1 838904 160228 ?       S    11:05   0:01  |       \_ /usr/bin/php74 ...
root      XXXX  0.0  0.0 180324  2552 ?        S    11:05   0:00  \_ /usr/sbin/CROND -n
www       XXXX  0.0  0.0 113116  1200 ?        Ss   11:05   0:00      \_ /bin/sh -c /usr/bin/php74 ...
www       XXXX  5.4  0.0 686620 99936 ?        S    11:05   0:03          \_ /usr/bin/php74 ...

Означает ли это, что запущено 6 инстансов crond, или каждая CROND строка соответствует одной cron job? И как эти job могли быть запущены, почему они продолжают выполняться, учитывая что при попытке просмотра активных cron job с помощью crontab -l ни одной задачи с подобным синтаксисом нет?

Ответ на: комментарий от Kolins

С помощью

crontab -u www -l

удается выцепить одну задачу, запускающуюся ежеминутно:

* * * * * /usr/bin/php74 ...

.

Почему в таком случае ps отображает несколько ее выполнений? Потому что задача не успевает выполниться за минуту (PHP скрипт), и следом запускается новая?

Иными словами: запущен один cron-сервис, выполняющий одномоментно 6 задач, а не 6 задублированных cron-сервисов, выполняющих одну и ту же задачу каждый?

alekseipa5
() автор топика
Последнее исправление: alekseipa5 (всего исправлений: 3)
Ответ на: комментарий от alekseipa5

У тебя в третьей колонке справа написано время старта.

Если хочется что-то изменить, используй flock (чтобы предотвратить старт новой задачи пока не закончилась старая) и/или timeout (чтобы убивать старые задачи если они не успели) для своих тасочек.

slowpony ★★★★★
()
Ответ на: комментарий от alekseipa5

Про время запуска вам уже написали, что оно разное. Ещё добалю, что и файла /usr/sbin/CROND у вас в системе нет. Окуда взялась мысль, что это может быть «6 задублированых»? Да, это просто php74 не успевает отработать, но crond не ждёт завершения задачи, спокойно запускает новую.

Но, лучше ещё посмотреть вывод ″ps -eo pid,lstart,cmd″, чтобы время старта было с секундами, тогда будет понятно, два процесса с ″11:05″ действительно старовали в одновременно или с разницей в 59 секунд, а выводе секунды отбросило.

Похоже, у вас там не просто скрипт не успевает выполниться, а, либо зависает, либо сильно мешает другим, так как есть 10:56, но 10:57 нет.

mky ★★★★★
()
Последнее исправление: mky (всего исправлений: 1)