以前作過兩年的運維,用過不少命令,深切體會到某些linux命令熟練掌握後對效率提高有多大。舉個簡單的例子,在作了研發後常常會有跑一些數據,對於結果數據的處理,咱們的產品同窗通常都習慣於用excel作統計,把數據複製到excel裏,而後數據分列,排序………… 最後得出某些簡單的結論,我只須要cat, sort, uniq, awk, grep 這幾個命令揮手間完成相同的操做。
這裏我總結下我工做這幾年用過的一些命令,固然,這裏就不提那些vim cd ls mv cp
這種簡單的命令了,若是你都不會這些命令的話,建議你先學習下。這裏命令不少,我只簡單列出幾個我經常使用的參數。其實不少命令我也用的不是特別多,這篇文章我也只是但願能讓你們知道有這樣一個工具,但具體用若是想繼續深刻了解的話建議查看下手冊,部分比較命令我也列出了有些參考資料。html
查看系統進程線程,我通常都是用這個命令查看進程pid的,而後用pid作更深刻的排查。前端
ps -aux
查看全部進程
ps -T -p ${pid}
查看某個進程的線程linux
查看系統進程樹,他能夠把各個進程之間的關係用樹形結構標識出來。正則表達式
pstree
數據庫
查看系統進程線程運行狀況,包裹資源的使用狀況,系統負載等。個人用法是看下服務器上負載是否很高,而後看具體是哪一個進程,哪一個線程佔用cpu比較多。ubuntu
top
列出全部線程負載信息
top -H
列出全部線程的負載信息
top -H -p ${pid}
列出某個pid下全部線程的負載信息vim
查看內存及使用狀況服務器
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 '{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列
對標準內容作排序,
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裏的文件排序並去重,且輸出每行出現的次數
我都是用wc來數有多上行,其實wc不只僅能數多少行,還能夠數多少單詞,多少字符。
wc -l file
數下file裏有多少行
wc -w file
多少個單詞
wc -c file
多少個字節
wc -m file
多少個字符
http://www.runoob.com/linux/linux-comm-wc.html
linux大部分命令都是單進程的,這個命令可讓其餘命令多進程執行。
以前運維大量機器的時候,一般須要批量修改某個配置文件,都是在一臺機器上改好,而後用scp腳本分發到其餘機器上去的,大大提升效率。
scp aaa.txt test@192.168.1.3:/tmp/
把當前目錄下的aaa.txt文件經過192.168.1.3上的test帳號放到/tmp目錄下
scp test@192.168.1.3:/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的文件
定位某個具體文件的位置,locate命令要比find -name快得多,緣由是它不搜索具體目錄,而是搜索一個數據庫/var/lib/mlocate/mlocate.db,這個數據庫會經過一個cron定時更新,因此有可能新建的文件會檢索不到。
locate a.txt
定位a.txt的位置,若是系統中有多個a.txt,會所有顯示出來。
能夠看到樹狀目錄結構,
tree -L 2
只顯示兩層樹狀結構
查看網絡是否通
ping www.baidu.com
netcat,能夠用來看遠程某個端口是否打開,功能很強大,可是我用到的很少。
nc -z xindoo.me 443
檢測我服務器上的443端口是否開放(固然是開的)
查看和操做本機路由表
route
列出本地路由表
查看本機的網絡狀態,能夠看到端口占用狀況和網絡連接狀況。
netstat -antp
查看一個請求到目標服務器所通過的全部路由節點,通常用來排查網絡問題。
traceroute www.baidu.com
查看實時網絡io狀況
查看端口占用
查看域名的信息,以前作運維的時候,常常須要驗證某個域名解析改動是否生效,由於通常一個域名會-A到多個ip上,用ping命令只能看到一個ip,這個時候我就會用dig來看域名解析信息了。
dig www.baidu.com
發起一個http請求,我通常都是用這個命令來驗證服務是否能正常訪問的,它有獲取html源碼的功能。
curl www.baidu.com
curl -I www.baidu.com
獲取請求baidu.com的請求頭
下載網絡上一個文件,基本上就是有個命令行版的下載工具了。
wget xindoo.me/test.txt
把我服務器上test.txt文件下載到本地
不少時候服務器上沒有咱們想要的工具,能夠用這個命令安裝下,yum是Fedora和RedHat以及CentOS中的Shell前端軟件包管理器, apt是ubuntu平臺上的。
yum install curl
apt install curl
這個命令是用來查看其它命令手冊的,能夠看到具體某個命令的詳細做用,和具體參數。這個是個很重要的命令了,通常他會比各命令自帶的--help詳細不少。
man curl
查看curl命令的手冊
版權聲明:本文爲博主原創文章,轉載請註明出處。 博客地址:https://xindoo.blog.csdn.net/