從 linux 裡設定電腦自動開機

 檢視目前狀況,若是有這個檔案,核心就是有支援 RTC。

$ cat /proc/driver/rtc

rtc_time : 20:43:36

rtc_date : 2013-02-21

alrm_time : 01:41:19

alrm_date : 2013-02-22

alarm_IRQ : no

alrm_pending : no

update IRQ enabled : no

periodic IRQ enabled : no

periodic IRQ frequency : 1024

max user IRQ frequency : 64

24hr : yes

periodic_IRQ : no

update_IRQ : no

HPET_emulated : yes

BCD : yes

DST_enable : no

periodic_freq : 1024

batt_status : okay

只介紹前五個,其他的目前沒用到

rtc_time 目前 realtime clock 的時間

rtc_date 目前 realtime clock 的日期

alarm_time 設定開機的時間

alarm_date 設定開機的日期

alarm_IRQ 是否有設定鬧鐘(若有設定成功,這個一定會變成 yes)

要設定開機時間,要從 /sys 裡動手:

$ cat /sys/class/rtc/rtc0/wakealarm

內容是空的,沒有輸出任何東西,若有設定,值為設定開機時間的 unix time.

設定方式很簡單,只要將要開機的時間以 unix time 寫入 wakealarm 這個檔案即可。

設定十分鐘後開機:

$ echo $(date +%s -d “now + 10 minutes”) | sudo tee /sys/class/rtc/rtc0/wakealarm

檢查看看有沒有值了:

$ cat /sys/class/rtc/rtc0/wakealarm

還是沒東西,再檢查一下另一個檔

$ cat /proc/driver/rtc

rtc_time : 21:06:58

rtc_date : 2013-02-21

alrm_time : 21:11:46

alrm_date : 2013-02-21

alarm_IRQ : no

看前面 5 行就好,1-4 行看起來沒問題啊,不過,第 5 行是 no,所以沒成功。

原來設定這個要以 UTC 來設定,因為我是設成 localtime,但由於 taiwan 時區是 GMT+8 所以 rtc_time 會自動加上 8 小時,所以我們設鬧鐘時間也要加 8 小時,如果系統時鐘是設成 UTC 就沒這問題。

設定 8 小時 10 分鐘後開機:

$ echo $(date +%s -d “now + 8 hours 10 minutes”) | sudo tee /sys/class/rtc/rtc0/wakealarm

檢查看看,果然有值了

$ cat /sys/class/rtc/rtc0/wakealarm

1361482760

$ head -n5 /proc/driver/rtc

rtc_time : 21:30:26

rtc_date : 2013-02-21

alrm_time : 21:39:20

alrm_date : 2013-02-21

alarm_IRQ : yes

果然 alarm_time 在 10 分鐘後,而且 alarm_IRQ 為 yes

因此,趕快收一收在 10 分鐘內關機,等到 10 分鐘後看會不會自動開機,理論上是沒問題了。

不過,關機要用軟體關機,不可以按電源開關來關機就是。

$ shutdown -h now

最後設定排程

vi /etc/crontab

假設 要每天的20點30定時關機 命令如下

30 20 * * * sh /root/abc.sh