原文:之前做過兩年的運維,用過很多命令,深切體會到某些linux命令熟練掌握後對效率提公升有多大。舉個簡單的例子,在做了研發後經常會有跑一些資料,對於結果資料的處理,我們的產品同學一般都習慣於用excel做統計,把資料複製到excel裡,然後資料分列,排序………… 最後得出某些簡單的結論,我只需要cat, sort, uniq, awk, grep 這幾個命令揮手間完成相同的操作。感謝博主的文章!
這裡我總結下我工作這幾年用過的一些命令,當然,這裡就不提那些vim cd ls mv cp
這種簡單的命令了,如果你都不會這些命令的話,建議你先學習下。這裡命令很多,我只簡單列出幾個我常用的引數。其實很多命令我也用的不是特別多,這篇文章我也只是希望能讓大家知道有這樣乙個工具,但具體用如果想繼續深入了解的話建議檢視下手冊,部分比較命令我也列出了有些參考資料。
檢視系統程序執行緒,我一般都是用這個命令檢視程序pid的,然後用pid做更深入的排查。
基本用法
ps -aux
檢視所有程序
ps -t -p $
檢視某個程序的執行緒
參考資料
10個重要的linux ps命令實戰
檢視系統程序樹,他可以把各個程序之間的關係用樹形結構標識出來。
基本用法
pstree
檢視系統程序執行緒運**況,包裹資源的使用情況,系統負載等。我的用法是看下伺服器上負載是否很高,然後看具體是哪個程序,哪個執行緒占用cpu比較多。
基本用法
top
列出所有執行緒負載資訊
top -h
列出所有執行緒的負載資訊
top -h -p $
列出某個pid下所有執行緒的負載資訊
檢視記憶體及使用情況
基本用法
free
我都是用這個命令檢視配置檔案,或者是日誌檔案,但是有點需要注意,cat命令會把整個檔案輸出到終端了,如果檔案內容非常多,建議使用grep進行過濾,或者直接用less或more命令。
基本用法
cat file.txt
檢視某個檔案的尾部,或者檢視標準出入的最末尾,預設值顯示10行,可以用-n
引數來指定輸出多少行。
基本用法
tail -n 100 file.txt
輸出最末尾的100行
tail -f file.txt
隨著檔案新增,持續輸出新增的內容,一般用來看實時日誌
和tail命令很相似,不過head是輸出頭部內容,個人感覺head遠沒有tail命令用的多。
基本用法
head -n 100 file.txt
輸出最開始的100行
也是用來檢視檔案,但more命令只載入一屏的內容,可以向下翻動,因為載入的內容少,所以比cat快多了。
基本用法
more file.txt
和more很像,但是可以上下翻動,感覺less和more只需要less就可以了,完全可以去掉more啊
基本用法
less file.txt
這個是我非常常用的乙個命令了,尤其是在問題排查的時候,需要用grep從大量的資料中篩選出一些我想要的。 grep也支援正規表示式匹配。
基本用法
grep "abc" file
從file中篩選出包含 abc的行。
開頭我也說過,這個命令是我最常用的命令之一,比如在檔案有多列的時候,我可以用awk輸出具體某幾列,或者做一些簡單的統計 求和,求平均值啊,再或者做一下簡單的資料格式化。
基本用法
cat data | awk ''
輸出第1 3 5列,注意下標是從1開始
cat data | awk ' end '
對第一列求和
cat data | awk -f'\t' ''
把每行資料按tab分列,並輸出1 3列
參考資料
阮一峰 awk介紹
對標準內容做排序,
基本用法
cat file|sort
把file裡的資料排序,注意是按字典序排的,如果想按數值排,需要能夠加-n引數
cat file|sort -k2 -n -r
按第二列 數值 倒序 排序,-k指定第幾列,-r是翻轉reverse的意思
對排序好的內容去重,注意它只是把相鄰且相同的去重,所以如果想要全域性去重,需要先用sort排序。
基本用法
cat file|sort|uniq
把file裡的檔案排序並去重
cat file|sort|uniq -c
把file裡的檔案排序並去重,且輸出每行出現的次數
linux大部分命令都是單程序的,這個命令可以讓其他命令多程序執行。
15分鐘神器gnu parallel 入門觀止
之前運維大量機器的時候,通常需要批量修改某個配置檔案,都是在一台機器上改好,然後用scp指令碼分發到其他機器上去的,大大提高效率。
scp aaa.txt [email protected]:/tmp/
把當前目錄下的aaa.txt檔案通過192.168.1.3上的test賬號放到/tmp目錄下
scp [email protected]:/tmp/aaa.txt .
和上一條相反
檢視目錄大小
基本用法
du -h --max-depth=1
輸出最深1層的目錄,然後檔案大小用人類可讀的方式,比如1k 234m 2g
檢視磁碟大小和占用情況
基本用法
df -h
檢視各個分割槽的大小和使用情況
檢視磁碟的io狀態
可以類似於top目錄一樣,實時顯示各個程序的io狀態。
查詢檔案,查詢條件可以是檔名,檔案日期,檔案大小,很強大。 我們之前伺服器上有個磁碟滿就強制刪除伺服器某個目錄下大於1g,且時間大於2天,且檔名是*.log的檔案,就是用find加xargs命令做的
基本用法
find /home/test -iname "test.txt
在/home/test/下找檔名為test.txt的檔案,也支援萬用字元
find /home/test -isize +100m
查詢/home/test下大於100m的檔案
參考資料
wikipedia unix find
定位某個具體檔案的位置,locate命令要比find -name快得多,原因是它不搜尋具體目錄,而是搜尋乙個資料庫/var/lib/mlocate/mlocate.db,這個資料庫會通過乙個cron定時更新,所以有可能新建的檔案會檢索不到。
基本用法
locate a.txt
定位a.txt的位置,如果系統中有多個a.txt,會全部顯示出來。
可以看到樹狀目錄結構,
基本用法
tree -l 2
只顯示兩層樹狀結構
檢視網路是否通
基本用法
netcat,可以用來看遠端某個埠是否開啟,功能很強大,但是我用到的不多。
基本用法
nc -z xindoo.me 443
檢測我伺服器上的443埠是否開放(當然是開的)
參考資料
linux nc命令介紹
檢視和操作本機路由表
基本用法
route
列出本地路由表
參考資料
檢視本機的網路狀態,可以看到埠占用情況和網路鏈結情況。
基本用法
netstat -antp
檢視乙個請求到目標伺服器所經過的所有路由節點,一般用來排查網路問題。
基本用法
參考資料
檢視實時網路io情況
檢視埠占用
檢視網域名稱的資訊,之前做運維的時候,經常需要驗證某個網域名稱解析改動是否生效,因為一般乙個網域名稱會-a到多個ip上,用ping命令只能看到乙個ip,這個時候我就會用dig來看網域名稱解析資訊了。
基本用法
參考資料
dig 命令介紹
發起乙個http請求,我一般都是用這個命令來驗證服務是否能正常訪問的,它有獲取html原始碼的功能。
基本用法
curl -i www.baidu.com
獲取請求baidu.com的請求頭
參考資料
curl的用法(英文)
基本用法很多時候伺服器上沒有我們想要的工具,可以用這個命令安裝下,yum是fedora和redhat以及centos中的shell前端軟體包管理器, apt是ubuntu平台上的。
基本用法
yum install curl
apt install curl
這個命令是用來檢視其它命令手冊的,可以看到具體某個命令的詳細作用,和具體引數。這個是個很重要的命令了,一般他會比各命令自帶的–help詳細很多。
基本用法
man curl
檢視curl命令的手冊
運維linux命令
1 linux啟動過程 開啟電源 bios開機自檢 引導程式lilo或grub 核心的引導 kernel boot 執行init rc.sysinit rc mingetty 建立終端 shell 2 網絡卡繫結多ip ifconfig eth0 1 192.168.1.99 netmask 255...
Linux運維命令
12 date date u date y m d h m s 格式化 date f date s 時間戳 date d 時間戳 格式 例 date d 1510111518 y m d h m s clock 當前的硬體時間檢視 clock s 把硬體的時間讀出來覆蓋到系統時間 clock w 把...
linux運維命令
1 linux啟動過程 開啟電源 bios開機自檢 引導程式lilo或grub 核心的引導 kernel boot 執行init rc.sysinit rc mingetty 建立終端 shell top 然後按shift p,按照程序處理器佔用率排序 top 24 檢視記憶體使用情況的命令 用fr...