建設(shè)一個導(dǎo)航網(wǎng)站百度搜索怎么優(yōu)化
1.1 cat、zcat
-
cat -n app.log | grep "error":查詢?nèi)罩局泻心硞€關(guān)鍵字error的信息,顯示行號。
-
cat -n app.log | grep "error" --color:查詢?nèi)罩局泻心硞€關(guān)鍵字error的信息,顯示行號,帶顏色的。
-
cat -n test.log | tail -n +92 | head -n 20 :表示查詢92行之后的日志;表示在前面的查詢結(jié)果里再查前20條記錄。
-
cat -n app.log |grep "error" | more:使用more和less命令分頁查看日志,空格鍵翻頁。
-
cat -n app.log |grep "error" > temp.txt:把日志保存到文件。
-
zcat shopdiy-job01.jd__shopdiy-job.warn.log-2019-03-25-1.log.gz | gerp "hotelFriendCircle poi":直接查找壓縮包里的日志內(nèi)容
-
gzip -dc app.log.2018-01-11.gz |grep "此次共實際刷數(shù)據(jù)" | more:不解壓直接查看壓縮包中的“關(guān)鍵詞”信息
1.2 grep
-
grep -E "123|abc" app.log(grep -E "123|abc" app.log --color):查詢?nèi)罩疚募pp.log中包含 關(guān)鍵字 123 或 包含 關(guān)鍵字 abc 的行。(帶顏色)
-
tail -f app.log | grep -E -C20 "123|abcd" --color:實時查看日志,且包含關(guān)鍵字 123 或者 abcd 的行。
-
grep -nE "123|abc" app.log:查詢?nèi)罩疚募pp.log中包含 關(guān)鍵字 123 或 包含 關(guān)鍵字 abc 的行,顯示行號。
-
grep "此次共實際刷數(shù)據(jù)" app.log:查看日志中的關(guān)鍵字。
-
grep "此次共實際刷數(shù)據(jù)" app.log | more:查詢關(guān)鍵字,并且按空格鍵翻頁。
-
grep -i "magic" app.log :不分大小寫的搜索匹配magic。默認情況下是區(qū)分大小寫的。
-
grep -w "magic" app.log :匹配整個單詞而不是字符串的一部分(如匹配“magic”,而不是“magical”)。
-
grep -E "123" app.log:顯示app.log中含有關(guān)鍵字"123"的行內(nèi)容。
-
grep -E -A5 "123" app.log:顯示app.log中含有關(guān)鍵字"123"的行內(nèi)容,以及之后的5行內(nèi)容。
-
grep -E -B5 "123" app.log:顯示app.log中含有關(guān)鍵字"123"的行內(nèi)容,以及之前的5行內(nèi)容。
-
grep -E -C5 "123" app.log:顯示app.log中含有關(guān)鍵字"123"的行內(nèi)容,以及之前之后的各5行內(nèi)容。
1.3 head【頭正尾負】
- head -n 10 app.log(head -n +10 app.log、head 10 app.log):查看日志中的頭10行日志。
- head -n -10 app.log:查看日志中除了尾10行之外的所有日志。
1.4 tail【頭正尾負】
-
tail -n 10 app.log(tail -n -10 app.log、tail -10 app.log):查看日志中的尾10行日志。
-
tail -n +10 app.log:查看日志中除了頭10行之外的所有日志。
-
tail -f app.log:實時查看日志信息。
-
tail -f app.log |grep "關(guān)鍵詞":實時查看日志中含有某個關(guān)鍵詞的信息。
-
tail -f app.log |grep -A3 "關(guān)鍵詞":實時查看日志中含有某個關(guān)鍵詞的信息,該行的前面和后面各多顯示3行。比如:tail -f app.log |grep -A3 "此次共實際刷數(shù)據(jù)"。
-
tail -f app.log |grep "mtUserScore" --color:實時查看app.log日志中的含有關(guān)鍵詞“mtUserScore”的日志信息,并且彩色打印。
-
tail -n 20 app.log |grep --color "此次共實際刷數(shù)據(jù)":查看日志的最后20行并且搜索關(guān)鍵字。
-
tail -fn 100 app.log:循環(huán)實時查看最后100行的記錄。
-
tail -fn 100 app.log |grep --color "此次共實際刷數(shù)據(jù)":循環(huán)查看最后100行的記錄,并且查找關(guān)鍵字。
-
tail -500 /data/applogs/tomcat/catalina.out:查看Tomcat錯誤日志。
-
tail -f app.log | grep -A50 "randomFlow=" --color:查看后面50行的日志。tail -f app.log | grep -A50 "接口查詢結(jié)果=" --color
-
tail -f app.log | egrep "repast launchId=|whtOuterCreativeService.generateCreative" --color:命中多個關(guān)鍵字中其中一個即可,注意:| 的前后不能有空格。
-
tail -f app.log | egrep "ERROR|WARN" --color:命中多個關(guān)鍵字中其中一個即可,注意:| 的前后不能有空格。
-
tail -f app.log | egrep "ERROR|WARN" -wc:統(tǒng)計數(shù)量,命中多個關(guān)鍵字中其中一個即可,注意:| 的前后不能有空格。
-
grep "modifyBudget" midas-shopdiy-web.access.log | grep "realAccountId=58754220" --color:同時滿足兩個條件。
-
tail -f nginx.access.log | grep -E "getPaginateList|queryAccounts" --color :匹配多個關(guān)鍵字之一即可
1.5 ps
-
ps -ef |grep java:查看Java進程。
-
ps -ef |grep tomcat:查看Tomcat進程。
-
curl www.baidu.com:查看url能不能使用。
-
ps -ef | grep 8080:查看端口號8080被哪個進程占用。
-
ps -ef | grep redis:查看已經(jīng)啟動所有進程中與字符“redis”相關(guān)的進程。
-
ps -ef | grep java:查看已經(jīng)啟動所有進程中與字符“java”相關(guān)的進程。
-
ping 192.168.1.122:查看本機能否和IP=192.168.1.122的主機連通。
-
scp -r redis-3.0.0/ 192.168.1.122:/usr/local:如果可以連通,則可以遠程傳輸文件。
-
cp redis.conf /usr/local/redis-cluster/7001:復(fù)制文件到指定文件夾。
1.6 Nginx日志查詢
-
應(yīng)用日志記錄的位置:/data/applogs/shopdiy-web/logs
-
tail -f app.log:動態(tài)查看應(yīng)用日志。
-
應(yīng)用Nginx日志記錄的位置,HTTP請求時長結(jié)果查看:/data/applogs/nginx
-
tail -f shopdiy-web.access.log:通過訪問頁面來動態(tài)查看Nginx日志。
1.7 壓縮包的解壓-壓縮
-
gz壓縮:app.log-2018-09-22-1.log 文件,執(zhí)行:gzip app.log-2018-09-22-1.log,被壓縮成 app.log-2018-09-22-1.log.gz
-
gz接壓縮:app.log-2018-09-22-1.log.gz 文件,執(zhí)行:gzip -d app.log-2018-09-22-1.log.gz,被解壓成 app.log-2018-09-22-1.log
-
gzip -dc app.log.2018-01-11.gz |grep "此次共實際刷數(shù)據(jù)" | more:不解壓直接查看壓縮包中的“關(guān)鍵詞”信息
1.8 sed
-
這個命令可以查找日志文件特定的一段 , 也可以根據(jù)時間的一個范圍查詢。
-
sed -n "5,10p" app.log:按照行數(shù)——查看日志第5到第10行。
-
sed -n "/2018-04-08 09:40:53.374/,/2018-04-08 10:21:04.812/p" express.log | grep "此次共實際刷數(shù)據(jù)" :按照時間段——查看兩個時間之間的日志,并且顯示關(guān)鍵字。其中,時間點一定要在日志中存在,可用:grep -E "2018-04-08 09:40:53.374" app.log --color:來查看時間點是不是存在日志中,帶顏色。
1.9 lsof (list open files)
-
lsof -i tcp:查看TCP連接的端口號使用情況
-
lsof -i udp:查看UDP連接的端口號使用情況
-
lsof -i tcp:58528 :(port替換成端口號,比如6379)可以查看該端口被什么程序占用,并顯示PID,方便kill
-
lsof -i udp:58529 :(port替換成端口號,比如6379)可以查看該端口被什么程序占用,并顯示PID,方便kill
-
kill -9 518:結(jié)束進程PID號為518的進程
1.10 netstat
-
netstat -a:列出所有端口
-
netstat -at :列出所有tcp端口
-
netstat -au:列出所有udp端口
-
netstat -l :只顯示監(jiān)聽端口
-
netstat -lt :只列出所有監(jiān)聽tcp端口
-
netstat -lu :只列出所有監(jiān)聽udp端口
-
netstat -st:顯示 TCP 端口的統(tǒng)計信息
-
netstat -su:顯示 UDP 端口的統(tǒng)計信息
1.11 ifconfig
ifconfig:Mac查看本機IP地址。其中的ether是硬件mac地址,inet是IP地址。另,可以參考這個知道:https://jingyan.baidu.com/article/b0b63dbf3fefd14a48307013.html
1.12 查看日志文件大小和查看指定關(guān)鍵詞
(1)wc -c app.log:參數(shù) -c 表示統(tǒng)計字符,因為一個字符是一個字節(jié),所以這樣得到字節(jié)數(shù)。
(2)du -sb app.log:參數(shù) -b 表示以B計數(shù)。
(3)du -sm app.log:參數(shù) -m 表示以M計數(shù)。
(4)du -sh app.log:參數(shù) -h 表示以K/M/G計數(shù),容易識別出文件大小 。
cd /data/applogs/nginx
ls -al
du -sh dp-nginx.access.log
查看這個文件中這個關(guān)鍵詞被調(diào)用地方:
cat dp-nginx.access.log | grep "queryAccountBalance"
查看這個文件中這個關(guān)鍵詞被調(diào)用的數(shù)量:
cat dp-nginx.access.log | grep "queryAccountBalance" | wc -l
查看這些文件中這個關(guān)鍵詞被調(diào)用的數(shù)量:
cat dp-nginx.access* | grep "queryAccountBalance" | wc -l
另:less app.log使用:
(1) cd /data/applogs/shopdiy-cpc-job/logs
(2) ls -al
(3) 分頁加載日志數(shù)據(jù):less app.log
(4) 此時,shift+GG 命令進入文件尾部,然后輸入 shfit+?,并且后面跟隨你想要搜索的關(guān)鍵詞,比如 ?NewCheckEntityStatusJob,回車,此時你想要看到的關(guān)鍵詞都會加亮顯示,供你查閱。
此時,N 是逐個向上翻閱;shift+N 是逐個向下翻閱。Q 是退出日志界面。
1.99 雜家筆記
-
less log.log:shift + GG 命令到文件尾部,然后輸入 ?加上你要搜索的關(guān)鍵字例如 ?1213 shift+n 關(guān)鍵字之間進行切換。
-
tac:則是由最后一行到第一行反向在螢?zāi)簧巷@示出來,與cat反過來。
-
history:所有的歷史記錄
-
history | grep XXX:歷史記錄中包含某些指令的記錄
-
history | more:分頁查看記錄
-
history -c:清空所有的歷史記錄
-
uname -a:查看內(nèi)核/操作系統(tǒng)/CPU信息
-
cat /proc/cpuinfo:查看CPU詳細信息
-
hostname:查看計算機名稱
-
env:查看系統(tǒng)環(huán)境變量
-
free -m:查看內(nèi)存使用量、查看交換區(qū)使用量
-
df -h:查看各分區(qū)使用量
-
du -sh 目錄名:查看指定目錄的大小
-
du -sh 文件名:查看指定文件的大小
-
grep MemTotal /proc/meminfo:查看計算機是多大內(nèi)存,常用的是8G=8388608kB
-
grep MemFree /proc/meminfo:查看計算機還剩余多少內(nèi)存
-
uptime:查看系統(tǒng)運行時間、用戶數(shù)量、負載
-
ifconfig:查看所有網(wǎng)絡(luò)接口的屬性
-
netstat -lntp:查看所有監(jiān)聽的端口號
-
ps -ef:查看所有進程
-
top:實時顯示進程狀態(tài)
-
last:查看用戶登錄這臺機器的日志
-
rpm -qa:查看系統(tǒng)上安裝的所有的軟件包
-
wc app.log:app.log文件的統(tǒng)計信息 3、92、598 app.log。app.log 文件的行數(shù)為3、單詞數(shù)92、字節(jié)數(shù)598。
正則表達式
grep:grep詳解
# grep默認是區(qū)分大小寫的,這里將匹配所有的小寫字母: $ echo '1234\nabcd' | grep '[a-z]'
# 將匹配所有的數(shù)字: $ echo '1234\nabcd' | grep '[0-9]'
# 將匹配所有的數(shù)字 :$ echo '1234\nabcd' | grep '[[:digit:]]'
# 將匹配所有的小寫字母 :$ echo '1234\nabcd' | grep '[[:lower:]]'
# 將匹配所有的大寫字母 :$ echo '1234\nabcd' | grep '[[:upper:]]'
# 將匹配所有的字母和數(shù)字,包括0-9,a-z,A-Z :$ echo '1234\nabcd' | grep '[[:alnum:]]'
# 將匹配所有的字母 :$ echo '1234\nabcd' | grep '[[:alpha:]]'
cat 1.txt | grep "[0-9]"
cat 1.txt | grep "[[:digit:]]"
cat 1.txt | grep "[[:alpha:]]"
cat 1.txt | grep "[[:upper:]]"
cat 1.txt | grep "[[:lower:]]"
cat 1.txt | grep "[[:alnum:]]"
grep簡介
grep:Gloabal Search Regular Expression and Print out the line,意為全局搜索正則表達式并打印文本行。所以
-
grep是一個強大的文本搜索工具。
-
grep與正則表達式聯(lián)系緊密。
之后也會從這兩個大的方面來詳細介紹。grep命令的基本語法如下:grep [options] pattern [file...]
-
options表示選項,具體的命令選項見下表。
-
pattern表示要匹配的模式(包括目標(biāo)字符串、變量或者正則表達式)。
-
file表示要查詢的文件名,可以是一個或者多個。pattern后面所有的字符串參數(shù)都會被理解為文件名。
選項 | 說明 |
---|---|
-c | 只打印匹配的文本行的行數(shù),不顯示匹配的內(nèi)容 |
-i | 匹配時忽略字母的大小寫 |
-h | 當(dāng)搜索多個文件時,不顯示匹配文件名前綴 |
-n | 列出所有的匹配的文本行,并顯示行號 |
-l | 只列出含有匹配的文本行的文件的文件名,而不顯示具體的匹配內(nèi)容 |
-s | 不顯示關(guān)于不存在或者無法讀取文件的錯誤信息 |
-v | 只顯示不匹配的文本行 |
-w | 匹配整個單詞 |
-x | 匹配整個文本行 |
-r | 遞歸搜索,搜索當(dāng)前目錄和子目錄 |
-q | 禁止輸出任何匹配結(jié)果,而是以退出碼的形式表示搜索是否成功,其中0表示找到了匹配的文本行 |
-b | 打印匹配的文本行到文件頭的偏移量,以字節(jié)為單位 |
-E | 支持擴展正則表達式 |
-P | 支持Perl正則表達式 |
-F | 不支持正則表達式,將模式按照字面意思匹配 |
grep簡單應(yīng)用場景
首先介紹一下我的實驗環(huán)境,在/Users/cmm/test4MingLing下建立3個簡單的txt文件:
#----------------------/Users/cmm/test4MingLing/text1.txt--------------------- hello world mailx uuen letitia #----------------------/Users/cmm/test4MingLing/text2.txt--------------------- hello world,this is for grep test #----------------------/Users/cmm/test4MingLing/text3.txt--------------------- hello world tyrone
(1)多文件查詢,file之間用空格隔開。
grep -i "hello world" text1.txt text2.txt
#輸出結(jié)果
text1.txt:hello world
text2.txt:hello world,this is for grep test
(2)多模式匹配,模式之間為“邏輯或”的關(guān)系,匹配任意一個即可返回。
#方法1:使用-e選項
grep -e "hello world" -e "mailx" -r /Users/cmm/test4MingLing
#方法2:使用正則表達式,-E
grep -E "hello world|mailx" -r /Users/cmm/test4MingLing
#方法3:使用正則表達式,egrep,同grep -E等效
egrep "hello world|mailx" -r /Users/cmm/test4MingLing --color
#輸出結(jié)果均相同:
/Users/cmm/test4MingLing/text1.txt:hello world
/Users/cmm/test4MingLing/text1.txt:mailx
/Users/cmm/test4MingLing/text2.txt:hello world,this is for grep test
/Users/cmm/test4MingLing/text3.txt:hello world
(3)多模式匹配,模式之間為“邏輯與”的關(guān)系,匹配所有模式。
基本思想大致相同:先匹配一個模式,然后grep下面一個模式,將前一次grep的結(jié)果作為要查詢文件路徑依次向后傳遞。
PS:注意:前一次grep的結(jié)果必須加上 -l 選項,否則會把匹配成功的文件內(nèi)容作為要查詢的文件名向后傳遞。
我希望做到的是能夠顯示出同時包含模式的文件,并且跟隨顯示匹配每個模式的內(nèi)容??上椰F(xiàn)在找到的方法都僅僅能夠顯示匹配最后一個模式的內(nèi)容。
#方法1:將其按一次的結(jié)果重定向到一個文件,然后 xargs grep 來依次讀取。
grep -i "hello world" -rl /Users/cmm/test4MingLing >> temp.txt
cat temp.txt |xargs grep -i "mailx"
#輸出結(jié)果
/Users/cmm/test4MingLing/text1.txt:mailx#方法2:直接利用管道
grep -i "hello world" -rl /Users/cmm/test4MingLing | xargs grep -i "mailx"
#輸出結(jié)果
/Users/cmm/test4MingLing/text1.txt:mailx
最后不得不感慨一下linux命令的組合方式,能像積木一樣堆積出無窮的組合,是時候展現(xiàn)真正的想象力了。。。
(4)查找指定用戶的進程
ps 是查看當(dāng)前進程的指令,e 表示所有進程,f 表示全格式。
ps -ef |grep "cmm"
ps -ef |grep "cmm"
#輸出結(jié)果 502 700 1 0 9:08上午 ?? 0:00.03 /Applications/Google Chrome.app/Contents/Versions/70.0.3538.110/Google Chrome Framework.framework/Helpers/crashpad_handler --monitor-self-annotation=ptype=crashpad-handler --database=/Users/cmm/Library/Application Support/Google/Chrome/Crashpad --metrics-dir=/Users/cmm/Library/Application Support/Google/Chrome --url=https://clients2.google.com/cr/report --annotation=channel= --annotation=plat=OS X --annotation=prod=Chrome_Mac --annotation=ver=70.0.3538.110 --handshake-fd=90 838 837 0 9:19上午 ttys001 0:00.02 login -pf cmm0 6133 837 0 2:28下午 ttys003 0:00.03 login -pf cmm502 7467 6134 0 3:54下午 ttys003 0:00.00 grep --color=auto --exclude-dir=.bzr --exclude-dir=CVS --exclude-dir=.git --exclude-dir=.hg --exclude-dir=.svn cmm