首頁 >系統教程 >Linux >linux 系統如何自動關機與開機

linux 系統如何自動關機與開機

WBOY
WBOY轉載
2024-03-01 08:00:24812瀏覽

不要成為一個電能浪費者。如果你的電腦不需要開機就請把它們關機。出於方便和電腦宅的考慮,你可以透過設定你的 Linux 電腦實現自動喚醒和關閉。

寶貴的系統運行時間

#有時候有些電腦需要一直處於開機狀態,在不超過電腦運作時間的限制下這種情況是被允許的。有些人為他們的電腦可以長時間的正常運作而感到自豪,現在我們有核心熱補丁能夠實現只有在硬體發生故障時才需要機器關機。我認為比較實際可行的是,像減少移動部件磨損一樣節省電能,且在不需要機器運行的情況下將其關機。例如,你可以在規定的時間內喚醒備份伺服器,執行備份,然後關閉它直到它要進行下一次備份。或者,你可以設定你的網路閘道只在特定的時間運作。任何不需要一直運行的東西都可以將其配置成在其需要工作的時候打開,待其完成工作後將其關閉。

系統休眠

對於不需要一直運作的電腦,使用 root 的 cron 定時任務(即 /etc/crontab)可以可靠地關閉電腦。這個範例建立一個 root 定時任務實現每天晚上 11 點 15 分定時關機。

# crontab -e -u root
# m h  dom mon dow   command
15 23 * * * /sbin/shutdown -h now

以下範例僅在週一至週五執行:

15 23 * * 1-5 /sbin/shutdown -h now

您可以為不同的日期和時間建立多個 cron 作業。透過指令 man 5 crontab 可以了解所有時間和日期的欄位。

一個快速、容易的方式是,使用 /etc/crontab 檔案。但這樣你必須指定使用者:

15 23 * * 1-5 root shutdown -h now
自動喚醒

實現自動喚醒是一件很酷的事情;我大多數SUSE (SUSE Linux)的同事都在紐倫堡,因此,因此為了跟同事能有幾小時一起工作的時間,我不得不需要在凌晨五點起床。我的計算機早上 5 點半自動開始工作,而我只需要將自己和咖啡拖到我的桌子上就可以開始工作了。按下電源按鈕看起來好像並不是什麼大事,但是在每天的那個時候每件小事都會變得很大。

喚醒 Linux 電腦可能不如關閉它可靠,因此你可能需要嘗試不同的方法。你可以使用遠端喚醒(Wake-On-LAN)、RTC 喚醒或個人電腦的 BIOS 設定預定的喚醒這些方式。這些方式可行的原因是,當你關閉電腦時,這並不是真正關閉了電腦;此時電腦處在極低功耗狀態且還可以接受和回應訊號。只有在你拔掉電源開關時才徹底關閉。

BIOS 喚醒

#BIOS 喚醒是最可靠的。我的系統主機板 BIOS 有一個易於使用的喚醒調度程式 (圖 1)。對你來說也是一樣的容易。

linux 系统如何自动关机和开机

#圖 1:我的系統 BIOS 有個易用的喚醒計時器。

主機遠端喚醒(Wake-On-LAN)
#

远程唤醒是仅次于 BIOS 唤醒的又一种可靠的唤醒方法。这需要你从第二台计算机发送信号到所要打开的计算机。可以使用 Arduino 或树莓派Raspberry Pi发送给基于 Linux 的路由器或者任何 Linux 计算机的唤醒信号。首先,查看系统主板 BIOS 是否支持 Wake-On-LAN ,要是支持的话,必须先启动它,因为它被默认为禁用。

然后,需要一个支持 Wake-On-LAN 的网卡;无线网卡并不支持。你需要运行 ethtool 命令查看网卡是否支持 Wake-On-LAN :

# ethtool eth0 | grep -i wake-on
        Supports Wake-on: pumbg
        Wake-on: g

这条命令输出的 “Supports Wake-on” 字段会告诉你你的网卡现在开启了哪些功能:

  • d -- 禁用
  • p -- 物理活动唤醒
  • u -- 单播消息唤醒
  • m -- 多播(组播)消息唤醒
  • b -- 广播消息唤醒
  • a -- ARP 唤醒
  • g -- 特定数据包magic packet唤醒
  • s -- 设有密码的特定数据包magic packet唤醒

ethtool 命令的 man 手册并没说清楚 p 选项的作用;这表明任何信号都会导致唤醒。然而,在我的测试中它并没有这么做。想要实现远程唤醒主机,必须支持的功能是 g —— 特定数据包magic packet唤醒,而且下面的“Wake-on” 行显示这个功能已经在启用了。如果它没有被启用,你可以通过 ethtool 命令来启用它。

# ethtool -s eth0 wol g

这条命令可能会在重启后失效,所以为了确保万无一失,你可以创建个 root 用户的定时任务(cron)在每次重启的时候来执行这条命令。

@reboot /usr/bin/ethtool -s eth0 wol g

另一个选择是最近的网络管理器Network Manager版本有一个很好的小复选框来启用 Wake-On-LAN(图 2)。

linux 系统如何自动关机和开机

图 2:启用 Wake on LAN

这里有一个可以用于设置密码的地方,但是如果你的网络接口不支持安全开机Secure On密码,它就不起作用。

现在你需要配置第二台计算机来发送唤醒信号。你并不需要 root 权限,所以你可以为你的普通用户创建 cron 任务。你需要用到的是想要唤醒的机器的网络接口和MAC地址信息。

30 08 * * * /usr/bin/wakeonlan D0:50:99:82:E7:2B 
RTC 唤醒

通过使用实时闹钟来唤醒计算机是最不可靠的方法。对于这个方法,可以参看 Wake Up Linux With an RTC Alarm Clock[1] ;对于现在的大多数发行版来说这种方法已经有点过时了。

下周继续了解更多关于使用 RTC 唤醒的方法。

通过 Linux 基金会和 edX 可以学习更多关于 Linux 的免费 Linux 入门[2]教程。

(题图:The Observatory at Delhi[3]


以上是linux 系統如何自動關機與開機的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文轉載於:linuxprobe.com。如有侵權,請聯絡admin@php.cn刪除