egrep '^May 16 (0[789]|1[012])' /var/log/maillog > /tmp/mail-20120516.log
可以在你自己的 crontab 設定:
59 23 * * * /bin/egrep "^$(LANG=C /bin/date '+%%b %%d') (0[789]|1[012])" /var/log/maillog
以後就會每天把 7 點到 12 點的內容寄給你了
再補充問題~(0[789]|1[012])若我要撈的時間變更我又該如何修改這邊時間~方便舉例一下嗎~?
另外是否能於webmin上的圖形介面直接做類似這種功能的操作呢~?
egrep '^May 16 (0[789]|1[012])' /var/log/maillog > /tmp/mail-20120516.log
我下了這指令後~前往看tmp/mail-20120516.log~有這個檔案出現~但大小事0...想當然內容就是空白...為啥ㄚ...
下了指令後~那撈下來的檔案會在哪~?
當然是在後面接的那個檔案 /tmp/mail-20120516.log
想存在我的電腦上要如何改變路徑~?
SSH 可以連的話,那麼用 SCP 就可以像 FTP 一樣傳下來到你的電腦了。
http://azo-freeware.blogspot.com/2008/03/winscp-41-beta.html
(0[789]|1[012])若我要撈的時間變更我又該如何修改這邊時間
我寫的是通用表示法,這不難懂吧?[]裡面的是列舉:0[789] 表示 07,08,09,1[012] 表示 10,11,12,中間用 | 隔開表示《或》的意思,也就 bizpro 下的六個指令,只要用這一個就代替了。
假如要 1 點到 12 點,那就是 0[1-9]|1[012] 這樣瞭解嗎?
下了這指令後~前往看tmp/mail-20120516.log~為什麼大小是0
因為 maillog 會每天 rotate,你在 17 號下指令,當然撈不到 16 號的。請改 17 OK?
簡單的方法:
假設日期格式是16/May/2012:hh:mm:ss,
喔, 您是問maillog, 那就換一下日期格式就可以了.
$ touch mail-20120516.log
$ egrep "May 16 07" /var/log/mail.log >> mail-20120516.log
$ egrep "May 16 08" /var/log/mail.log >> mail-20120516.log
$ egrep "May 16 09" /var/log/mail.log >> mail-20120516.log
$ egrep "May 16 10" /var/log/mail.log >> mail-20120516.log
$ egrep "May 16 11" /var/log/mail.log >> mail-20120516.log
$ egrep "May 16 12" /var/log/mail.log >> mail-20120516.log
您可以寫個script來做.
抱歉~我想另外詢問喔~我適用SSH遠端軟體連進主機
那當我下了指令後~那撈下來的檔案會在哪~?
剛剛補充那個問題解決了~但有另外一個問題~
egrep "May 16 07" /var/log/mail.log >> mail-20120516.log
egrep "May 16 08" /var/log/mail.log >> mail-20120516.log
egrep "May 16 09" /var/log/mail.log >> mail-20120516.log
egrep "May 16 10" /var/log/mail.log >> mail-20120516.log
egrep "May 16 11" /var/log/mail.log >> mail-20120516.log
egrep "May 16 12" /var/log/mail.log >> mail-20120516.log
是下了這六行指令就會把7~12點的log資訊存在建立的mail-20120516.log裡嗎?
因為我下了指令後去看log卻只撈了裡面最後一段時間點也就是12點到13點的...