Linux 如何設(shè)置自動(dòng)重啟?超簡(jiǎn)單教程
在實(shí)際運(yùn)維場(chǎng)景中,我們可能會(huì)遇到以下情況:
- 某些服務(wù)長(zhǎng)時(shí)間運(yùn)行后出現(xiàn)內(nèi)存泄漏;
- 某些舊系統(tǒng)無法設(shè)置進(jìn)程級(jí)重啟機(jī)制;
- 需要在非業(yè)務(wù)高峰期進(jìn)行例行重啟。
這時(shí),設(shè)置 自動(dòng)重啟 就是一種簡(jiǎn)單且有效的運(yùn)維手段。
1. 設(shè)置定時(shí)重啟(推薦)
使用crontab設(shè)置定時(shí)重啟,適用于 固定時(shí)間重啟服務(wù)器。
使用 root 用戶編輯定時(shí)任務(wù):
crontab -e
添加以下內(nèi)容:
# 每周六凌晨3點(diǎn)自動(dòng)重啟
0 3 * * 6 /sbin/shutdown -r now
說明:
- /sbin/shutdown -r now 表示立即重啟;
- 確保命令路徑正確(有的系統(tǒng)使用 /usr/sbin/shutdown);
- 使用 crontab -l 可查看當(dāng)前定時(shí)任務(wù)。
2. 一次性延時(shí)重啟(臨時(shí))
可以通過 at 命令設(shè)置延時(shí)一次性重啟,適合臨時(shí)性維護(hù)。
echo "reboot" | at now + 30 minutes
安裝 at 工具:如果沒有安裝,需要先安裝一下
# Ubuntu/Debian
sudo apt install at
# RHEL/CentOS
sudo yum install at
啟動(dòng) atd 服務(wù):
systemctl enable atd
systemctl start atd
3. 寫腳本 + 定時(shí)觸發(fā)
如果你希望寫一個(gè)自動(dòng)重啟腳本,可將其拓展為帶日志、健康檢查、告警通知等邏輯的腳本。
auto_reboot.sh:
#!/bin/bash
LOG_FILE="/var/log/auto_reboot.log"
echo "$(date "+%Y-%m-%d %H:%M:%S") 自動(dòng)重啟執(zhí)行" >> "$LOG_FILE"
/sbin/shutdown -r now
設(shè)置執(zhí)行權(quán)限:
chmod +x /opt/scripts/auto_reboot.sh
設(shè)置 crontab:
sudo crontab -e
添加定時(shí)任務(wù),例如每周六凌晨 3點(diǎn)重啟:
0 3 * * 6 /opt/scripts/auto_reboot.sh
選擇合適的方式,合理設(shè)置時(shí)間,結(jié)合日志與監(jiān)控,就能讓自動(dòng)重啟變得安全可控。
【溫馨提示】:在生產(chǎn)環(huán)境中,重啟是很慎重的事情,如非特殊需求,不要頻繁重啟,應(yīng)優(yōu)先優(yōu)化服務(wù)自身的穩(wěn)定性和內(nèi)存使用。