「啟動作業正在運行以實現 /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 中運作良好...

您也可以在修剪之前新增一個睡眠參數,以便兩個修剪指令將在設定的秒數後執行。這應該允許啟動過程完成,從而導致修剪命令在背景運行。

像這樣(延遲 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 how-to 中改變了這一點。

筆記:我只在 Ubuntu 14.04 和 Linux Mint 17.x 的 rc.local 中測試了這樣的睡眠參數(出於修剪之外的其他目的),所以我不確定這是否會在 Ubuntu 15.04 中類似地工作。

答案3

我遇到了同樣的問題,基本上,當 rc.local 中的某些內容(例如某種守護程序)無法正常終止時,就會發生這種情況。要查找 rc.local 中的哪個命令是罪魁禍首,只需執行killall -9 命令/from/etc.local,一旦 rc.local 中的所有命令終止,它將重新啟動。

相關內容