Я видел много вопросов по этому поводу, но мой кажется немного другим.
Вот что я получаю:
/etc/cron.weekly/apt-xapian-index:
FATAL -> Failed to fork.
run-parts: /etc/cron.weekly/apt-xapian-index exited with return code 100
и
/etc/cron.daily/apt:
FATAL -> Failed to fork.
и
/etc/cron.daily/apt:
DB Update failed, database locked
У меня всегда есть как минимум 600 МБ свободной оперативной памяти. Если я попытаюсь запустить вручную sudo /etc/cron.daily/apt
ничего не происходит .. оболочка зависает.
В чем может быть проблема?
РЕДАКТИРОВАТЬ: Сервер Ubuntu 14.04
Я много раз видел это сообщение. Во всех случаях «FATAL -> Failed to fork». означало, что для работы apt cron не хватило памяти. Увеличьте свободную память для этого задания cron.
У меня была точно такая же проблема на одном Ubuntu 14.04 VPS, а не на другом, поэтому я понял, что у меня нет работающего свопа на том, который давал сбой.
Оказывается, все было настроено правильно, но все, что мне нужно было сделать, это apt-get install cryptsetup
и перезагрузитесь.
Если вы ограничены ресурсами сервера, такими как я (512 МБ ОЗУ), я считаю, что было бы неплохо сохранить apt-xapian-index
, это плохо документировано, но я полагаю, что такие вещи, как apt-cache search
без него будет работать медленнее.
Это может, по крайней мере, исправить ошибку, связанную с неудачным форком, но не уверен, есть ли альтернатива удалению apt-xapian-index в случае ошибки БД.
В моей ситуации ни одно из предложенных исправлений не помогло. Я все еще получаю сообщение об ошибке DB Update failed, database locked
каждый день из ежедневной работы cron. Но удаление apt-xapian-index пакет наконец решил проблему. Источник этого сообщения об ошибке находится в /etc/cron.daily/apt
скрипт, который пытается запустить update-apt-xapian-index
что обеспечивается apt-xapian-index пакет.
Я написал небольшой пост в блоге о проблеме «Ошибка обновления БД» с моей точки зрения.
Причина зависания оболочки при запуске sudo /etc/cron.daily/apt
это призыв к random_sleep()
. Если вы закомментируете это (в моем Ubuntu 14.04 это была строка 425), вы, по крайней мере, можете подтвердить, что сценарий работает, когда вы запускаете его в интерактивном режиме.
У меня была такая же проблема с /etc/cron.daily/apt
в Ubuntu 12 и 14 arm, но запуск скрипта из оболочки завершился успешно. Я решил это благодаря https://serverfault.com/a/191051/243172 добавив строку
ulimit -s unlimited
в начале сценария.