您好,登錄后才能下訂單哦!
這篇文章給大家分享的是有關(guān)Linux下容易被忽視的命令有哪些的內(nèi)容。小編覺得挺實(shí)用的,因此分享給大家做個(gè)參考,一起跟隨小編過來看看吧。
一、前言
工作中發(fā)現(xiàn)很多同學(xué)對(duì)于Linux下的命令不太熟悉,尤其是一些功能強(qiáng)大的工具,使用者很少。正所謂工欲善其事,必先利其器。
二、命令
1.strace
strace用于跟蹤程序執(zhí)行過程中的系統(tǒng)調(diào)用,如跟蹤test進(jìn)程,只需要:
strace -p [test_pid] 或直接strace ./test
但如果需要:
跟蹤進(jìn)程內(nèi)的線程: -f 選項(xiàng)
統(tǒng)計(jì)時(shí)間段內(nèi)的各個(gè)系統(tǒng)調(diào)用次數(shù)分布:-C 選項(xiàng)
過濾某些系統(tǒng)調(diào)用:-e trace選項(xiàng),如-e trace=network只顯示網(wǎng)絡(luò)相關(guān)的系統(tǒng)調(diào)用,-e trace=open,close,read,write只顯示這4個(gè)系統(tǒng)調(diào)用,常用于只獲取某些特定的系統(tǒng)調(diào)用
顯示系統(tǒng)調(diào)用的時(shí)間:-ttt選項(xiàng)
詳細(xì)顯示每行的數(shù)據(jù),而不是... -s選項(xiàng)加大字符串的長度限制如-s 1024
比如,跟蹤pid為12345的進(jìn)程中所有線程的read和write系統(tǒng)調(diào)用,輸出字符串的長度限制為1024:
strace -s 1024 -f -e trace=read,write -p 12345
2.tcpdump
tcpdump是Linux上的抓包工具,如抓取eth0網(wǎng)卡上的包,使用:
sudo tcpdump -i eth0
但如果需要:
文本形式顯示抓包數(shù)據(jù):-A選項(xiàng)
顯示16進(jìn)制的報(bào)文數(shù)據(jù):-X選項(xiàng)
輸出結(jié)果到文件中 -w選項(xiàng),如-w 1.cap將報(bào)文輸出到1.cap文件,此文件可用wireshark查看
過濾主機(jī)和端口號(hào) 如host 11.11.11.11 and port 12345過濾主機(jī)ip為11.11.11.11,端口號(hào)為12345的tcp報(bào)文
比如,抓取80端口的HTTP報(bào)文,以文本形式展示:
sudo tcpdump -i any port 80 -A
這樣你就可以清楚看到GET、POST請(qǐng)求的內(nèi)容了。
3.nc
nc可以在Linux上開啟TCP Server、TCP Client、UDP Server、UDP Client。
如在端口號(hào)12345上開啟TCP Server和Client模擬TCP通信:
Server: nc -l 127.0.0.1 12345 Client: nc 127.0.0.1 12345
在端口號(hào)12345上開啟UDP Server和Client模擬TCP通信:
Server: nc -ul 127.0.0.1 12345 Client: nc -u 127.0.0.1 12345
Unix Socket通信示例:
Server: nc -Ul /tmp/1.sock Client: nc -U /tmp/1.sock
4.curl
curl用于模擬HTTP請(qǐng)求,在終端模擬請(qǐng)求時(shí)常用,如最基本的用法:
curl http://www.baidu.com
但如果需要:
指定HTTP首部 -H選項(xiàng),如-H "Host: xx.xx.xx.xx"
指定請(qǐng)求方法 -X選項(xiàng),如-X POST,-d指定post數(shù)據(jù)
顯示請(qǐng)求詳細(xì)信息,包括請(qǐng)求和響應(yīng)首部 -v選項(xiàng)
重定向請(qǐng)求自動(dòng)追蹤 -L選項(xiàng)
常見的curl請(qǐng)求選項(xiàng)-sSfL表示: 不顯示進(jìn)度信息,顯示錯(cuò)誤信息,發(fā)生HTTP錯(cuò)誤時(shí)失敗,自動(dòng)跟蹤重定向
5.find
find可用于查找文件,比如:
find . -name "1.txt"
表示在當(dāng)前目錄及其子目錄下查找文件名為1.txt的文件,結(jié)合xargs使用功能更加強(qiáng)大,如:
find . -type f|xargs grep 'abcd'
表示在當(dāng)前目錄及其子目錄下查找包含abcd字符串的文件行,經(jīng)常用于搜索代碼。
6.lsof
lsof命令主要用法包括:
sudo lsof -i :[port] 查看端口占用進(jìn)程信息,經(jīng)常用于端口綁定失敗時(shí)確認(rèn)端口被哪個(gè)進(jìn)程占用
sudo lsof -p [pid] 查看進(jìn)程打開了哪些文件或套接字
7.ss
Linux上的ss命令可以用于替換netstat,ss直接讀取解析/proc/net下的統(tǒng)計(jì)信息,相比netstat遍歷/proc下的每個(gè)PID目錄,速度快很多。
常見示例:
ss -t -a 顯示所有的TCP Sockets
ss -u -a 顯示所有的UDP Sockets
ss -x src /tmp/a.sock 顯示連接到/tmp/a.sock的進(jìn)程
ss -o state [state TCP-STATE] 如ss -o state established顯示所有建立的連接
8.awk/sed
awk和sed在文本處理方面十分強(qiáng)大,其中,awk按列進(jìn)行處理,sed按行進(jìn)行處理。
如采用冒號(hào)分隔數(shù)據(jù),輸出***列數(shù)據(jù)($0代表行全部列數(shù)據(jù),$1代表***列,$2代表第二列...)
awk -F ":" '{print $1}'
在awk的結(jié)果基礎(chǔ)上,結(jié)合sort、uniq和head等命令可以輕松完成頻率統(tǒng)計(jì)等功能
查看文件的第100行到第200行: sed -n '100,200p' log.txt 替換字符串中的特定子串 echo "int charset=gb2312 float"|sed "s/charset=gb2312/charset=UTF-8/g" 替換test文件每行匹配ab的部分為cd sed -i 's/ab/cd/g' test
9.screen
當(dāng)采用telnet或SSH登錄遠(yuǎn)程主機(jī)時(shí),因?yàn)榫W(wǎng)絡(luò)中斷的原因會(huì)導(dǎo)致session終止,此時(shí)會(huì)觸發(fā)SIGHUP信號(hào)使得任務(wù)終止,因此我們常常會(huì)看到有些任務(wù)采用nohup的方式運(yùn)行,避免任務(wù)被打斷。screen通過多終端的方式,巧妙地解決了這個(gè)問題。 示例:
screen -S test 開啟一個(gè)screen,這時(shí)擁有一個(gè)終端,所有執(zhí)行的程序都會(huì)在ps中展示
Ctrl+a鍵+d鍵 退出當(dāng)前screen,切到上級(jí)窗口
screen -ls 查看所有screen列表,如
13333.test (Detached) 14039.test4 (Detached) 表示兩個(gè)screen,screen標(biāo)識(shí)為13333.test和14039.test4
screen -r [pid.]tty.host 進(jìn)入選定的screen,如screen -r 13333.test
exit 關(guān)閉當(dāng)前screen
感謝各位的閱讀!關(guān)于“Linux下容易被忽視的命令有哪些”這篇文章就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,讓大家可以學(xué)到更多知識(shí),如果覺得文章不錯(cuò),可以把它分享出去讓更多的人看到吧!
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請(qǐng)聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。