Как работают внутренние работы демона cron?

Я хочу знать, как cron работает внутри. Проверяет ли процесс текущее время в бесконечном цикле (таким образом, постоянно потребляя циклы процессора)? Или какая-то функция генерирует прерывание и уведомляет демона cron ?

2 Solutions collect form web for “Как работают внутренние работы демона cron?”

Однажды я прочитал исходный код vixie-cron и должен был быть госпитализирован. Однако, если вы ищете, чтобы «некоторая функция генерировала прерывание» одновременно, вы должны исследовать системный вызов alarm(2) . Он просит ядро ​​отправить вам сигнал SIGALRM в запланированное время, которое вы затем можете поймать. Тем временем ваш процесс может сделать что-то еще или sleep() , как в больнице.

Я уверен, что существует множество вариаций, так как он работает в dcron, так это то, что он спит до 60 секунд за раз, он пытается синхронизировать это, спая меньше, если необходимо, чтобы проснуться через 00 секунд.

Он использует sleep() который заставляет процесс спать (если не возникает сигнал) без использования CPU. Когда он просыпается, он проверяет файл cron.update (созданный редактированием crontab ). При необходимости он обновляет свою очередь выполнения, запускает ожидаемые задачи и снова спит.

Я никогда не видел, чтобы кто-то из кронов работал чаще, чем один раз в минуту, так что обычно это достаточно легко для ресурсов.

Под linux, если вы смотрите в /proc на такие вещи, как чтение / запись байтов или iowait для crond вы можете увидеть, что он имеет относительно высокий уровень использования, потому что он заканчивает учет всех дочерних процессов, которые он запускает, например, на Centos 5. Икс:

 # grep "^[rw]" /proc/`pgrep crond`/io rchar: 153463658151 wchar: 91095820045 read_bytes: 44480745472 write_bytes: 2261389312 

(благодаря запланированным обновлениям пакетов и задачам ASLR / prelink в этом случае)

См. Также https://stackoverflow.com/questions/3982957/how-does-cron-internally-schedule-jobs .

  • Выполняется ли задание, запланированное в crontab, даже когда я выхожу из системы?
  • Где работает этот cronjob?
  • Как я могу запускать работу Cron каждые 5 дней
  • cron для удаления после выполнения
  • Как отформатировать эти два сложных оператора cron?
  • В чем смысл косой черты в кронтабе?
  • Почему crontab -e отличается от менее / etc / crontab?
  • Как я могу подать сигнал на задание cron, чтобы пропустить прогоны?
  • cron найдет определенные команды на PATH, но не другие
  • Разница между вкладками CRON 0/5 и * / 5?
  • Cron ежечасно работает в нечетные часы
  • Interesting Posts

    переопределение параметров для конфигурации клиента openssh

    Как рекурсивно перемещать партии из 20 файлов в пронумерованные папки из папки из 1000 файлов

    Программно переключаться между ad-hoc и обычной беспроводной сетью

    Почему невозможно подключиться к моему серверу с помощью RSA с устройства Ubuntu?

    Файл Kickstart не найден в VituralBox

    Как я могу запустить процесс в одном терминале с другого терминала

    Как определить разделитель «tab» с «cut» в BASH?

    Выполнить программу при входе в систему

    Проблема с типом раздела Mac OS X

    Убивание дерева процессов в top / htop

    Изменить расположение мониторов с несколькими мониторами

    Нормально ли, что ядро ​​списка yum в Fedora – * показывает две версии ядра, которые используются?

    Вставить многострочный текст перед первой соответствующей строкой в ​​файле

    Команда, чтобы скрыть все, кроме окна просмотра в окне терминала?

    Обнаружение подключенных мониторов, когда X не работает

    Linux и Unix - лучшая ОС в мире.