Linux上,最經常使用的一批命令解析(10年精選)

更多精彩文章。java

《微服務不是所有,只是特定領域的子集》mysql

《「分庫分表" ?選型和流程要慎重,不然會失控》linux

這麼多監控組件,總有一款適合你nginx

《使用Netty,咱們到底在開發些什麼?》程序員

《這多是最中肯的Redis規範了》sql

《程序員畫像,十年沉浮》vim

最有用系列:centos

《Linux生產環境上,最經常使用的一套「vim「技巧》bash

《Linux生產環境上,最經常使用的一套「Sed「技巧》服務器

《Linux生產環境上,最經常使用的一套「AWK「技巧》


Linux這麼多命令,一般會讓初學者望而生畏。下面是我結合平常工做,以及在公司的內部培訓中,針對對Linux不是很熟悉的同窗,精選的一批必需要搞懂的命令集合。
任何一個命令其實都是能夠深刻的,好比tail -ftail -F的區別。咱們不去關心,只使用最多見的示例來講明。本文不會教你具體的用法,那是搶man命令的飯碗。這只是個引導篇,力求簡潔。

學習方式:多敲多打,用條件反射替代大腦記憶--若是你未來或者如今要用它來吃飯的話。 其中,也有一些難啃的骨頭,關注小姐姐味道微信公衆號,咱們一塊兒用鋒利的牙齒,來把它嚼碎。

內容:
✔ 目錄操做
✔ 文本處理
✔ 壓縮
✔ 平常運維
✔ 系統狀態概覽
✔ 工做經常使用

目錄操做

工做中,最常打交道的就是對目錄和文件的操做。linux提供了相應的命令去操做他,並將這些命令抽象、縮寫。

基本操做

多是這些命令太經常使用了,多打一個字符都是罪過。因此它們都很短,不用阿拉伯數字,一個剪刀手就能數過來。

看命令。
mkdir 建立目錄 make dir cp 拷貝文件 copy mv 移動文件 move rm 刪除文件 remove

例子:

# 建立目錄和父目錄a,b,c,d
mkdir -p a/b/c/d

# 拷貝文件夾a到/tmp目錄
cp -rvf a/ /tmp/

# 移動文件a到/tmp目錄,並重命名爲b
mv -vf a /tmp/b

# 刪除tmp目錄的全部文件
rm -rvf /tmp/
複製代碼

漫遊

linux上是黑漆漆的命令行,依然要面臨人生三問:我是誰?我在哪?我要去何方?

ls 命令可以看到當前目錄的全部內容。ls -l可以看到更多信息,判斷你是誰。
pwd 命令可以看到當前終端所在的目錄。告訴你你在哪。
cd 假如你去錯了地方,cd命令可以切換到對的目錄。
find find命令經過篩選一些條件,可以找到已經被遺忘的文件。

至於要去何方,可能就是主宰者的意志了。

文本處理

這是是很是很是加分的技能。get到以後,也能節省更多時間來研究面向對象。小姐姐味道已經輸出了「最經常使用的vim、sed、awk技巧系列」。下面附上連接。
《Linux生產環境上,最經常使用的一套「vim「技巧》
《Linux生產環境上,最經常使用的一套「Sed「技巧》
《Linux生產環境上,最經常使用的一套「AWK「技巧》

查看文件

cat
最經常使用的就是cat命令了,注意,若是文件很大的話,cat命令的輸出結果會瘋狂在終端上輸出,能夠屢次按ctrl+c終止。

# 查看文件大小
du -h file

# 查看文件內容
cat file
複製代碼

less
既然cat有這個問題,針對比較大的文件,咱們就可使用less命令打開某個文件。 相似vim,less能夠在輸入/後進入查找模式,而後按n(N)向下(上)查找。
有許多操做,都和vim相似,你能夠類比看下。

tail
大多數作服務端開發的同窗,都瞭解這麼命令。好比,查看nginx的滾動日誌。

tail -f access.log
複製代碼

tail命令能夠靜態的查看某個文件的最後n行,與之對應的,head命令查看文件頭n行。但head沒有滾動功能,就像尾巴是往外長的,不會反着往裏長。

tail -n100 access.log
head -n100 access.log
複製代碼

統計

sort和uniq常常配對使用。 sort可使用-t指定分隔符,使用-k指定要排序的列。

下面這個命令輸出nginx日誌的ip和每一個ip的pv,pv最高的前10

# 2019-06-26T10:01:57+08:00|nginx001.server.ops.pro.dc|100.116.222.80|10.31.150.232:41021|0.014|0.011|0.000|200|200|273|-|/visit|sign=91CD1988CE8B313B8A0454A4BBE930DF|-|-|http|POST|112.4.238.213

awk -F"|" '{print $3}' access.log | sort | uniq -c | sort -nk1 -r | head -n10
複製代碼

其餘

grep
grep用來對內容進行過濾,帶上--color參數,能夠在支持的終端能夠打印彩色,參數n則輸出具體的行數,用來快速定位。
好比:查看nginx日誌中的POST請求。

grep -rn --color POST access.log
複製代碼

推薦每次都使用這樣的參數。

若是我想要看某個異常先後相關的內容,就可使用ABC參數。它們是幾個單詞的縮寫,常常被使用。 A after 內容後n行 B before 內容前n行 C count? 內容先後n行
就像是這樣:

grep -rn --color Exception -A10 -B2   error.log
複製代碼

diff

diff命令用來比較兩個文件是否的差別。固然,在ide中都提供了這個功能,diff只是命令行下的原始折衷。對了,diff和patch仍是一些平臺源碼的打補丁方式,你要是不用,就pass吧。

壓縮

爲了減少傳輸文件的大小,通常都開啓壓縮。linux下常見的壓縮文件有tar、bzip二、zip、rar等,7z這種用的相對較少。

.tar 使用tar命令壓縮或解壓
.bz2 使用bzip2命令操做
.gz 使用gzip命令操做
.zip 使用unzip命令解壓
.rar 使用unrar命令解壓

最經常使用的就是.tar.gz文件格式了。實際上是通過了tar打包後,再使用gzip壓縮。

建立壓縮文件

tar cvfz  archive.tar.gz dir/
複製代碼

解壓

tar xvfz. archive.tar.gz
複製代碼

快去弄清楚它們的關係吧。

平常運維

開機是按一下啓動按鈕,關機總不至因而長按啓動按鈕吧。對了,是shutdown命令,不過通常也沒權限-.-!。passwd命令能夠用來修改密碼,這個權限仍是能夠有的。

mount
mount命令能夠掛在一些外接設備,好比u盤,好比iso,好比剛申請的ssd。能夠放心的看小電影了。

mount /dev/sdb1 /xiaodianying
複製代碼

chown
chown 用來改變文件的所屬用戶和所屬組。
chmod 用來改變文件的訪問權限。

這兩個命令,都和linux的文件權限777有關。
示例:

# 毀滅性的命令
chmod 000 -R /

# 修改a目錄的用戶和組爲 xjj
chown -R xjj:xjj a

# 給a.sh文件增長執行權限(這個太經常使用了)
chmod a+x a.sh
複製代碼

yum
假定你用的是centos,則包管理工具就是yum。若是你的系統沒有wget命令,就可使用以下命令進行安裝。

yum install wget -y
複製代碼

systemctl
固然,centos管理後臺服務也有一些套路。service命令就是。systemctl兼容了service命令,咱們看一下怎麼重啓mysql服務。 推薦用下面這個。

service mysql restart
systemctl restart  mysqld 
複製代碼

對於普通的進程,就要使用kill命令進行更加詳細的控制了。kill命令有不少信號,若是你在用kill -9,你必定想要了解kill -15以及kill -3的區別和用途。

su
su用來切換用戶。好比你如今是root,想要用xjj用戶作一些勾當,就可使用su切換。

su xjj
su - xjj
複製代碼

-可讓你乾淨純潔的降臨另外一個帳號,不出意外,推薦。

系統狀態概覽

登錄一臺linux機器,有些命令可以幫助你快速找到問題。這些命令涵蓋內存、cpu、網絡、io、磁盤等。如須要更多瞭解,參考五件套。比較高階一些。
Linux之《荒島餘生》(一)準備篇
Linux之《荒島餘生》(二)CPU篇
Linux之《荒島餘生》(三)內存篇
Linux之《荒島餘生》(四)I/O篇
Linux之《荒島餘生》(五)網絡篇

uname uname命令能夠輸出當前的內核信息,讓你瞭解到用的是什麼機器。

uname -a
複製代碼

ps
ps命令可以看到進程/線程狀態。和top有些內容重疊,經常使用。

# 找到java進程
ps -ef|grep java
複製代碼

top 系統狀態一覽,主要查看。cpu load負載、cpu佔用率。使用內存或者cpu最高的一些進程。下面這個命令能夠查看某個進程中的線程狀態。

top -H -p pid
複製代碼

free
top也能看內存,但不友好,free是專門用來查看內存的。包括物理內存和虛擬內存swap。

df
df命令用來查看系統中磁盤的使用量,用來查看磁盤是否已經到達上限。參數h能夠以友好的方式進行展現。

df -h
複製代碼

ifconfig
查看ip地址,不囉嗦,替代品是ip addr命令。

ping
至於網絡通不通,可使用ping來探測。(不包括那些禁ping的網站)

netstat 雖然ss命令能夠替代netstat了,但現實中netstat仍然用的更普遍一些。好比,查看當前的全部tcp鏈接。

netstat -ant
複製代碼

此命令,在找一些本地起了什麼端口之類的問題上,做用很大。

工做經常使用

還有一些在工做中常常會用到的命令,它們的出現頻率是很是高的 ,都是些熟面孔。

export
不少安裝了jdk的同窗找不到java命令,export就能夠幫你辦到它。export用來設定一些環境變量,env命令能看到當前系統中全部的環境變量。好比,下面設置的就是jdk的。

export PATH=$PATH:/home/xjj/jdk/bin
複製代碼

有時候,你想要知道所執行命令的具體路徑。那麼就可使用whereis命令,我是假定了你裝了多個版本的jdk。

crontab
這就是linux本地的job工具。不是分佈式的,你要不是運維,就不要用了。好比,每10分鐘提醒喝茶上廁所。

*/10 * * * * /home/xjj/wc10min
複製代碼

date date命令用來輸出當前的系統時間,可使用-s參數指定輸出格式。但設置時間涉及到設置硬件,因此有另一個命令叫作hwclock

xargs xargs讀取輸入源,而後逐行處理。這個命令很是有用。舉個栗子,刪除目錄中的全部class文件。

find . | grep .class$ | xargs rm -rvf

#把全部的rmvb文件拷貝到目錄
ls *.rmvb | xargs -n1 -i cp {} /mount/xiaodianying
複製代碼

網絡

linux是一個多做業的網絡操做系統,因此網絡命令有不少不少。工做中,最常和這些打交道。

ssh
這個,就不囉嗦了。你必定但願瞭解ssh隧道是什麼。你要是想要詳細的輸出過程,記得加參數-v

scp
scp用來進行文件傳輸。也能夠用來傳輸目錄。也有更高級的sftp命令。

scp a.txt 192.168.0.12:/tmp/a.txt
scp -r a_dir 192.168.0.12:/tmp/
複製代碼

wget
你想要在服務器上安裝jdk,不會先在本地下載下來,而後使用scp傳到服務器上吧(有時候不得不這樣)。wget命令可讓你直接使用命令行下載文件,並支持斷點續傳。

wget -c http://oracle.fuck/jdk2019.bin
複製代碼

mysql
mysql應用普遍,並非每一個人都有條件用上navicat的。你須要瞭解mysql的鏈接方式和基本的操做,在異常狀況下才能遊刃有餘。

mysql -u root -p -h 192.168.1.2
複製代碼

End

不要以爲複雜,命令是有限的,但激情無限;都會也不要驕傲,一個vim就夠折騰一生。捷徑就是總結,深刻只有探索。白馬過隙,終會行雲流水,手到擒來。
物是人非,年華易老。惟有時光,不會辜負。

相關文章
相關標籤/搜索