Linux服務(wù)器設(shè)置定時(shí)關(guān)機(jī)的兩種方法詳解
前言
有時(shí)候linux服務(wù)器需要在每周定時(shí)關(guān)閉,讓其清除一些運(yùn)行緩存,避免高負(fù)荷長(zhǎng)時(shí)間運(yùn)轉(zhuǎn),降低服務(wù)器的壽命,這里推薦兩種方法cron和Systemd Timers

一、使用 Cron(方法一)
cron 是 Linux 系統(tǒng)自帶的用于定時(shí)執(zhí)行任務(wù)的守護(hù)進(jìn)程,非常適合這種周期性的任務(wù)
1.編輯 root 的 crontab 文件
關(guān)機(jī)需要 root 權(quán)限,因此我們需要編輯 root 用戶的 cron 任務(wù)表。使用 sudo 來獲取權(quán)限
sudo crontab -e
如果是直接以 root 用戶登錄,則只需輸入 crontab -e。
如果是第一次運(yùn)行,可能會(huì)讓你選擇編輯器。推薦選擇 nano(比較簡(jiǎn)單)或 vim
2.添加定時(shí)任務(wù)
在打開的 crontab 文件末尾,添加新的一行。這里有幾個(gè)常見方案:
方案 A:在每周六晚上 11 點(diǎn)關(guān)機(jī)
# m h dom mon dow command 0 23 * * 6 /sbin/shutdown -h +0
0 23 * * 6:表示在每個(gè)星期6(周六)的 23:00 執(zhí)行任務(wù)/sbin/shutdown -h +0:-h代表 halt(停止),+0代表 0 分鐘后執(zhí)行,即立即執(zhí)行
方案 B:在每周六凌晨 2 點(diǎn) 15 分關(guān)機(jī)
# m h dom mon dow command 15 2 * * 6 /sbin/shutdown -h now
15 2 * * 6:表示每周六的 02:15 執(zhí)行。shutdown -h now:也是立即關(guān)機(jī)的常用寫法。
cron 時(shí)間格式解釋:
* * * * * command_to_execute
- - - - -
| | | | |
| | | | +----- 星期幾 (0 - 6) (0 是周日)
| | | +------- 月份 (1 - 12)
| | +--------- 日期 (1 - 31)
| +----------- 小時(shí) (0 - 23)
+------------- 分鐘 (0 - 59)
因此,0 23 * * 6 的意思就是:每周六(6)的 23點(diǎn)(23)0分(0)
3.保存并退出
- 如果使用
nano:按Ctrl + X,然后按Y確認(rèn),最后按Enter保存。 - 如果使用
vim:按Esc鍵,然后輸入:wq,再按Enter。
4.驗(yàn)證任務(wù)是否添加成功
顯示這樣就代表成功添加了

二、使用 Systemd Timers(方法二)
雖然 cron 是標(biāo)準(zhǔn)方法,但一些現(xiàn)代 Linux 發(fā)行版(如最新的 Ubuntu、CentOS 等)也支持使用 systemd timers 來實(shí)現(xiàn)類似功能。這種方法更集成于系統(tǒng),可以更好地管理依賴關(guān)系和日志
1.創(chuàng)建 Service 單元文件
首先創(chuàng)建一個(gè)定義要執(zhí)行什么操作(即關(guān)機(jī))的 service 文件
sudo nano /etc/systemd/system/saturday-shutdown.service
將以下內(nèi)容寫入文件:
[Unit] Description=Saturday Shutdown [Service] Type=oneshot ExecStart=/usr/sbin/shutdown -h now
2.創(chuàng)建 Timer 單元文件
然后創(chuàng)建一個(gè) timer 文件來定義何時(shí)觸發(fā)上述 service
sudo nano /etc/systemd/system/saturday-shutdown.timer
將以下內(nèi)容寫入文件:
[Unit] Description=Shutdown every Saturday at 11 PM Requires=saturday-shutdown.service [Timer] OnCalendar=Sat 23:00:00 Persistent=true [Install] WantedBy=timers.target
OnCalendar=Sat 23:00:00:這是設(shè)置時(shí)間的關(guān)鍵,語法非常直觀,表示“每周六 23:00”。Persistent=true:如果上次定時(shí)器觸發(fā)時(shí)服務(wù)器錯(cuò)過了(比如當(dāng)時(shí)已經(jīng)關(guān)了),下次啟動(dòng)時(shí)會(huì)立即觸發(fā)任務(wù)。
3.啟用并啟動(dòng) Timer
讓 systemd 加載新的單元文件,并啟用這個(gè)定時(shí)器
sudo systemctl daemon-reload sudo systemctl enable saturday-shutdown.timer sudo systemctl start saturday-shutdown.timer
4.檢查 Timer 狀態(tài)
sudo systemctl status saturday-shutdown.timer
重要提醒
1.權(quán)限:確保使用 sudo 或 root 用戶來設(shè)置,因?yàn)槠胀ㄓ脩魶]有關(guān)機(jī)權(quán)限。
2.測(cè)試:在設(shè)置好后,強(qiáng)烈建議你先將時(shí)間修改為幾分鐘后(例如,將 cron 表達(dá)式改為 * * * * * 來下一分鐘測(cè)試),測(cè)試一下是否能正常工作,然后再改回周六的時(shí)間,避免配置錯(cuò)誤導(dǎo)致意外。
3.取消:如果你之后想取消這個(gè)自動(dòng)關(guān)機(jī)任務(wù):
對(duì)于 Cron:再次運(yùn)行 sudo crontab -e,刪除或注釋掉(在行首加 #)那行配置即可。
對(duì)于 Systemd Timer:運(yùn)行
sudo systemctl stop saturday-shutdown.timer 和 sudo systemctl disable saturday-shutdown.timer。
4.警告用戶:如果服務(wù)器上有其他用戶,最好使用 shutdown 命令的 -k 選項(xiàng)先發(fā)送一個(gè)警告信息,或者提前通知他們。例如,你可以先廣播一條消息:
# 在關(guān)機(jī)前5分鐘向所有登錄用戶發(fā)送警告 shutdown -h +5 "系統(tǒng)將在5分鐘后進(jìn)行每周例行關(guān)機(jī)維護(hù),請(qǐng)保存您的工作。"
總結(jié)
本文介紹了兩種在Linux服務(wù)器上設(shè)置每周定時(shí)關(guān)機(jī)的方法
- Cron方法:通過編輯root用戶的crontab文件,添加定時(shí)任務(wù)(如每周六23:00執(zhí)行/sbin/shutdown -h +0),利用cron守護(hù)進(jìn)程實(shí)現(xiàn)周期性關(guān)機(jī)。
- Systemd Timers方法:創(chuàng)建service和timer單元文件(如OnCalendar=Sat 23:00:00),通過systemd管理任務(wù)觸發(fā),支持日志和依賴關(guān)系。兩種方法均需root權(quán)限,建議測(cè)試后應(yīng)用,并可通過對(duì)應(yīng)命令取消任務(wù)。文中還提醒注意用戶通知及權(quán)限問
以上就是Linux服務(wù)器設(shè)置定時(shí)關(guān)機(jī)的兩種方法詳解的詳細(xì)內(nèi)容,更多關(guān)于Linux服務(wù)器定時(shí)關(guān)機(jī)的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
CentOS 7系統(tǒng)下安裝ftp服務(wù)器的全過程
這篇文章主要介紹了關(guān)于CentOS 7系統(tǒng)下安裝ftp服務(wù)器的全過程,文中介紹的非常詳細(xì),詳細(xì)對(duì)大家具有一定的參考價(jià)值,需要的朋友們下面來一起看看吧。2017-04-04
Yum安裝中出現(xiàn)錯(cuò)誤mirrorlist.txt的解決方法
前幾天在使用Yum install命令安裝軟件的時(shí)候一直提示一個(gè)mirrorlist.txt錯(cuò)誤,通過查找相關(guān)的資料現(xiàn)在找到了解決的方法,所以這篇文章就整理出來和大家分享一下,有同樣遇到這個(gè)問題的朋友們可以參考借鑒下。2016-10-10
Ubuntu安裝MySQL5.7并配置數(shù)據(jù)存儲(chǔ)路徑的方法步驟
這篇文章主要介紹了Ubuntu安裝MySQL5.7并配置數(shù)據(jù)存儲(chǔ)路徑的方法步驟,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2019-06-06
linux下快速列出局域網(wǎng)中所有主機(jī)名(計(jì)算機(jī)名)的腳本
這篇文章主要介紹了linux下快速列出局域網(wǎng)中所有主機(jī)名(計(jì)算機(jī)名)的腳本,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-07-07
Linux物理機(jī)區(qū)分SSD與HDD的常見方法
在 Linux 系統(tǒng)中,我們經(jīng)常需要確認(rèn)一塊硬盤究竟是 固態(tài)硬盤 (SSD) 還是 機(jī)械硬盤 (HDD),以便做合理的存儲(chǔ)規(guī)劃和性能評(píng)估,本文給大家介紹了Linux物理機(jī)區(qū)分SSD與HDD的常見方法,需要的朋友可以參考下2025-09-09
Linux TC流控實(shí)現(xiàn)機(jī)制過程
Linux TC通過模塊化分層設(shè)計(jì)(Qdisc、Class、Filter、Policer、Action)實(shí)現(xiàn)靈活流量控制,支持從簡(jiǎn)單FIFO到復(fù)雜分層調(diào)度,其優(yōu)勢(shì)在于可擴(kuò)展性,但存在配置復(fù)雜、單核瓶頸及新技術(shù)整合等挑戰(zhàn)2025-09-09

