登錄檔的分析啦!
本文資料主要針對 Fedora Core 4 的系統進行說明, Fedora Core 1 主要是由 Red Hat Linux 9 改版而來, 這個 Red Hat Linux 9 並不是當前大家聽到的 RHEL 喔!那是在 RHEL 出現之前的產品,基本上是在 2003 年以前的作品了!Fedora Core 4 則是在 2005 年 6 月份釋出,使用的核心是 2.6.11 版,當時是很紅的一個作品!只是生命週期太短,所以用這個 Fedora 系列來介紹 Server, 當時的決定確實有點莫名其妙了...
建議您前往本站查詢最新版本的 Linux distribution 文章來閱讀,比較不會浪費時間。那為何還需要編輯 Fedora Core 4 的資料呢? 鳥哥只想要做個自己曾經撰寫過的文件內容保存而已囉! ^_^!最新文章請前往鳥站首頁查閱囉!
『登錄檔』似乎是常常聽到的名詞,網路上的老手們也常常告知新手們要多察看登錄檔, 那麼這些登錄檔是幹嘛用的?嗯!似乎是當你啟發一個事件的時候,或者是有人登入你的 Linux 主機的時候,主機會有一些認證的程序或者是一些重要的訊息,由於這些訊息有被追蹤的重要性, 所以自然就有需要將他保留下來,以備未來的不時之需囉,這些訊息會被紀錄在某些檔案上, 這些檔案就被稱為登錄檔了!那麼您曉得該登入者的資訊被紀錄在哪裡嗎?這些資訊的量有多大呢? 您可以每天自行觀看嗎?哇!如果能用 Shell Scripts 來分析的話,不是就更快速了嗎?呵呵! 這裡鳥哥寫了一個小小的分析檔案 ( logfile.sh ),讓大家可以更快樂的管理你的 Linux 主機呦! ^_^
[root@linux ~]# ps aux | grep syslog USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND root 11129 0.0 0.0 1616 204 ? Ss Oct03 0:01 syslogd -m 0 # 瞧!對吧!確實有啟動的! [root@linux ~]# chkconfig --list | grep syslog syslog 0:off 1:off 2:on 3:on 4:on 5:on 6:off # 因為鳥哥的系統用 run level 3 ,所以,也是有啟動的!看到 syslog 這個服務名稱了吧?!呵呵!所以知道他已經在背景底下工作囉!如前所述, syslog 這支程式提供了『系統登入資訊記錄』及『 Kernel 錯誤或警示資訊記錄』等功能,此外, 他還提供了『本地端與遠端電腦的登錄資訊記錄』功能,所以,可以將遠端的主機登入資訊同時記錄在本地端呢! 很不錯的功能吧!!此外,目前正規使用的系統服務中,大都預設支援以 syslog 這一個服務來記錄他的登錄檔案資料,例如 apache, samba, sendmail 等等。
[root@linux ~]# cat /var/log/secure
Oct 16 10:16:13 linux sshd[3494]: Accepted password for dmtsai from
192.168.1.11 port 1037 ssh2
Oct 16 10:20:15 linux xinetd[21592]: START: shell pid=4176 from=192.168.1.31
Oct 16 14:50:25 linux sshd[26665]: Accepted password for dmtsai from
192.168.1.11 port 1078 ssh2
Oct 16 19:56:06 linux xinetd[20576]: START: shell pid=21013 from=192.168.1.31
以第一筆資料為例,該資料說明的內容為:『時間在 Oct 16 10:16:13
(10/16, 10:16)時;由主機名稱為 linux 的那部主機當中;由 sshd (且其 PID 為 3494)
那項服務所產生的一個訊息;訊息內容說明是:接受來自 192.168.1.11 連接至本機,使用
ssh2 連線機制,接受的使用者為 dmtsai』。有夠清楚的吧! ^_^。就是因為太清楚了,
包括那個 192.168.1.11 的 IP 來源,以及使用者帳號為 dmtsai ,
這些資訊如果讓比較高竿的 cracker 知道後,是有可能猜測密碼的,
所以囉,這些資訊當然不能夠外流啦!好好保存吧!
服務名稱[.=!]訊息等級 訊息記錄的檔名或裝置或主機
# 例如底下:
mail.info /var/log/maillog_info
簡單的說明如下:
例題:如果我要將我的 mail 相關的資料給他寫入 /var/log/maillog 當中,那麼在 /etc/syslog.conf 應該如何寫? 答:
mail.info /var/log/maillog 注意到上面喔,當我們的等級使用 info 時,那麼『任何大於 info 等級(含 info 這個等級)之上的訊息, 都會被寫入到後面接的檔案之中!』這樣可以瞭解嗎?也就是說,我們可以將所有 mail 的登錄資訊都紀錄在 /var/log/maillog 裡面的意思啦! |
例題:我要將新聞群組資料 (news) 及例行性命令的資訊 (cron) 都寫入到一個稱為
/var/log/cronnews 的檔案中,但是這兩個程序的警告訊息記錄在 /var/log/cronnews.warn 該如何設定我的檔案呢? 答:
news.*;cron.* /var/log/cronnews news.=warn;cron.=warn /var/log/cronnews.warn 上面那個『.=』就是在指定等級的意思啦!由於指定了等級,因此,只有這個等級的訊息才會被紀錄在這個檔案裡面呢! |
例題:我的 messages 這個檔案需要記錄所有的資訊,但是就是不想要記錄 cron, mail 及 news 的資訊,那麼應該怎麼寫才好? 答:
*.*;news,cron,mail.none /var/log/messages *.*;news.none;cron.none;mail.none /var/log/messages 使用『,』分隔時,那麼等級只要接在最後一個即可,如果是以『;』來分的話, 那麼就需要將服務與等級都寫上去囉!這樣會設定了吧! |
# 來自 Fedora Core Release 4 的相關資料 [root@linux ~]# vi /etc/syslog.conf #kern.* /dev/console # 只要是 kernel 產生的訊息,全部都送到 console 去! # 這個項目預設是關閉的!不過,只要您願意,可以開啟就是了! *.info;mail.none;authpriv.none;cron.none /var/log/messages # 在已知各服務的訊息中,不要記錄到這個檔案當中啦! # 例如 mail 我們已經預設要記錄在 /var/log/maillog (底下), # 所以自然不要在記錄 mail 到這個 /var/log/messages 檔案中啦! # 然後其他的訊息全部都記錄到 /var/log/messages 當中! # 所以這個檔案相當的重要!沒有被規定到的訊息都可以在這裡找到! authpriv.* /var/log/secure # 這個就是經過一些身份確認的行為之後,需要記錄身份的檔案啦! # 什麼是身份確認呢?例如 pop3 收信要輸入帳號與密碼、 ssh 與 telnet, ftp # 等等的服務需要輸入帳號與密碼,這些都會在 /var/log/secure 裡面記錄! # 他可也是相當重要的一個檔案呢! mail.* -/var/log/maillog # 只要跟 mail 有關的(不論是 pop3 還是 sendmail )都會被紀錄到這個檔案中! cron.* /var/log/cron # 還記得例行性命令那一章節嗎?!對啦!就是那個 crontab 的東西, # 那東西的服務程式名稱就是 cron 啦!執行 cron 的結果都記錄於此! *.emerg * # 任何時候發生的警告訊息都會顯示給線上的所有人!那個 * 就是目前線上的所有人啦! # 這個就是利用 wall 之類的方式傳輸訊息的啊! uucp,news.crit /var/log/spooler # 記錄新聞錯誤高於 crit 的等級的資訊,寫入 spooler 當中! local7.* /var/log/boot.log # 將開機的當中的訊息給他寫入 /var/log/boot.log 這個檔案當中呦!基本上,每個版本的 syslog.conf 差異是頗大的,所以,每個登錄檔記錄的資料其實不很固定。 舉例來說,如果您曾經使用過 Mandriva 的話,他的 syslogd 設定資訊有點像這樣:
# 來自 Mandrake 9.0 的 syslog.conf 內容 [root@linux ~]# vi /etc/syslog.conf auth,authpriv.* /var/log/auth.log *.*;auth,authpriv.none -/var/log/syslog user.* -/var/log/user.log *.info;mail.none;;news.none;authpriv.none -/var/log/messages Authpriv.* /var/log/secure mail.=debug;mail.=info;mail.=notice -/var/log/mail/info mail.=warn -/var/log/mail/warnings mail.err -/var/log/mail/errors cron.=debug;cron.=info;cron.=notice -/var/log/cron/info cron.=warn -/var/log/cron/warnings cron.err -/var/log/cron/errors kern.=debug;kern.=info;kern.=notice -/var/log/kernel/info kern.=warn -/var/log/kernel/warnings kern.err /var/log/kernel/errors lpr.=debug;lpr.=info;lpr.=notice -/var/log/lpr/info lpr.=warn -/var/log/lpr/warnings lpr.err -/var/log/lpr/errors news.=debug;news.=info;news.=notice -/var/log/news/news.notice news.=crit -/var/log/news/news.crit news.=err -/var/log/news/news.err Daemon.=debug;daemon.=info;daemon.=notice -/var/log/daemons/info Daemon.=debug;daemon.=info;daemon.=notice -/var/log/daemons/info Daemon.=warn -/var/log/daemons/warnings Daemon.err -/var/log/daemons/errors *.emerg * Local1.* -/var/log/explanations基本上,他將每個服務的登錄檔都分成三個內容,那麼我們就可以簡單的依據比較嚴重的登錄檔來解析, 有助於系統的快速整理。但是每個人的喜好不同,因此,並不見得這樣的設定大家都喜歡。 而像鳥哥自己,我自己寫了一支分析 logfile 的程式,該程式主要針對 Red Hat 系統的登錄檔來作處理的,則 Mandriva 的版本是否適用呢?當然適用啊! 只要手動修訂一下 /etc/syslog.conf 內容即可啊!這樣說,瞭了吧?! ^_^
# 1. 先設定好所要建立的檔案設置! [root@linux ~]# vi /etc/syslog.conf *.info /var/log/admin.log # 2. 重新啟動 syslog 呢! [root@linux ~]# /etc/init.d/syslog restart [root@linux ~]# ll /var/log/admin.log -rw------- 1 root root 122 Oct 23 22:21 /var/log/admin.log # 瞧吧!建立了這個檔案出現囉!很簡單吧!如此一來,所有的資訊都會寫入 /var/log/admin.log 裡面了!
[root@linux ~]# chattr +a /var/log/messages [root@linux ~]# lsattr /var/log/messages -----a------- /var/log/messages加入了這個屬性之後,你的 /var/log/messages 登錄檔從此就僅能被增加,而不能被刪除,直到 root 以『 chattr -a /var/log/messages 』取消這個 a 的參數之後,才能被刪除或移動喔!
[root@linux ~]# chattr -a /var/log/messages
# 1. 先取得 port number 的資訊! [root@linux ~]# grep 514 /etc/services syslog 514/udp # 特別特別注意,你的 /etc/services 裡面必須要存在這一行才行~ # 如果不存在這一行,你可以手動自行增加的! # 2. 修改 syslogd 的啟動設定檔,通常在 /etc/sysconfig 內! [root@linux ~]# vi /etc/sysconfig/syslog # 找到底下這一行: SYSLOGD_OPTIONS="-m 0" # 改成底下這樣子! SYSLOGD_OPTIONS="-m 0 -r" # 3. 重新啟動與觀察 syslogd 喔! [root@linux ~]# /etc/init.d/syslog restart [root@linux ~]# netstat -tlunp Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name udp 0 0 0.0.0.0:514 0.0.0.0:* 24314/syslogd # 嘿嘿!你的登錄檔主機已經設定妥當囉!很簡單吧!透過這個簡單的動作,你的 Linux 主機已經可以接收來自其他主機的登錄資訊了! 當然啦,你必須要知道網路方面的相關基礎,這裡鳥哥只是先介紹, 未來瞭解了網路相關資訊後,再回頭來這裡瞧一瞧先! ^_^,此外, 更多的相關資訊可以 man syslogd 查閱看看喔! ^_^
[root@linux ~]# vi /etc/syslog.conf *.* @192.168.1.100立刻就搞定了!而未來主機上面的登錄檔當中,每一行的『主機名稱』就會顯示來自不同主機的資訊了。 很簡單吧! ^_^。接下來,讓我們來談一談,那麼如何針對登錄檔來進行輪轉 (rotate) 呢?
[root@linux ~]# vi /etc/logrotate.conf # 底下的設定是 "logrotate 的預設設定值" ,如果個別的檔案設定了其他的參數, # 那麼將以個別的檔案設定為主,若該檔案沒有設定到的參數, # 則以這個檔案的內容為預設值! weekly # 預設每個禮拜對登錄檔進行一次 rotate 的工作 rotate 4 # 保留幾個登錄檔呢?預設是保留四個! create # 是否建立新的登錄檔來記錄呢?因為我們要繼續記錄,所以當然是建立囉! #compress # rotate 之後的登錄檔,要不要壓縮,通常是不要壓縮啦,但是如果你的系統很忙碌, # 表示你的登錄檔很龐大的時候,那麼最好就是給他壓縮一下比較不會佔空間! # 如果要壓縮,將 # 拿掉即可!不過,登錄檔副檔名會變成 messages.1.gz 喔! include /etc/logrotate.d # 將底下這個目錄中的所有檔案都讀進來執行 rotate 的工作! /var/log/wtmp { monthly create 0664 root utmp rotate 1 } # 基本上,在 logrotate.conf 檔案當中,只有這個資料是在記載如何對登錄檔進行輪替的! # 這個登錄檔記載的就是使用 login 登入系統時的使用者狀態,還記得那個 last 指令吧? # 就是讀自 /var/log/wtmp 當中記錄的資料啦!整個段落的意義是: # 1. 每個月進行一次 log rotate 的工作; # 2. 將檔案的權限設定為 664 ,且擁有者為 root ,群組為 utmp; # 3. 僅保存前一個月的 rotate 備份! # 這也是為什麼我們說 last 只會秀出這個月的資料而已的原因~因為一個月輪替一次嘛! # 這個 rotate 可以改大一點,例如 5 以保存五個月,以利追蹤 /var/log/btmp { missingok monthly create 0600 root utmp rotate 1 } # 這個跟 wtmp 類似!由這個檔案的設定我們可以知道 /etc/logrotate.d 其實就是由 /etc/logrotate.conf 所規劃出來的目錄,所以,其實我們可以將所有的資料都給他寫入 /etc/logrotate.conf 即可,但是這樣一來這個檔案就實在是太複雜了,尤其是當我們使用很多的服務在系統上面時, 每個服務都要去修改 /etc/logrotate.conf 的設定也似乎不太合理~ 所以,如果獨立出來一個目錄,那麼每個以 RPM 打包方式所建立的服務的登錄檔輪替設定, 就可以獨自成為一個檔案,並且放置到 /etc/logrotate.d/ 當中即可, 真是方便又合理的做法啊! ^_^
[root@linux ~]# vi /etc/logrotate.d/syslog /var/log/messages /var/log/secure /var/log/maillog /var/log/spooler /var/log/boot.log /var/log/cron { sharedscripts postrotate /bin/kill -HUP `cat /var/run/syslogd.pid 2> /dev/null` 2> /dev/null || true endscript } # 亦即是這樣的格式啦! # 登錄檔的絕對路徑檔名 { # 各項基本上設定值 # }在上面的語法當中,我們知道正確的 logrotate 的寫法為:
[root@linux ~]# vi /etc/logrotate.d/syslog /var/log/messages /var/log/secure /var/log/maillog /var/log/spooler /var/log/boot.log /var/log/cron { sharedscripts prerotate /usr/bin/chattr -a /var/log/messages endscript sharedscripts postrotate /bin/kill -HUP `cat /var/run/syslogd.pid 2> /dev/null` 2> /dev/null || true /usr/bin/chattr +a /var/log/messages endscript }看到否?就是先給他去掉 a 這個屬性,讓登錄檔 /var/log/messages 可以進行輪替的動作, 然後執行了輪替之後,再給他加入這個屬性!請特別留意的是,那個 /bin/kill -HUP ... 的意義,這一行的目的在於將系統的 syslogd 重新以其參數檔( syslog.conf )的資料讀入一次!也可以想成是 reload 的意思啦! 由於我們建立了一個新的空的紀錄檔,如果不執行此一行來重新啟動服務的話, 那麼記錄的時候將會發生錯誤呦!! (請回到資源管理的章節讀一下 kill 後面的 signal 的內容說明)!
[root@linux ~]# logrotate [-vf] logfile 參數: -v :啟動顯示模式,會顯示 logrotate 運作的過程喔! -f :不論是否符合設定檔的資料,強制每個登錄檔都進行 rotate 的動作! 範例: 範例一:執行一次 logrotate 看看整個流程為何? [root@linux ~]# logrotate -v /etc/logrotate.conf reading config file /etc/logrotate.conf including /etc/logrotate.d reading config file acpid reading config info for /var/log/acpid .....(中間省略)..... rotating pattern: /var/log/btmp monthly (1 rotations) empty log files are rotated, old logs are removed considering log /var/log/btmp log does not need rotating 範例二:強制進行 logrotate 的動作 [root@linux ~]# logrotate -vf /etc/logrotate.conf .....(前面省略)..... rotating pattern: /var/log/wtmp forced from command line (1 rotations) empty log files are rotated, old logs are removed considering log /var/log/wtmp log needs rotating rotating log /var/log/wtmp, log->rotateCount is 1 renaming /var/log/wtmp.1 to /var/log/wtmp.2 (rotatecount 1, logstart 1, i 1), renaming /var/log/wtmp.0 to /var/log/wtmp.1 (rotatecount 1, logstart 1, i 0), old log /var/log/wtmp.0 does not exist renaming /var/log/wtmp to /var/log/wtmp.1 creating new log mode = 0664 uid = 0 gid = 22 removing old log /var/log/wtmp.2 # 看到否?整個 rotate 的動作就是這樣一步一步進行的~上面那個 -f 具有『強制執行』的意思,如果一切的設定都沒有問題的話,那麼理論上,您的 /var/log 這個目錄就會起變化囉!而且應該不會出現錯誤訊息才對!嘿嘿!這樣就 OK 了!很棒不是嗎?!
# 1. 先建立 +a 這個屬性啊! [root@linux ~]# chattr +a /var/log/admin.log [root@linux ~]# lsattr /var/log/admin.log -----a------- /var/log/admin.log [root@linux ~]# mv /var/log/admin.log /var/log/admin.log.1 mv: cannot move '/var/log/admin.log' to '/var/log/admin.log.1':permission deny # 2. 開始建立 logrotate 的設定檔,增加一個檔案在 /etc/logrotate.d 內就對了! [root@linux ~]# vi /etc/logrotate.d/admin # This configuration is from VBird 2005/10/24 /var/log/admin.log { monthly size=10M rotate 5 nocompress sharedscripts prerotate /usr/bin/chattr -a /var/log/admin.log endscript sharedscripts postrotate /usr/bin/killall -HUP syslogd /usr/bin/chattr +a /var/log/admin.log endscript } # 3. 測試一下 logrotate 相關功能的資訊顯示: [root@linux ~]# logrotate -v /etc/logrotate.conf .....(前面省略)..... rotating pattern: /var/log/admin.log 10485760 bytes (5 rotations) empty log files are rotated, old logs are removed considering log /var/log/admin.log log does not need rotating not running shared prerotate script, since no logs will be rotated .....(底下省略)..... # 4. 測試一下強制 logrotate 與相關功能的資訊顯示: [root@linux ~]# logrotate -vf /etc/logrotate.d/admin reading config file /etc/logrotate.d/admin reading config info for /var/log/admin.log Handling 1 logs rotating pattern: /var/log/admin.log forced from command line (5 rotations) empty log files are rotated, old logs are removed considering log /var/log/admin.log log needs rotating running shared prerotate script rotating log /var/log/admin.log, log->rotateCount is 5 ....(中間省略).... renaming /var/log/admin.log.0 to /var/log/admin.log.1 (rotatecount 5, logstart 1, i 0), old log /var/log/admin.log.0 does not exist log /var/log/admin.log.6 doesn't exist -- won't try to dispose of it renaming /var/log/admin.log to /var/log/admin.log.1 running shared postrotate script [root@linux ~]# lsattr /var/log/admin.log* -----a------- /var/log/admin.log ------------- /var/log/admin.log.1看到了嗎?透過這個方式,我們可以建立起屬於自己的 logrotate 設定檔案, 很簡便吧!尤其是要注意的, /etc/syslog.conf 與 /etc/logrotate.d/* 檔案常常要搭配起來,例如剛剛我們提到的兩個案例中所建立的 /var/log/admin.log 就是一個很好的例子~建立後,還要使用 logrotate 來輪替啊! ^_^
[root@linux ~]# dmesg | more
在指令列模式直接輸入 dmesg 即可執行!由於系統在開機的過程當中尚未將硬碟 mount
上來,所以無法直接將資料直接給他讀到 log file 當中去,但是為了除錯上面的方便,
所以在開機的過程當中的訊息還是要記錄下來,這個時候系統就將
ram 開了一個小區塊來儲存這個資料囉!這個開機記錄的檔案就是:『/proc/kmsg』啦!同時,預設的
RAM 的區塊容量在不同的版本中並不相同,目前的預設版本是 16KB 的大小呦。[root@linux ~]# last -n number [root@linux ~]# last -f filename 參數: -n :我們知道 last 會讀出這個月的資料,若資料量太大,可使用 -n 來嚴格要求 所以顯示的筆數即可。例如 20 筆資料: last -n 20 或 last -20 均可。 -f :last 預設讀出 /var/log/wtmp 這個檔案,但是我們可以透過 -f 讀取不同的 登錄檔資訊喔! 範例: 範例一:將上個月的資料讀出,僅讀出 5 筆資料時? [root@linux ~]# last -n 5 -f /var/log/wtmp.1 dmtsai2 pts/2 Mon Oct 24 14:18 - 14:18 (00:00) dmtsai2 work:0 work Mon Oct 24 14:18 gone - no logout dmtsai2 work:0 work Mon Oct 24 14:18 - 14:18 (00:00) dmtsai2 pts/2 Mon Oct 24 14:18 - 14:18 (00:00) dmtsai2 work:0 work Mon Oct 24 14:18 - 14:18 (00:00)夠炫吧?!
[root@linux ~]# lastlog Username Port From Latest root tty1 Tue Aug 16 18:06:20 +0800 2005 bin **Never logged in** .....(中間省略)..... dmtsai2 vbird-wo vbird-work Mon Oct 24 14:18:49 +0800 2005說穿了, lastlog 只是讀出 /var/log/lastlog 內的資訊而已~ 他會顯示目前系統上面的所有帳號當中,每個帳號最近一次登入的時間喔!
########################################################## 歡迎使用本程式來查驗您的登錄檔 本程式目前版本為: Version 0.1-1 程式最後更新日期為: 2005-01-09 若在您的系統中發現本程式有問題, 歡迎與我聯絡! 鳥哥的首頁 http://linux.vbird.org 問題回報: http://phorum.vbird.org/viewtopic.php?t=3425 ########################################################## =============== 系統彙整 ================================= 核心版本 : Linux version 2.6.12-1.1456_FC4 (bhcompile@tweety.build.redhat.com) CPU 資訊 : Pentium III (Coppermine) : 997.519 MHz 主機名稱 : localhost.localdomain 統計日期 : 2005/October/24 00:10:02 ( Monday ) 分析的日期: Oct 23 已開機期間: 26 days, 1:02, 目前主機掛載的 partitions Filesystem Size Used Avail Use% Mounted on /dev/hda1 5.7G 3.3G 2.2G 61% / /dev/shm 189M 0 189M 0% /dev/shm ================= Ports 的相關分析資訊 ======================= 主機啟用的 port 與相關的 process owner: 僅對本機介面開放的 ports (PID|owner|command) tcp 25|(root)|/usr/libexec/postfix/master 對外部介面開放的 ports (PID|owner|command) tcp 22|(root)|/usr/sbin/sshd udp 68|(root)|/sbin/dhclient -1 -q -cf /etc/dhclient-eth1.conf -lf /var/l ================= SSH 的登錄檔資訊彙整 ======================= 一共成功登入的次數: 3 帳號 來源位址 次數 dmtsai2 192.168.1.51 3 以 su 轉換成 root 的使用者及次數 帳號 次數 (uid=530) 1 ================= POP3 的登錄檔資訊彙整 ====================== 今日沒有使用 POP3 的紀錄 ================= Postfix 的登錄檔資訊彙整 =================== 使用者信箱受信次數:如果您有興趣看看這支程式的話,歡迎下載: 安裝的方法也很簡單,只要將上述檔按下載後,解壓縮,就會得到一個名為 logfile 的目錄, 將此目錄移動到 /usr/local/virus 當中,修改一下: /usr/local/virus/logfile.sh 檔案, 裡面的 email 與相關的資訊只要修改一下,您就可以使用啦~ 啊!還要記得,將這支程式的執行寫入 /etc/crontab 當中喔! 可以在每天的 12:10am 執行這支小程式啦! ^_^