2009年10月20日 星期二

自動重開機500次?

在bbs的linux版上看到有網友想找可以自動reboot500次的linux程式,我覺得很有趣;不過一下就把script公佈出來,一點趣味也沒有。所以我就先把解答寫在這裡,也許有一天,他會找到這篇。

重開機500次可能是要測試硬體吧,這就超過我的專長;不過自動重開機卻可以用8行不到的script輕鬆解決:

修改/etc/rc.local,新增一行如下:

[ -e /boot/autoReboot.sh ] && bash /boot/autoReboot.sh
然後新增一個/boot/autoReboot.sh內容如下:

所需要會的技巧相當簡單:
1. 會使用while loop。
2. 會使用test敘述。
3. 會使用shell script裡的整數運算(雖然他非常陽春)。
4. 會使用function(雖然他非常陽春)。
5. 知道開機時要額外啟動的命令檔為何。

5 則留言:

Unknown 提到...

您好~~偶而在google 發現你的這篇文章,最近剛好也在摸索這個tool, 卻發現我在SLED11 上 找不到您說的那個/etc/rc.local 位置 我索性放在/etc/rc./boot.loacal 再依照你的步驟 卻無法重開機~不知道是哪裡出錯啦~~可否再幫忙一下 感謝~~

maxsolar 提到...

hi,
我從opensuse看了一下/etc/rc.d/boot這個script,她會去執行兩個額外的script:
/etc/rc.status
/etc/sysconfig/boot (約40,41行處)
你可以把script寫在42行或之後的位置,
或是多一行
. /etc/rc.local
然後快樂的在rc.local裡寫入你要的script。

Unknown 提到...

請問這行是做什麼用的?
[ -e /boot/autoReboot.sh ] && bash /boot/autoReboot.sh
"-e"以及"&&"分別代表什麼功用呢?

Unknown 提到...

請問這行是做什麼用的?
[ -e /boot/autoReboot.sh ] && bash /boot/autoReboot.sh
"-e"以及"&&"分別代表什麼意思? 我現在遇到的問題是我寫好的script單獨執行可以輸出我想要的字幕,但是用rc.local啟動那些字幕就不見了,但還是有執行,請問是不是漏了什麼?

maxsolar 提到...

這只是一個測試的功能,如果那個script存在為真,就執行這個script。反之若不存在就什麼事也不做。

讀取rc.local的也是一個service, 目前的Ubuntu由rc-local.service來讀取並執行。rc.local如果是被rc-local.service執行的話,會不會印出訊息取決於你有沒有開boot splash(預設都是有的),所以訊息被boot splash遮蔽所以看不到。