Назад | Перейти на главную страницу

APT FATAL -> Не удалось выполнить форк

Я видел много вопросов по этому поводу, но мой кажется немного другим.

Вот что я получаю:

/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

в начале сценария.