“正在运行 /etc/rc.local 兼容性启动作业”:如何修复?

“正在运行 /etc/rc.local 兼容性启动作业”:如何修复?

我今天刚刚升级到 Ubuntu Vivid (15.04),重启后我经历了一个非常长的启动过程。我的笔记本电脑通常在 5 秒或更短的时间内启动,但现在几分钟后它还没有完成。

按下Esc显示以下屏幕:

在此处输入图片描述

最后一行显示“正在运行启动作业,以实现 /etc/rc.local 兼容性(7 分 24 秒 / 无限制)”。尽管有“无限制”部分,但它在 10 分钟后就放弃(或完成?),启动过程结束。

每次启动时都会发生这种情况。

这可能与过渡到 systemd 有关吗?我该如何修复这个问题?(现在,我在关闭笔记本电脑之前会三思而后行)。我应该报告错误吗?如果是,在哪里报告?

我的/etc/rc.local文件:

#!/bin/sh -e
#
# rc.local
#
# This script is executed at the end of each multiuser runlevel.
# Make sure that the script will "exit 0" on success or any other
# value on error.
#
# In order to enable or disable this script just change the execution
# bits.
#
# By default this script does nothing.
fstrim -v /
fstrim -v /home
exit 0

该文件是可执行的:

$ ls -l /etc/rc.local
-rwxr-xr-x 1 root root 333 aug 14  2013 /etc/rc.local

fstrim大约两年前,我按照以下说明安装了 SSD,然后添加了这两行简单的 Linux 技巧项目

显然这些就是导致我的问题的原因(我删除了它们并重新启动 - 问题消失了),但我仍然认为系统不应该像这样挂起 10 分钟。另外,我fstrim现在如何在启动时运行?

答案1

如果您将长时间运行的命令放入 中rc.local,您的启动将会延迟。您应该将这些命令发送到后台:

( fstrim -v /; fstrim -v /home ) &

也就是说,你可能不必自己做这件事。Ubuntu 14.10 添加了每周的工作fstrim

答案2

奇怪的是,这在 Ubuntu 15.04 中突然出现了问题,而在 Ubuntu 14.04 中它一直运行良好......

您还可以在 trim 之前添加 sleep 参数,这样两个 trim 命令将在设定的秒数后执行。这应该允许启动过程完成,从而导致 trim 命令在后台运行。

像这样(延迟 40 秒):

#!/bin/sh -e
#
# rc.local
#
# This script is executed at the end of each multiuser runlevel.
# Make sure that the script will "exit 0" on success or any other
# value on error.
#
# In order to enable or disable this script just change the execution
# bits.
#
# By default this script does nothing.
sleep 40
fstrim /
fstrim /home
exit 0

顺便说一句,trim 的 -v(详细)参数在这种情况下毫无用处,因为它是在后台运行的。我也在我的 Easylinuxtips 操作指南中更改了这一点。

笔记:我只在 Ubuntu 14.04 和 Linux Mint 17.x 中的 rc.local 中测试过这样的睡眠参数(用于 trim 以外的其他目的),所以我不确定这是否会在 Ubuntu 15.04 中以类似的方式工作。

答案3

我遇到了同样的问题,基本上这种情况发生在 rc.local 中的某些东西没有正常终止时,例如某种守护进程。要找出 rc.local 中的哪个命令是罪魁祸首,只需使用 killall -9 命令/from/etc.local,一旦 rc.local 中的所有命令都终止,它就会重新启动。

相关内容