Перезапуск крона или crond необходимый после каждого нового дополнения расписания или модификации?

Используя awk должно быть достаточно эффективным - это обеспечивает встроенные ассоциативные массивы, где ключевое время поиска логарифмически пропорционально количеству ключей (Вашей справочной таблицы - который является относительно маленьким в Вашем примере).

Для Вашего входа это было бы:

42M * log2(1.5M) -> 42M * 20 key comparisons 

(где M означает 10^6),

В случае, если Ваш awk использует хеш-таблицы, каждый ключевой поиск только стоил бы постоянного количества времени.

Пример эффективного awk основывал решение (использующий разделителя полей по умолчанию):

$ awk 'ARGIND == 1 { a[$1] = 1; next } a[$1] { print $0 }' keys.dat largefile.dat

Так как оба исходных данных отсортированы, Вы могли записать сценарий, который будет более эффективным (со временем выполнения, масштабирующимся линейно с обоими входными размерами файла). Но это стоило бы большего количества времени, программируя его.

Или Вы могли использовать join которые ожидают отсортированные файлы, как введено - ограничение - то, что Ваш ключ должен быть в алфавитном порядке отсортирован - и возможно необходимо настроить выходной формат. Например:

$ join -j1 keys.dat largefile.dat

Использовать -t настраивать разделителя полей и -o скорректировать выходной формат.

Это должно работать вовремя линейный к входному размеру.

30
30.01.2014, 10:38
2 ответа

Нет Вы не должны перезапускать cron, это заметит изменения в Ваших crontab файлах (также /etc/crontab или пользователи crontab файл).

Наверху Вашего/etc/crontab Вы, вероятно, имеете (если у Вас есть реализация Vixie cron это IIRC является тем на Debian):

# /etc/crontab: system-wide crontab
# Unlike any other crontab you don't have to run the `crontab'
# command to install the new version when you edit this file
# and files in /etc/cron.d. These files also have username fields,
# that none of the other crontabs do.

Причина Вы не могли бы видеть определенные реализованные изменения, состоит в том, если Вы добавляете вещи к, например. /etc/cron.daily и ежедневное выполнение уже произошло.

Сообщение, что Вы добираетесь, - то, потому что Вы используете старый способ перезапустить крон в Вашей системе. Рекомендуемый путь (но не необходимый, если Вы просто редактируете файлы крона):

 restart cron

Конечно, необходимо перезагрузить для наблюдения эффектов @reboot задания крона

19
27.01.2020, 19:38
  • 1
    это не было задание перезагрузки, но каждое n мелкое задание крона.. и перезапуск, кажется, работает с sudo и со старыми и с новыми путями.. но не для обычного пользователя.. –  precise 30.01.2014, 11:01
  • 2
    Как Вы редактируете crontab? Как пользователь с crontab -e? –  Timo 30.01.2014, 11:04
  • 3
    да.. crontab -e то, что я использую.. –  precise 30.01.2014, 11:06
  • 4
    Сделайте у Вас есть Крон Vixie (взгляд на man cron -> Имя) –  Timo 30.01.2014, 11:08
  • 5
    Кажется, что просто сохранение изменений недостаточно, и запланированные задания применяются только после текстового редактора (я использую nano) закрывается также!.. и возможно это вызвало беспорядок... –  precise 30.01.2014, 14:19
[113459]Перезапуск может не потребоваться. Как и [113752], я сказал в своих комментариях [113753], что [113754] текстовый редактор [113755], который вы использовали (тот, который назначен для редактирования задания cron-jobs) для редактирования задания [113756] нужно закрыть [113757]; [113758] просто сохранения содержимого недостаточно [113759]. (Это то, что я испытал. Редактирование заданий через [113760]nano[113761] и сохранение с помощью [113762]Ctrl[113763]+[113764]O[113765] с еще открытым файлом не применяется сразу, но только после закрытия редактора с помощью [113766]Ctrl[113767]+[113768]X[113769]).). И как уже упоминалось в [113770] этом ответе [113771] (по [113772]terdon[113773]), демон-крон проверял каждую минуту, не нужно ли запускать какое-либо задание, и запускал те, которые должен.[113462].
3
27.01.2020, 19:38

Теги

Похожие вопросы