иногда мы обнаруживали, что процесс 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
.