第十九章 什麼是登入檔案

2021-09-12 04:24:17 字數 3712 閱讀 2852

『[color=red]詳細而確實的分析以及備份系統的登入檔案[/color]』是乙個系統管理員應該要進行的任務之一。 那麼什麼是登入檔案呢?簡單的說,就是[color=red]記錄系統活動資訊的幾個檔案[/color], 例如:何時、何地 (** ip)、何人 (什麼服務名稱)、做了什麼動作 (資訊登入羅)。 換句話說就是:[color=blue]記錄系統在什麼時候由哪個程式做了什麼樣的行為時,發生了何種的事件等等。[/color]

要知道的是,我們的 linux 主機在背景之下有相當多的 daemons 同時在工作著,這些工作中的程式總是會顯示一些資訊, [color=red]這些顯示的資訊最終會被記載到登入檔案當中啦[/color]。也就是說,記錄這些系統的重要資訊就是登入檔案的工作啦!

[size=small][b]登入檔案的重要性[/b][/size]

為什麼說登入檔案很重要,重要到系統管理員需要隨時注意他呢?我們可以這麼說:

[b]解決系統方面的錯誤:[/b]

用 linux 這麼久了,你應該偶而會發現系統可能會出現一些錯誤,包括硬體捉不到或者是某些系統程式無法順利執行的情況。 此時你該如何是好?[color=red]由於系統會將硬體偵測過程記錄在登入檔案內,你只要透過查詢登入檔案就能夠了解系統作了啥事![/color] 並且由第十七章我們也知道 selinux 與登入檔案的關係更加的強烈!所以羅,查詢登入檔案可以克服一些系統問題啦!

[b]解決網路服務的問題:[/b]

你可能在做完了某些網路服務的配置後,卻一直無法順利啟動該服務,此時該怎辦?去廟裡面拜拜抽籤嗎? 三太子大大可能無法告訴你要怎麼處理呢![color=red]由於網路服務的各種問題通常都會被寫入特別的登入檔案, 其實你只要查詢登入檔案就會知道出了什麼差錯[/color],還不需要請示三太子大大啦!舉例來說,如果你無法啟動郵件伺服器 (sendmail), 那麼查詢一下 /var/log/maillog 通常可以得到不錯的解答!

[b]過往事件記錄簿:[/b]

這個東西相當的重要!例如:你發現 www 服務 (apache 軟體) 在某個時刻流量特別大,你想要了解為什麼時, 可以透過登入檔案去找出該時段是哪些 ip 在連線與查詢的網頁資料為何,就能夠知道原因。 此外,萬一哪天你的系統被入侵,並且被利用來攻擊他人的主機,由於被攻擊主機會記錄攻擊者,因此你的 ip 就會被對方記錄。這個時候你要如何告知對方你的主機是由於被入侵所導致的問題, 並且協助對方繼續往惡意**追查呢?呵呵!此時登入檔案可是相當重要的呢!

[size=large][b]linux 常見的登入檔案檔名[/b][/size]

登入檔案可以幫助我們了解很多系統重要的事件,包括登陸者的部分資訊,因此登入檔案的許可權通常是配置為僅有 root 能夠讀取而已。 而由於登入檔案可以記載系統這麼多的詳細資訊,所以啦,[color=red]乙個有經驗的主機管理員會隨時隨地查閱一下自己的登入檔案[/color], 以隨時掌握系統的最新脈動!那麼常見的幾個登入檔案有哪些呢?一般而言,有下面幾個:

[b]/var/log/cron:[/b]

還記得第十六章例行性工作排程吧?你的 crontab 排程有沒有實際被進行? 進行過程有沒有發生錯誤?你的 /etc/crontab 是否撰寫正確?在這個登入檔案內查詢看看。

[b]/var/log/dmesg:[/b]

記錄系統在啟動的時候核心偵測過程所產生的各項資訊。由於 centos 預設將啟動時核心的硬體偵測過程取消顯示, 因此額外將資料記錄乙份在這個檔案中;

[b]/var/log/lastlog:[/b]

[b]/var/log/maillog 或 /var/log/mail/*:[/b]

記錄郵件的往來資訊,其實主要是記錄 sendmail (smtp 協議提供者) 與 dovecot (pop3 協議提供者) 所產生的資訊啦。 smtp 是發信所使用的通訊協議, pop3 則是收信使用的通訊協議。 sendmail 與 dovecot 則分別是兩套達成通訊協議的軟體。

[b]/var/log/messages:[/b]

[color=red]這個檔案相當的重要,幾乎系統發生的錯誤資訊 (或者是重要的資訊) 都會記錄在這個檔案中;[/color] 如果系統發生莫名的錯誤時,這個檔案是一定要查閱的登入檔案之一。

[b]/var/log/secure:[/b]

[color=red]/var/log/wtmp, /var/log/faillog:[/color]

這兩個檔案可以記錄正確登陸系統者的帳號資訊 (wtmp) 與錯誤登陸時所使用的帳號資訊 (faillog) ! 我們在第十一章談到的 last 就是讀取 wtmp 來顯示的, 這對於追蹤一般帳號者的使用行為很有幫助!

不同的網路服務會使用它們自己的登入檔案來記載它們自己產生的各項資訊!上述的目錄內則是個別服務所制訂的登入檔案。

常見的登入檔案就是這幾個,但是不同的 linux distributions ,通常登入檔案的檔名不會相同 ([color=red]除了 /var/log/messages 之外 [/color])。所以說,你還是得要查閱你 linux 主機上面的登入檔案配置資料, 才能知道你的登入檔案主要檔名喔!

[size=small][b]登入檔案所需相關服務 (daemon) 與程式[/b][/size]

那麼這些登入檔案是怎麼產生的呢?基本上有兩種方式,一種是由軟體開發商自行定義寫入的登入檔案與相關格式, 例如 www 軟體 apache 就是這樣處理的。另一種則是由 linux distribution 提供的登入檔案管理服務來統一管理。 你只要將資訊丟給這個服務後,他就會自己分門別類的將各種資訊放置到相關的登入檔案去!centos 提供 [color=red]syslogd [/color]這個服務來統一管理登入檔案喔!

除了這個 syslogd 之外,我們的核心也需要額外的登入服務來記錄核心產生的各項資訊, 這個專門記錄核心資訊的登入檔案服務就是 klogd 啦。[color=blue]所以說,登入檔案所需的服務主要就是 syslogd 與 klogd 這兩者。[/color]

不過要注意的是,如果你任憑登入檔案持續記錄的話,由於系統產生的資訊天天都有,那麼你的登入檔案的容量將會長大到無法無天~ 如果你的登入檔案容量太大時,可能會導致大檔案讀寫效率不佳的問題 (因為要從磁碟讀入記憶體,越大的檔案消耗記憶體量越多)。 所以羅,你需要對登入檔案備份與公升級。那...需要手動處理喔?當然不需要,我們可以透過 [color=red]logrotate (登入檔案輪替)[/color] 這玩意兒來自動化處理登入檔案容量與公升級的問題喔!

所謂的 logrotate 基本上,[color=red]就是將舊的登入檔案更改名稱,然後建立乙個空的登入檔案[/color],如此一來, 新的登入檔案將重新開始記錄,然後只要將舊的登入檔案留下一陣子,嗯!那就可以達到將登入檔案『輪轉』的目的啦! 此外,如果舊的紀錄 (大概要儲存幾個月吧!) 儲存了一段時間沒有問題,那麼就可以讓系統自動的將他砍掉, 免得佔掉很多寶貴的磁碟空間說!

總結一下,針對登入檔案所需的功能,我們需要的服務與程式有:

[color=red]syslogd:主要登入系統與網路等服務的資訊;[/color]

[color=red]klogd:主要登入核心產生的各項資訊;[/color]

[color=blue]logrotate:主要在進行登入檔案的輪替功能。[/color]

由於我們著眼點在於想要了解系統上面軟體所產生的各項資訊,因此本章主要針對 syslogd 與 logrotate 來介紹。 接著下來我們來談一談怎麼樣規劃這兩個玩意兒。就由 syslogd 這支程式先談起吧!畢竟得先有登入檔案,才可以進行 logrotate 呀!您說是吧!

**:[url]

第十九章 事務

redis的事務是指將多個命令請求打包,一次性地,按順序執行的機制。通過multi exec watch等命令實現事務功能。19.1.1 事務的開始 multi命令的執行代表了乙個事務的開始,會將執行該命令的客戶端由非事務狀態切換成事務狀態 在客戶端狀態的flags屬性中開啟redis multi標...

第十九章 19 1 1節練習

練習19.1 使用malloc編寫你自己的operator new size t 函式,使用free編寫operator delete void 函式。解答 這個也就參考書中實現吧。不過這裡我更傾向於使用模板來實現,不把new的引數寫死。練習19.2 預設情況下,allocator類使用operat...

第十九章 19 2 1節練習

練習19.3 已知存在如下的類繼承體系,其中每個類分別定義了乙個公有的預設建構函式和乙個虛析構函式 class a class b public a class c public b class d public b,public a 下面的哪個dynamic cast將失敗?a a pa new ...