從 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