
我有幾個喜歡定期運行的任務:
- 推送所有 git 倉庫(每天 5 次)
- 對文件進行病毒掃描(每 90 天)
- 從伺服器下載備份(每天一次)
對於所有這些任務,我都有一個腳本。為了編排這些,我寫了一個名為的腳本maintenance
,它是我的一部分維修工程。這腳本的目前版本。
它有一個用於任務的 JSON 設定檔:
"git-autopush": {
"disk": true,
"internet": true,
"interval": 0.3,
"local": false
},
我想用一些現有的任務排程器來取代我的腳本,因為我想減少系統上的自訂軟體。但是,我有以下要求:
- 使用電池運作時請勿運作。
- 提供一些可見的狀態。那甚至可以通過
kdialog
。 - 一次僅運行一項磁碟繁重的任務。
腳本maintenance
會處理這個問題,只要我有足夠的時間讓任務運行,我就可以運行它。如果沒有,我可以中止所有任務並稍後重新啟動。
普通的 cron 不太好,因為當我的電腦關閉時它不會工作。 anacron 可能會更好,但我認為它會在啟動後立即運行所有任務。另外,如果我碰巧需要虛擬機器磁碟,我該如何告訴調度程序停止?
是否有一些現有的程序,或者我應該繼續使用我的程序?
答案1
如果我碰巧需要虛擬機器的磁碟,我該如何告訴調度程序停止?
Cron 和 anacron(通常)是守護程式服務。您可以像停止和啟動任何其他服務一樣停止和啟動它們。
cron 不太好,因為當我的電腦關閉時它不會工作
這是一個很難繞過的標準。當電腦關閉時,您希望軟體執行什麼操作?
anacron 可能會更好,但我認為它會在啟動後立即運行所有任務。
顯然。不過,這裡有個想法:開始和停止anacron
以cron
.
一次僅運行一項磁碟繁重任務
Anacron 有這個選項:
-s
串行執行作業。 Anacron 在前一個作業完成之前不會啟動新作業。
這只是讓你實現這兩個:
- 使用電池運作時請勿運作。
- 提供一些可見的狀態。甚至可以透過 kdialog 來實現。
第一個可以透過讓 cron 在啟動 anacron 之前檢查電池狀態來完成。第二個可以透過多種方式完成。你自己已經推薦了一個。