很久沒發博客了,說明自己這三四個月確實沒怎麼積累學習成果了(或者說都是學習比較零散的新知識不足以寫成博客)。因爲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發送帶附件的郵件