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