之前做過兩年的運維,用過很多命令,深切體會到某些linux命令熟練掌握後對效率提升有多大。舉個簡單的例子,在做了研發後經常會有跑一些數據,對於結果數據的處理,我們的產品同學一般都習慣於用excel做統計,把數據複製到excel里,然後數據分列,排序………… 最後得出某些簡單的結論,我只需要cat, ...
之前做過兩年的運維,用過很多命令,深切體會到某些linux命令熟練掌握後對效率提升有多大。舉個簡單的例子,在做了研發後經常會有跑一些數據,對於結果數據的處理,我們的產品同學一般都習慣於用excel做統計,把數據複製到excel里,然後數據分列,排序………… 最後得出某些簡單的結論,我只需要cat, sort, uniq, awk, grep 這幾個命令揮手間完成相同的操作。
這裡我總結下我工作這幾年用過的一些命令,當然,這裡就不提那些vim cd ls mv cp
這種簡單的命令了,如果你都不會這些命令的話,建議你先學習下。這裡命令很多,我只簡單列出幾個我常用的參數。其實很多命令我也用的不是特別多,這篇文章我也只是希望能讓大家知道有這樣一個工具,但具體用如果想繼續深入瞭解的話建議查看下手冊,部分比較命令我也列出了有些參考資料。
伺服器運行狀態相關命令
ps
查看系統進程線程,我一般都是用這個命令查看進程pid的,然後用pid做更深入的排查。
基本用法
ps -aux
查看所有進程
ps -T -p ${pid}
查看某個進程的線程
參考資料
pstree
查看系統進程樹,他可以把各個進程之間的關係用樹形結構標識出來。
基本用法
pstree
top
查看系統進程線程運行情況,包裹資源的使用情況,系統負載等。我的用法是看下伺服器上負載是否很高,然後看具體是哪個進程,哪個線程占用cpu比較多。
基本用法
top
列出所有線程負載信息
top -H
列出所有線程的負載信息
top -H -p ${pid}
列出某個pid下所有線程的負載信息
free
查看記憶體及使用情況
基本用法
free
文件操作相關
cat
我都是用這個命令查看配置文件,或者是日誌文件,但是有點需要註意,cat命令會把整個文件輸出到終端了,如果文件內容非常多,建議使用grep進行過濾,或者直接用less或more命令。
基本用法
cat file.txt
tail
查看某個文件的尾部,或者查看標準出入的最末尾,預設值顯示10行,可以用-n
參數來指定輸出多少行。
基本用法
tail -n 100 file.txt
輸出最末尾的100行
tail -f file.txt
隨著文件新增,持續輸出新增的內容,一般用來看實時日誌
head
和tail命令很相似,不過head是輸出頭部內容,個人感覺head遠沒有tail命令用的多。
基本用法
head -n 100 file.txt
輸出最開始的100行
more
也是用來查看文件,但more命令只載入一屏的內容,可以向下翻動,因為載入的內容少,所以比cat快多了。
基本用法
more file.txt
less
和more很像,但是可以上下翻動,感覺less和more只需要less就可以了,完全可以去掉more啊
基本用法
less file.txt
grep
這個是我非常常用的一個命令了,尤其是在問題排查的時候,需要用grep從大量的數據中篩選出一些我想要的。 grep也支持正則表達式匹配。
基本用法
grep "abc" file
從file中篩選出包含 abc的行。
awk
開頭我也說過,這個命令是我最常用的命令之一,比如在文件有多列的時候,我可以用awk輸出具體某幾列,或者做一些簡單的統計 求和,求平均值啊,再或者做一下簡單的數據格式化。
基本用法
cat data | awk '{print $1,$3,$5}'
輸出第1 3 5列,註意下標是從1開始
cat data | awk '{ sum += $1 } END { print sum }'
對第一列求和
cat data | awk -F'\t' '{print $1,$3}'
把每行數據按tab分列,並輸出1 3列
參考資料
sort
對標準內容做排序,
基本用法
cat file|sort
把file里的數據排序,註意是按字典序排的,如果想按數值排,需要能夠加-n參數
cat file|sort -k2 -n -r
按第二列 數值 倒序 排序,-k指定第幾列,-r是翻轉reverse的意思
uniq
對排序好的內容去重,註意它只是把相鄰且相同的去重,所以如果想要全局去重,需要先用sort排序。
基本用法
cat file|sort|uniq
把file里的文件排序並去重
cat file|sort|uniq -c
把file里的文件排序並去重,且輸出每行出現的次數
wc
我都是用wc來數有多上行,其實wc不僅僅能數多少行,還可以數多少單詞,多少字元。
基本用法
wc -l file
數下file里有多少行
wc -w file
多少個單詞
wc -c file
多少個位元組
wc -m file
多少個字元
參考資料
http://www.runoob.com/linux/linux-comm-wc.html
sed
parallel
linux大部分命令都是單進程的,這個命令可以讓其他命令多進程執行。
參考資料
scp
之前運維大量機器的時候,通常需要批量修改某個配置文件,都是在一臺機器上改好,然後用scp腳本分發到其他機器上去的,大大提高效率。
基本用法
scp aaa.txt [email protected]:/tmp/
把當前目錄下的aaa.txt文件通過192.168.1.3上的test賬號放到/tmp目錄下
scp [email protected]:/tmp/aaa.txt .
和上一條相反
磁碟及IO
du
查看目錄大小
基本用法
du -h --max-depth=1
輸出最深1層的目錄,然後文件大小用人類可讀的方式,比如1K 234M 2G
df
查看磁碟大小和占用情況
基本用法
df -h
查看各個分區的大小和使用情況
iostat
查看磁碟的io狀態
iotop
可以類似於top目錄一樣,實時顯示各個進程的io狀態。
find
查找文件,查找條件可以是文件名,文件日期,文件大小,很強大。 我們之前伺服器上有個磁碟滿就強制刪除伺服器某個目錄下大於1g,且時間大於2天,且文件名是*.log的文件,就是用find加xargs命令做的
基本用法
find /home/test -iname "test.txt
在/home/test/下找文件名為test.txt的文件,也支持通配符
find /home/test -isize +100M
查找/home/test下大於100M的文件
參考資料
locate
定位某個具體文件的位置,locate命令要比find -name快得多,原因是它不搜索具體目錄,而是搜索一個資料庫/var/lib/mlocate/mlocate.db,這個資料庫會通過一個cron定時更新,所以有可能新建的文件會檢索不到。
基本用法
locate a.txt
定位a.txt的位置,如果系統中有多個a.txt,會全部顯示出來。
tree
可以看到樹狀目錄結構,
基本用法
tree -L 2
只顯示兩層樹狀結構
網路
ping
查看網路是否通
基本用法
ping www.baidu.com
nc
netcat,可以用來看遠程某個埠是否打開,功能很強大,但是我用到的不多。
基本用法
nc -z xindoo.me 443
檢測我伺服器上的443埠是否開放(當然是開的)
參考資料
route
查看和操作本機路由表
基本用法
route
列出本地路由表
參考資料
netstat
查看本機的網路狀態,可以看到埠占用情況和網路鏈接情況。
基本用法
netstat -antp
traceroute
查看一個請求到目標伺服器所經過的所有路由節點,一般用來排查網路問題。
基本用法
traceroute www.baidu.com
參考資料
iftop
查看實時網路io情況
lsof
查看埠占用
dig
查看功能變數名稱的信息,之前做運維的時候,經常需要驗證某個功能變數名稱解析改動是否生效,因為一般一個功能變數名稱會-A到多個ip上,用ping命令只能看到一個ip,這個時候我就會用dig來看功能變數名稱解析信息了。
基本用法
dig www.baidu.com
參考資料
curl
發起一個http請求,我一般都是用這個命令來驗證服務是否能正常訪問的,它有獲取html源碼的功能。
基本用法
curl www.baidu.com
curl -I www.baidu.com
獲取請求baidu.com的請求頭
參考資料
wget
下載網路上一個文件,基本上就是有個命令行版的下載工具了。
基本用法
wget xindoo.me/test.txt
把我伺服器上test.txt文件下載到本地
其他
yum|apt install
很多時候伺服器上沒有我們想要的工具,可以用這個命令安裝下,yum是Fedora和RedHat以及CentOS中的Shell前端軟體包管理器, apt是ubuntu平臺上的。
基本用法
yum install curl
apt install curl
man
這個命令是用來查看其它命令手冊的,可以看到具體某個命令的詳細作用,和具體參數。這個是個很重要的命令了,一般他會比各命令自帶的--help詳細很多。
基本用法
man curl
查看curl命令的手冊
版權聲明:本文為博主原創文章,轉載請註明出處。 博客地址:https://xindoo.blog.csdn.net/