Cronjob под Ubuntu работает медленно
Я настроил cronjob (запуск скрипта bash) с crontab -e
который локально копирует некоторые данные с одного жесткого диска на другой (rsync
) и после этого сравнивает их (diff
).
Я выполнил сценарий вручную, чтобы увидеть, все ли работает как запланировано. Он скопировал 7 ГБ и занял около 30 минут. Когда он запускается как cronjob, он занимает 4 часа, снова копируя 7 ГБ.
Данные и сценарий не изменились с момента ручного вызова и вызова сценария cronjob.
- Может быть, cronjobs работают как демоны с очень небольшим приоритетом?
- Если так, как я могу это изменить?
1 ответ
Решение
Если мне не изменяет память, cron работает с хорошим уровнем 2.
использование nice
, Пример:
nice -20 {script} >>/dev/null 2>&1
(или немного выше (-10, -15), если -20 перегружает вашу систему). Все "дети" внутри {script} будут работать с одинаковыми nice
уровень как "родитель".
- man-страница для хорошего.
- Существует также возможность планирования ввода-вывода.
- "Nicenesses" варьируется от -20 (наиболее благоприятное планирование) до 19 (наименее благоприятное планирование).
- Процесс с хорошим +15 получит 25% процессорного времени от процесса с хорошим +0 (то есть (20 - 15)/(20 - 0) = 0,25).