- 樹莓派創客:手把手教你玩轉人工智能
- 陳佳林
- 859字
- 2020-11-23 16:49:26
2.4.3 周期運行:cron
啟動腳本一般是為守護進程這樣需要一直保持運行狀態的進程所設計的,對于其他一些周期性運行的進程(比如家務管理),要使用cron系統來進行更好的管理。cron會在/etc目錄下尋找自己的配置文件,然后根據這些配置文件來工作。那么應該如何尋找對應的配置文件呢?這時就要用到locate命令了。locate命令在系統上默認是不會安裝的,所以要先安裝locate命令:
$ sudo apt-get install mlocate
然后輸入命令:
$ sudo updatedb
接下來通過locate命令尋找配置文件:
$ locate cron-
locate命令是通過自己存儲的文件數據庫來工作的,這個數據庫每天會通過cron來完成周期性的更新。如果你想要手動更新這個數據庫,只需要輸入命令“sudo updated”即可。
find命令與locate命令具有類似的功能。find命令允許你通過文件的文件名、大小以及修改時間來在某個文件夾或者是整個文件系統下尋找文件。find命令有很復雜的功能,比如具有locate并不支持的正則表達式。同時由于它是直接通過文件系統尋找文件的(相比之下locate通過一個緩存的數據庫來尋找文件),所以它一般耗時會更久一些。如果你想要使用find命令來完成以上用locate命令完成的任務,就可以輸入:
$ find / -name '*cron*'
在搜索結果中會出現anacron相關的文件。如果你不希望搜索到這些文件,那么可以使用正則表達式‘cron*’。find命令一般會有大量的輸出,所以最好把輸出信息通過管道重定向到其他命令里去。
在系統上使用cron可以通過crontab命令。輸入“crontab –e”命令后就可以編輯對應的cron配置文件了。下面來看一個示例。
45 05 * * 1-5 calendar | mail -s 'Your calendar' me@myemailaddress.com
這條命令的意思是在每天上午發送對應的日歷信息到你的郵箱。前5個參數與命令執行的周期相關,可以用@daily或者@hourly來代替。如果想了解更多有關crontab的信息,你可以輸入“man 5 crontab”來查看幫助文檔。
在運行上面的命令時,系統可能會提示你mail并沒有被安裝,那么你需要先安裝一個郵件軟件,比如說ssmtp。
提示
正則表達式:find命令支持在查找時使用正則表達式。正則表達式是一個非常大的主題,這里就不詳細介紹了。作為一項廣泛應用的技術,它非常值得學習。一些用戶不希望使用Systemd的啟動方式,可以使用操作系統提供的其他選擇。對于Ubuntu,你可以使用Upstart。對于Raspbian,你可以使用Devuan發行版,它使用的是經典的Sys-V啟動。