我看到很多与此相关的问题,但我的问题似乎有些不同。
以下是我收到的信息:
/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 MB 的可用 RAM。如果我尝试手动运行,sudo /etc/cron.daily/apt
则不会发生任何事情……shell 会挂起。
可能是什么问题呢?
编辑:Ubuntu 服务器 14.04
答案1
我经常看到此消息。在所有情况下,“FATAL -> Failed to fork。”意味着没有足够的内存供 apt cron 作业运行。增加此 cron 作业的可用内存。
答案2
在我的情况下,所有建议的修复方法都不起作用。我仍然DB Update failed, database locked
每天都收到来自每日 cron 作业的错误消息。但卸载apt-xapian-index包最终解决了这个问题。该错误消息的来源是/etc/cron.daily/apt
试图运行的脚本update-apt-xapian-index
,该脚本由apt-xapian-index包裹。
我写了一个小博客文章关于“数据库更新失败”问题,从我的角度来看。
答案3
我在一个 Ubuntu 14.04 VPS 上遇到了完全相同的问题,而在另外一个上没有,所以我意识到在出现故障的那个 VPS 上没有可以正常工作的交换器。
事实证明一切配置都正确,但我所要做的就是apt-get install cryptsetup
重新启动。
如果您像我一样受到服务器资源的限制(512 MB RAM),我觉得保留是个好主意apt-xapian-index
,虽然没有很好的记录,但我想apt-cache search
如果没有它,类似的程序运行起来会更慢。
这至少可以修复分叉失败的错误,不确定在出现 DB 错误的情况下是否有其他方法可以删除 apt-xapian-index。
答案4
运行时 shell 似乎挂起的原因 sudo /etc/cron.daily/apt
是调用了random_sleep()
。如果你将其注释掉(在我的 Ubuntu 14.04 上,它是第 425 行),你至少可以确认脚本在以交互方式运行时有效。