1、who命令
創(chuàng)新互聯(lián)建站專注于企業(yè)全網(wǎng)整合營銷推廣、網(wǎng)站重做改版、東城網(wǎng)站定制設(shè)計(jì)、自適應(yīng)品牌網(wǎng)站建設(shè)、HTML5建站、成都做商城網(wǎng)站、集團(tuán)公司官網(wǎng)建設(shè)、成都外貿(mào)網(wǎng)站建設(shè)、高端網(wǎng)站制作、響應(yīng)式網(wǎng)頁設(shè)計(jì)等建站業(yè)務(wù),價(jià)格優(yōu)惠性價(jià)比高,為東城等各大城市提供網(wǎng)站開發(fā)制作服務(wù)。
who命令查詢utmp文件并報(bào)告當(dāng)前登錄的每個(gè)用戶。Who的缺省輸出包括用戶名、終端類型、登錄日期及遠(yuǎn)程主機(jī)。使用該命令,系統(tǒng)管理員可以查看當(dāng)前系統(tǒng)存在哪些不法用戶,從而對(duì)其進(jìn)行審計(jì)和處理。例如:運(yùn)行who命令顯示如下所示:
#?who
root?????pts/1????????2010-02-22?13:02?(:0.0)
root?????pts/2????????2010-02-22?15:57?(:0.0)
root?????pts/3????????2010-02-22?15:57?(:0.0)
如果指明了wtmp文件名,則who命令查詢所有以前的記錄。命令who /var/log/wtmp將報(bào)告自從wtmp文件創(chuàng)建或刪改以來的每一次登錄。例如:運(yùn)行該命令如下所示:
root?????:0???????????2010-01-24?21:47
root?????pts/1????????2010-01-24?21:47?(:0.0)
root?????:0???????????2010-02-20?19:36
root?????pts/1????????2010-02-20?19:36?(:0.0)
root?????:0???????????2010-02-21?15:21
root?????pts/1????????2010-02-21?15:56?(:0.0)
root?????pts/2????????2010-02-21?16:03?(:0.0)
root?????:0???????????2010-02-22?13:01
root?????pts/1????????2010-02-22?13:02?(:0.0)
root?????pts/2????????2010-02-22?15:57?(:0.0)
root?????pts/3????????2010-02-22?15:57?(:0.0)
2、user命令
users用單獨(dú)的一行打印出當(dāng)前登錄的用戶,每個(gè)顯示的用戶名對(duì)應(yīng)一個(gè)登錄會(huì)話。如果一個(gè)用戶有不止一個(gè)登錄會(huì)話,那他的用戶名將顯示相同的次數(shù)。運(yùn)行該命令將如下所示:
# users
root root root
3、last 命令
last命令往回搜索wtmp來顯示自從文件第一次創(chuàng)建以來登錄過的用戶。系統(tǒng)管理員可以周期性地對(duì)這些用戶的登錄情況進(jìn)行審計(jì)和考核,從而發(fā)現(xiàn)起中存在的問題,確定不法用戶,并進(jìn)行處理。運(yùn)行該命令,如下所示:
# last
root???? pts/3??????? :0.0???????????? Mon Feb 22 15:57?? still logged in
root???? pts/2??????? :0.0???????????? Mon Feb 22 15:57?? still logged in
root???? pts/1??????? :0.0???????????? Mon Feb 22 13:02?? still logged in
root???? :0??????????????????????????? Mon Feb 22 13:01?? still logged in
reboot?? system boot? 2.6.18-8.el5???? Mon Feb 22 12:56????????? (03:02)
root???? pts/2??????? :0.0???????????? Sun Feb 21 16:03 - down?? (02:37)
4、ac命令
ac命令根據(jù)當(dāng)前的/var/log/wtmp文件中的登錄進(jìn)入和退出來報(bào)告用戶連結(jié)的時(shí)間(小時(shí)),如果不使用標(biāo)志,則報(bào)告總的時(shí)間。例如:ac(回車)顯示:total 18.47,如下所示:
# ac
total?????? 18.47
另外,可加一些參數(shù),例如,last -u 102將報(bào)告UID為102的用戶;last -t 7表示限制上一周的報(bào)告。
5、lastlog命令
lastlog文件在每次有用戶登錄時(shí)被查詢??梢允褂胠astlog命令檢查某特定用戶上次登錄的時(shí)間,并格式化輸出上次登錄日志/var/log/lastlog的內(nèi)容。它根據(jù)UID排序顯示登錄名、端口號(hào)(tty)和上次登錄時(shí)間。如果一個(gè)用戶從未登錄過,lastlog顯示**Never logged**。注意需要以root身份運(yùn)行該命令。
參考資料:《Linux如何學(xué)》,部分來源網(wǎng)絡(luò)
Linux系統(tǒng)日志文件存放在/var/log下
/var/log/cron 記錄了系統(tǒng)定時(shí)任務(wù)相關(guān)的日志;
/var/log/cups 記錄打印信息的日志;
/var/log/dmesg 記錄了系統(tǒng)在開機(jī)時(shí)內(nèi)核自檢的信息,也可以使用dmesg命令直接查看內(nèi)核自檢信息。
/var/log/btmp 記錄錯(cuò)誤登錄的日志,這個(gè)文件是二進(jìn)制文件,不能直接vi查看,而要使用lastb命令查看;
/var/log/lastlog 記錄系統(tǒng)中所有用戶最后一次的登錄時(shí)間的日志。這個(gè)文件也是二進(jìn)制文件,不能直接vi,而要使用lastlog命令查看。
/var/log/mailog 記錄郵件信息;
/var/log/message 記錄系統(tǒng)重要信息的日志,記錄Linux系統(tǒng)的絕大多數(shù)重要信息,如果系統(tǒng)出現(xiàn)問題,首先要檢查的就是應(yīng)該是這個(gè)日志文件;
/var/log/secure 記錄驗(yàn)證和授權(quán)方面的信息,只要涉及賬戶和密碼的程序都會(huì)記錄。比如說系統(tǒng)的登錄,ssh的登錄,su切換用戶,sudo授權(quán),甚至添加用戶和修改用戶密碼;
/var/log/wtmp 永久記錄所有用戶的登錄、注銷信息,同時(shí)記錄系統(tǒng)的啟動(dòng)、重啟、關(guān)機(jī)事件。同樣這個(gè)文件也是一個(gè)二進(jìn)制文件不能直接vi而需要使用last命令來查看;
/var/run/utmp 記錄當(dāng)前已經(jīng)登錄的用戶的信息。這個(gè)文件會(huì)隨著用戶的登錄和注銷而不斷變化,只記錄當(dāng)前登錄用戶的信息,同樣這個(gè)文件不能直接vi,要使用w,who,users等命令;
last
-a 把從何處登入系統(tǒng)的主機(jī)名稱或ip地址,顯示在最后一行。
-d 指定記錄文件。指定記錄文件。將IP地址轉(zhuǎn)換成主機(jī)名稱。
-f 記錄文件 指定記錄文件。
-n 顯示列數(shù)或-顯示列數(shù) 設(shè)置列出名單的顯示列數(shù)。
-R 不顯示登入系統(tǒng)的主機(jī)名稱或IP地址。
-x 顯示系統(tǒng)關(guān)機(jī),重新開機(jī),以及執(zhí)行等級(jí)的改變等信息
以下看所有的重啟、關(guān)機(jī)記錄
last | grep reboot
last | grep shutdown
history
列出所有的歷史記錄:
[zzs@Linux] # history
只列出最近10條記錄:
[zzs@linux] # history 10 (注,history和10中間有空格)
使用命令記錄號(hào)碼執(zhí)行命令,執(zhí)行歷史清單中的第99條命令
[zzs@linux] #!99 (!和99中間沒有空格)
重復(fù)執(zhí)行上一個(gè)命令
[zzs@linux] #!!
執(zhí)行最后一次以rpm開頭的'命令(!? ?代表的是字符串,這個(gè)String可以隨便輸,Shell會(huì)從最后一條歷史命令向前搜索,最先匹配的一條命令將會(huì)得到執(zhí)行。)
[zzs@linux] #!rpm
逐屏列出所有的歷史記錄:
[zzs@linux]# history | more
立即清空history當(dāng)前所有歷史命令的記錄
[zzs@linux] #history -c
cat, tail 和 watch
系統(tǒng)所有的日志都在 /var/log 下面自己看(具體用途可以自己查,附錄列出一些常用的日志)
cat /var/log/syslog 等
cat /var/log/*.log
tail -f
如果日志在更新,如何實(shí)時(shí)查看 tail -f /var/log/messages
還可以使用 watch -d -n 1 cat /var/log/messages
-d表示高亮不同的地方,-n表示多少秒刷新一次。
該指令,不會(huì)直接返回命令行,而是實(shí)時(shí)打印日志文件中新增加的內(nèi)容,
這一特性,對(duì)于查看日志是非常有效的。如果想終止輸出,按 Ctrl+C 即可。
除此之外還有more, less ,dmesg|more,這里就不作一一列舉了,因?yàn)槊钐嗔?關(guān)鍵看個(gè)人喜好和業(yè)務(wù)需求.個(gè)人常用的就是以上那些
linux日志文件說明
/var/log/message 系統(tǒng)啟動(dòng)后的信息和錯(cuò)誤日志,是Red Hat Linux中最常用的日志之一
/var/log/secure 與安全相關(guān)的日志信息
/var/log/maillog 與郵件相關(guān)的日志信息
/var/log/cron 與定時(shí)任務(wù)相關(guān)的日志信息
/var/log/spooler 與UUCP和news設(shè)備相關(guān)的日志信息
/var/log/boot.log 守護(hù)進(jìn)程啟動(dòng)和停止相關(guān)的日志消息
/var/log/wtmp 該日志文件永久記錄每個(gè)用戶登錄、注銷及系統(tǒng)的啟動(dòng)、停機(jī)的事件
tail -f 日志文件路徑主要用于查看實(shí)時(shí)的日志記錄,屬于動(dòng)態(tài)記錄查看。
cat日志路徑主要用于查看靜態(tài)的歷史日志記錄,一般跟路徑名稱,常見的這周類型的日志記錄一般用管道符進(jìn)行過濾篩選自己所需的記錄。
dmesg主要用于調(diào)試腳本或者命令,出現(xiàn)異常中斷來排查錯(cuò)誤原因顯示的。
tail? -n? 10? test.log,查詢?nèi)罩疚膊孔詈?0行的日志。
tail -n +10 test.log,查詢10行之后的所有日志。
head -n 10? test.log,查詢?nèi)罩疚募械念^10行日志。
head -n -10? test.log,查詢?nèi)罩疚募俗詈?0行的其他所有日志。
操作命令
首先介紹一個(gè)名詞“控制臺(tái)(console)”,它就是我們通常見到的使用字符操作界面的人機(jī)接口,例如dos。我們說控制臺(tái)命令,就是指通過字符界面輸入的可以操作系統(tǒng)的命令。
例如dos命令就是控制臺(tái)命令。要了解的是基于Linux操作系統(tǒng)的基本控制臺(tái)命令。有一點(diǎn)一定要注意,和dos命令不同的是,Linux的命令(也包括文件名等等)對(duì)大小寫是敏感的,也就是說,如果你輸入的命令大小寫不對(duì)的話,系統(tǒng)是不會(huì)做出你期望的響應(yīng)的。
在上文中,我們已經(jīng)詳細(xì)介紹 linux 三劍客的基本使用,接下來我們看看具體在性能測(cè)試領(lǐng)域的運(yùn)用,本文主要介紹的是在 Tomcat 和 Nginx access日志的統(tǒng)計(jì)分析。
server.xml 使用配置方式,%D-請(qǐng)求時(shí)間,%F-響應(yīng)時(shí)間
字段說明如下:
日志樣例:
使用默認(rèn) combined 的經(jīng)典格式上擴(kuò)展 response_timeupstream_response_time
nginx.conf 使用配置方式:
字段說明如下:
日志示例:
為了能理解 AWK 程序,我們下面概述其基本知識(shí)。
模式( pattern ) 用于匹配輸入中的每行文本。對(duì)于匹配上的每行文本,awk 都執(zhí)行對(duì)應(yīng)的 動(dòng)作( action )。模式和動(dòng)作之間使用花括號(hào)隔開。awk 順序掃描每一行文本,并使用 記錄分隔符(一般是換行符)將讀到的每一行作為 記錄,使用 域分隔符( 一般是空格符或制表符 ) 將一行文本分割為多個(gè) 域, 每個(gè)域分別可以使用 2, … 表示。1 表示第一個(gè)域,表示第二個(gè)域,n 表示第 n 個(gè)域。 $0 表示整個(gè)記錄。模式或動(dòng)作都可以不指定,缺省模式的情況下,將匹配所有行。缺省動(dòng)作的情況下,將執(zhí)行動(dòng)作 {print},即打印整個(gè)記錄。
此處使用Nginx access.log 舉例,Tomcat 日志自己舉一反三。 使用 awk 分解出Nginx access日志中的信息
以此類推…… 當(dāng)我們使用默認(rèn)的域分割符時(shí),我們可以從日志中解析出下面不同類型的信息:
我們不難發(fā)現(xiàn),僅使用默認(rèn)的域分隔符,不方便解析出請(qǐng)求行、引用頁和瀏覽器類型等其他信息,因?yàn)檫@些信息之中包含不確定個(gè)數(shù)的空格。 因此,我們需要把域分隔符修改為 “ ,就能夠輕松讀出這些信息。
注意:這里為了避免 Linux Shell 誤解 “ 為字符串開始,我們使用了反斜杠,轉(zhuǎn)義了 “ 。 現(xiàn)在,我們已經(jīng)掌握了 awk 的基本知識(shí),以及它是怎樣解析日志的。
此處使用Nginx access.log 舉例,Tomcat 日志自己舉一反三。
如果我們想知道那些類型的瀏覽器訪問過網(wǎng)站,并按出現(xiàn)的次數(shù)倒序排列,我可以使用下面的命令:
此命令行首先解析出瀏覽器域,然后使用管道將輸出作為第一個(gè) sort 命令的輸入。第一個(gè) sort 命令主要是為了方便 uniq 命令統(tǒng)計(jì)出不同瀏覽器出現(xiàn)的次數(shù)。最后一個(gè) sort 命令將把之前的統(tǒng)計(jì)結(jié)果倒序排列并輸出。
我們可以使用下面的命令行,統(tǒng)計(jì)服務(wù)器返回的狀態(tài)碼,發(fā)現(xiàn)系統(tǒng)可能存在的問題。
正常情況下,狀態(tài)碼 200 或 30x 應(yīng)該是出現(xiàn)次數(shù)最多的。40x 一般表示客戶端訪問問題。50x 一般表示服務(wù)器端問題。 下面是一些常見的狀態(tài)碼:
HTTP 協(xié)議狀態(tài)碼定義可以參閱:
查找并顯示所有狀態(tài)碼為 404 的請(qǐng)求
統(tǒng)計(jì)所有狀態(tài)碼為 404 的請(qǐng)求
現(xiàn)在我們假設(shè)某個(gè)請(qǐng)求 ( 例如 : URI: /path/to/notfound ) 產(chǎn)生了大量的 404 錯(cuò)誤,我們可以通過下面的命令找到這個(gè)請(qǐng)求是來自于哪一個(gè)引用頁,和來自于什么瀏覽器。
有時(shí)候會(huì)發(fā)現(xiàn)其他網(wǎng)站出于某種原因,在他們的網(wǎng)站上使用保存在自己網(wǎng)站上的圖片。如果您想知道究竟是誰未經(jīng)授權(quán)使用自己網(wǎng)站上的圖片,我們可以使用下面的命令:
注意:使用前,將 修改為自己網(wǎng)站的域名。
統(tǒng)計(jì)共有多少個(gè)不同的 IP 訪問:
統(tǒng)計(jì)每一個(gè) IP 訪問了多少個(gè)頁面:
將每個(gè) IP 訪問的頁面數(shù)進(jìn)行從小到大排序:
統(tǒng)計(jì) 2018 年 8 月 31 日 14 時(shí)內(nèi)有多少 IP 訪問 :
統(tǒng)計(jì)訪問最多的前十個(gè) IP 地址
查看某一個(gè) IP訪問了哪些頁面:
統(tǒng)計(jì)某個(gè) IP 的詳細(xì)訪問情況,按訪問頻率排序
列出傳輸大小最大的幾個(gè)文件
列出輸出大于 204800 byte ( 200kb) 的頁面以及對(duì)應(yīng)頁面發(fā)生次數(shù)
列出訪問最頻的頁面(TOP100)
列出訪問最頻的頁面([排除php頁面】(TOP100)
列出頁面訪問次數(shù)超過100次的頁面
列出最近1000條記錄,訪問量最高的頁面
統(tǒng)計(jì)每分鐘的請(qǐng)求數(shù),top100的時(shí)間點(diǎn)(精確到分鐘)
統(tǒng)計(jì)每小時(shí)的請(qǐng)求數(shù),top100的時(shí)間點(diǎn)(精確到小時(shí))
統(tǒng)計(jì)每秒的請(qǐng)求數(shù),top100的時(shí)間點(diǎn)(精確到秒)
統(tǒng)計(jì)當(dāng)天的 pv
說明:
可以使用下面的命令統(tǒng)計(jì)出所有響應(yīng)時(shí)間超過 3 秒的日志記錄。
注意:NF 是當(dāng)前記錄中域的個(gè)數(shù)。$NF 即最后一個(gè)域。
列出php頁面請(qǐng)求時(shí)間超過3秒的頁面,并統(tǒng)計(jì)其出現(xiàn)的次數(shù),顯示前100條
列出相應(yīng)時(shí)間超過 5 秒的請(qǐng)求,顯示前20條
統(tǒng)計(jì)蜘蛛抓取次數(shù)
統(tǒng)計(jì)蜘蛛抓取404的次數(shù)
通過本文的介紹,我相信同學(xué)們一定會(huì)發(fā)現(xiàn) linux三劍客強(qiáng)大之處。在命令行中,它還能夠接受,和執(zhí)行外部的 AWK 程序文件,可以對(duì)文本信息進(jìn)行非常復(fù)雜的處理,可以說“只有想不到的,沒有它做不到的”。