當伺服器突然崩潰、無法正常開機,而你手邊只剩下一份 Linux 系統映像檔(Image),或者是好不容易將硬碟掛載(Mount)到臨時系統的 /mnt/lvm 目錄時,身為維運或開發人員的你,該如何拯救那些珍貴的 Crontab 定時排程設定?
在正常的 Linux 環境下,我們習慣直接輸入 crontab -l 來查看排程。然而,在目前只有掛載目錄、沒有開機的狀態下,因為背景服務(Cron Daemon)根本沒有執行,這個指令是完全無法運作的。
這時候,我們必須跳過指令,直接深入映像檔的結構。本文將帶你手把手透過三個方向,直接去 /mnt/lvm 底下把所有遺失的定時設定挖出來!
方法一:直擊使用者排程(User Crontabs)
在 Linux 系統中,所有個別使用者(包含 root 帳號)自行透過 crontab -e 建立的排程,本質上都是一個獨立的文字檔,並以「使用者名稱」作為檔名儲存在特定的緩衝目錄中。
既然映像檔已經掛載在 /mnt/lvm,我們可以直接查看底下的對應路徑:
🔍 檢索步驟:
1. 列出所有擁有排程的使用者:
ls -la /mnt/lvm/var/spool/cron/crontabs/
2. 直接查看該使用者的排程內容:
cat /mnt/lvm/var/spool/cron/crontabs/[使用者名稱]
*(例如:欲查看 root 的排程,請輸入 cat /mnt/lvm/var/spool/cron/crontabs/root)*
方法二:地毯式搜尋系統級排程(System-wide Crontabs)
如果你的排程當初是交由系統全域執行,或是由特定軟體套件自動建立的,它們通常不會出現在上述的使用者目錄中,而是散落在系統設定的 /etc 目錄內。
請依序檢查 /mnt/lvm 底下的這四個關鍵位置:
- 📁 主要核心設定檔: 這是系統最基礎的排程表。
cat /mnt/lvm/etc/crontab
- 📁 獨立套件排程目錄: 許多第三方軟體(如自動備份工具、安全防護套件)會將排程獨立寫成檔案放在這裡。
ls -la /mnt/lvm/etc/cron.d/
- 📁 週期性執行腳本目錄: 檢查系統預設的週期性資料夾,裡面通常放著直接被定時觸發的 Shell Script(腳本檔)。
/mnt/lvm/etc/cron.hourly/(每小時執行)/mnt/lvm/etc/cron.daily/(每天執行)/mnt/lvm/etc/cron.weekly/(每週執行)/mnt/lvm/etc/cron.monthly/(每月執行)
方法三:終極大絕!從系統日誌(Logs)逆向重建
如果最糟糕的情況發生了——定時排程的檔案已經損毀,或者你在上述目錄完全找不到紀錄,我們還有一招隱藏版技巧:從舊系統過去的執行紀錄中逆向推敲。
只要該排程在機器掛掉前曾經執行過,Linux 的日誌系統就會留下足跡。我們可以透過分析舊系統的日誌,查出過去「什麼時間點」執行了「什麼指令」,進而重新拼湊出原本的 Crontab 設定。
🔍 逆向追蹤指令:
grep -i cron /mnt/lvm/var/log/syslog
*(註:視舊系統的 Linux 版本與環境不同,部分舊系統或特定發行版的紀錄可能會儲存在 /mnt/lvm/var/log/cron 檔案中。)*
💡 進階技巧:直接切換環境執行
如果你覺得路徑一直加 /mnt/lvm/ 很麻煩,或者你想直接在該映像檔環境下執行其他需要環境變數的救援指令,你可以利用 chroot 工具,把目前終端機的根目錄直接「切換」進去:
sudo chroot /mnt/lvm
切換成功後,你就可以直接輸入 crontab -l(此時讀取的就是映像檔內的排程),或是直接用正常的 /etc/crontab 路徑進行操作囉!
希望這篇文章能幫各位在伺服器災難復原時,快速找回遺失的自動化排程!




