linux設置定時任務

很久沒發博客了,說明自己這三四個月確實沒怎麼積累學習成果了(或者說都是學習比較零散的新知識不足以寫成博客)。因爲12月份找到了畢業那份工作之後就開始閒下來了,過完年出來正在做一個軟件開發的實習(做個搬磚臨時工掙個三餐,順便不想呆在學校宿舍墮落地等待畢業),最近纔開始積累些學習成果。最近在做shell腳本的開發,涉及到linux設置定時任務的問題。

1.用crontab/cron命令,可以man一下crontab的用法。

crontab -e : 編輯定時任務,格式如下:

minute hour day-of-month month-of-year day-of-week commands    

使用星號*表示任一時間/所有時間,舉例:

*/5 * * * * echo "Hello"

這句定時任務表示每5分鐘echo一次"Hello",/5 的作用就表示每5(分鐘)。echo輸出的內容並不出輸出到命令行中,可以將其重定向到文件當中:

echo "Hello" /home/admi/test.log

更多crontab詳細寫法網搜。


command自然可以是執行一個腳本:

* * * * * /home/admi/test.sh
這句定時任務表示每分鐘執行一遍test.sh腳本,更復雜的定時任務就應該以這樣形式,先寫在腳本上,然後定時去執行這個腳本(注意要提前給它可執行權限)。


2.定時任務之發郵件
可以直接在crontab -e 指定郵件地址,使用 MAILTO關鍵字修改發郵件地址,如:

[email protected]

然後每次執行定時任務之後都會將結果發送給該郵件地址。
另一種方法是在shell腳本里面用mail關鍵字,mail是使用sendmail服務的,貌似要先安裝sendmail服務,自行網搜。mail用法如下:
mail -s "This is subject" -c "[email protected] [email protected]" [email protected] < /home/admi/test.log

-s參數後面跟的是郵件的主題;-c參數接的是抄送的地址,如果有多個抄送地址則要用雙引號引起來,當然-c這個參數可以不要;往後[email protected]是主郵件地址;再往後接的是郵件正文,你可以直接隨便打一些字符串上去,也可以像上面那樣用" < /home/admi/test.log "表示將test.log文件裏面的內容當作正文發郵件出去。

更詳細用法網搜。


貌似mutt發郵件更強大?今天試了下mail命令-a參數的附件功能,一直卡住發不出去郵件,不知啥原因,用mutt也是-a參數髮帶附件的郵件一下子就好了,貌似mutt快捷?附一個mutt的使用方法鏈接: linux shell發送帶附件的郵件


發佈了170 篇原創文章 · 獲贊 64 · 訪問量 52萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章