iT邦幫忙

0

Linux指令~

各位前輩不好意思~我郵件主機系統CentOS的Postfix
我要看/var底下的maillog資訊~但我是一般都是從webmin整個撈下來
有時檔案大就會抓很久或是導致一些notepad程式因檔案太大無法開啟~
若我只想看假設今天的早上7點到中午12點這段時間的log~我該如何下指令???
webmin也能否撈區段時間的log呢!?

6
wiseguy
iT邦超人 1 級 ‧ 2012-05-16 19:27:47
最佳解答

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 點的內容寄給你了

看更多先前的回應...收起先前的回應...
sam017040 iT邦新手 5 級 ‧ 2012-05-17 08:40:53 檢舉

抱歉~我想另外詢問喔~我是用SSH軟體連進主機
那當我下了指令後~那撈下來的檔案會在哪~?
我想存在我的電腦上要如何改變路徑~?

sam017040 iT邦新手 5 級 ‧ 2012-05-17 08:49:35 檢舉

再補充問題~(0[789]|1[012])若我要撈的時間變更我又該如何修改這邊時間~方便舉例一下嗎~?
另外是否能於webmin上的圖形介面直接做類似這種功能的操作呢~?

sam017040 iT邦新手 5 級 ‧ 2012-05-17 08:56:58 檢舉

egrep '^May 16 (0[789]|1[012])' /var/log/maillog > /tmp/mail-20120516.log
我下了這指令後~前往看tmp/mail-20120516.log~有這個檔案出現~但大小事0...想當然內容就是空白...為啥ㄚ...

wiseguy iT邦超人 1 級 ‧ 2012-05-17 22:55:08 檢舉

下了指令後~那撈下來的檔案會在哪~?

當然是在後面接的那個檔案 /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?

10
bizpro
iT邦大師 1 級 ‧ 2012-05-16 16:28:59

簡單的方法:
假設日期格式是16/May/2012:hh:mm:ss,

touch webmin-20120516.log

egrep "16/May/2012:07" /var/webmin/miniserv.log >> webmin-20120516.log

egrep "16/May/2012:08" /var/webmin/miniserv.log >> webmin-20120516.log

egrep "16/May/2012:09" /var/webmin/miniserv.log >> webmin-20120516.log

egrep "16/May/2012:10" /var/webmin/miniserv.log >> webmin-20120516.log

egrep "16/May/2012:11" /var/webmin/miniserv.log >> webmin-20120516.log

egrep "16/May/2012:12" /var/webmin/miniserv.log >> webmin-20120516.log

喔, 您是問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來做.

sam017040 iT邦新手 5 級 ‧ 2012-05-17 08:37:07 檢舉

抱歉~我想另外詢問喔~我適用SSH遠端軟體連進主機
那當我下了指令後~那撈下來的檔案會在哪~?

sam017040 iT邦新手 5 級 ‧ 2012-05-17 09:14:20 檢舉

剛剛補充那個問題解決了~但有另外一個問題~
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點的...

2
mwu4
iT邦新手 2 級 ‧ 2012-05-17 00:26:26

不知可以每日自動整理log的logwatch能否符合您的需要?謝謝。

我要發表回答

立即登入回答