Назад | Перейти на главную страницу

почему процесс crontab иногда запускается автоматически

иногда мы обнаруживали, что процесс cron нашего сервера автоматически повторяется, повторяется 2 или 3 раза

при использовании команды ps я получаю следующее:

server_xx14:~ # ps aux | grep cron

root      2596  0.0  0.0  11188   392 ?        Ss    2009   0:25 /usr/sbin/cron
root     21706  0.0  0.0  20812   944 ?        S    09:30   0:00 /usr/sbin/cron
root     23437  0.0  0.0  20812   944 ?        S    09:40   0:00 /usr/sbin/cron

Я хочу, чтобы работала только одна cron, как я могу решить эту проблему? Спасибо!

Если у вас есть несколько долго выполняющихся и / или не завершающихся (никогда не завершающихся) скриптов в cron, они вызовут появление нескольких процессов cron в списке процессов.

Чтобы узнать, что происходит, попробуйте pstree -ap и просмотрите cron в красиво отформатированном виде, как показано ниже:

  ├─cron─┬─13*[cron───sh───longrunningscript_───php]
  │      └─cron───sh───longrunningscript_───php

Это означало бы, что cron запустил новый сценарий оболочки, который запускает PHP, выполнение которого занимает много времени. Если pstree не установлен в вашей системе, ps -auxwwwf создает аналогичный вид.

Если cron будет вести себя иначе, одно длительное задание cron может остановить все другие сценарии, предназначенные для запуска в cron на неопределенный срок. И ЭТО то, чего вы не хотите.

Какая у вас ОС? У вас обязательно должен быть запущен только 1 экземпляр cron. Попробуйте запустить:

# /etc/init.d/crond stop
# /etc/init.d/crond start

Или когда-либо init.d сценарий, который ваша ОС использует для запуска cron. Если это не сработает, вы, вероятно, можете запустить stop команда, тогда kill оставшиеся процессы cron, затем запустив start.