Используя 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
скорректировать выходной формат.
Это должно работать вовремя линейный к входному размеру.
Нет Вы не должны перезапускать 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 задания крона
crontab -e
? – Timo 30.01.2014, 11:04crontab -e
то, что я использую.. – precise 30.01.2014, 11:06man cron
-> Имя) – Timo 30.01.2014, 11:08nano
) закрывается также!.. и возможно это вызвало беспорядок... – precise 30.01.2014, 14:19