国产秋霞理论久久久电影-婷婷色九月综合激情丁香-欧美在线观看乱妇视频-精品国avA久久久久久久-国产乱码精品一区二区三区亚洲人-欧美熟妇一区二区三区蜜桃视频

看完這篇你一定能掌握Linux(非廣告)

共 20265字,需瀏覽 41分鐘

 ·

2021-02-24 12:39


有很多同學微信問我,Linux命令這么多,該怎么從入門到精通?其實,這個事情非常的simple,這篇文章將會帶你飛。文章非常的長,要挑一個陽光明媚的sunshine weekend,耐心去搞定。

本文將由一個Linux命令概覽開始,說明Linux命令的方方面面。如果你讀完這部分還是一頭霧水,那么就證明需要按照下面的小白教程去學習了,內(nèi)容涵蓋了:如何挑選Linux發(fā)行版、如何安裝Linux系統(tǒng),按照主題學習Linux系統(tǒng)的命令等。

入門后的 **學習方式:多敲多打,用條件反射替代大腦記憶--如果你將來或者現(xiàn)在要用它來吃飯的話。**其中,也有一些難啃的骨頭,關注小姐姐味道微信公眾號,我們一起用鋒利的牙齒,來把它嚼碎。

1. Linux命令概覽

這部分是給稍微有點Linux經(jīng)驗的同學準備的,如果你是初學者,請?zhí)^此part直接進入第二部分。

1.1目錄操作

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

1.1.1 基本操作

可能是這些命令太常用了,多打一個字符都是罪過。所以它們都很短,不用阿拉伯數(shù)字,一個剪刀手就能數(shù)過來。

看命令。
mkdir?創(chuàng)建目錄 ?make dircp?拷貝文件 ?copymv?移動文件 ? moverm??刪除文件 remove

例子:

#?創(chuàng)建目錄和父目錄a,b,c,d
mkdir?-p?a/b/c/d

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

#?移動文件a到/tmp目錄,并重命名為b
mv?-vf?a?/tmp/b

#?刪除機器上的所有文件
rm?-rvf?/

1.1.2 漫游

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

ls??命令能夠看到當前目錄的所有內(nèi)容。ls -l能夠看到更多信息,判斷你是誰。
pwd??命令能夠看到當前終端所在的目錄。告訴你你在哪。
cd??假如你去錯了地方,cd命令能夠切換到對的目錄。
find? find命令通過篩選一些條件,能夠找到已經(jīng)被遺忘的文件。

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

1.2 文本處理

這是是非常非常加分的技能。get到之后,也能節(jié)省更多時間來研究面向?qū)ο?。小姐姐味道已?jīng)輸出了“最常用的vim、sed、awk技巧系列”。

1.2.1 查看文件

cat
最常用的就是cat命令了,注意,如果文件很大的話,cat命令的輸出結(jié)果會瘋狂在終端上輸出,可以多次按ctrl+c終止。

#?查看文件大小
du?-h?file

#?查看文件內(nèi)容
cat?file

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

tail
大多數(shù)做服務端開發(fā)的同學,都了解這么命令。比如,查看nginx的滾動日志。

tail?-f?access.log

tail命令可以靜態(tài)的查看某個文件的最后n行,與之對應的,head命令查看文件頭n行。但head沒有滾動功能,就像尾巴是往外長的,不會反著往里長。

tail?-n100?access.log
head?-n100?access.log

1.2.1 統(tǒng)計

sort和uniq經(jīng)常配對使用。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

1.2.3 其他

grep
grep用來對內(nèi)容進行過濾,帶上--color參數(shù),可以在支持的終端可以打印彩色,參數(shù)n則輸出具體的行數(shù),用來快速定位。
比如:查看nginx日志中的POST請求。

grep?-rn?--color?POST?access.log

推薦每次都使用這樣的參數(shù)。

如果我想要看某個異常前后相關的內(nèi)容,就可以使用ABC參數(shù)。它們是幾個單詞的縮寫,經(jīng)常被使用。A??after ?內(nèi)容后n行B??before ?內(nèi)容前n行C??count? ?內(nèi)容前后n行
就像是這樣:

grep?-rn?--color?Exception?-A10?-B2???error.log

diff

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

1.3壓縮

為了減小傳輸文件的大小,一般都開啟壓縮。linux下常見的壓縮文件有tar、bzip2、zip、rar等,7z這種用的相對較少。

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

最常用的就是.tar.gz文件格式了。其實是經(jīng)過了tar打包后,再使用gzip壓縮。

創(chuàng)建壓縮文件

tar?cvfz??archive.tar.gz?dir/

解壓

tar?xvfz.?archive.tar.gz

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

1.4 日常運維

開機是按一下啟動按鈕,關機總不至于是長按啟動按鈕吧。對了,是shutdown命令,不過一般也沒權(quán)限-.-!。passwd命令可以用來修改密碼,這個權(quán)限還是可以有的。

mount
mount命令可以掛在一些外接設備,比如u盤,比如iso,比如剛申請的ssd??梢苑判牡目葱‰娪傲恕?br>

mount?/dev/sdb1?/xiaodianying

chown
chown?用來改變文件的所屬用戶和所屬組。
chmod?用來改變文件的訪問權(quán)限。

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

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

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

#?給a.sh文件增加執(zhí)行權(quán)限(這個太常用了)
chmod?a+x?a.sh

yum
假定你用的是centos,則包管理工具就是yum。如果你的系統(tǒng)沒有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的區(qū)別和用途。

su
su用來切換用戶。比如你現(xiàn)在是root,想要用xjj用戶做一些勾當,就可以使用su切換。

su?xjj
su?-?xjj

-可以讓你干凈純潔的降臨另一個賬號,不出意外,推薦。

1.5 系統(tǒng)狀態(tài)概覽

登陸一臺linux機器,有些命令能夠幫助你快速找到問題。這些命令涵蓋內(nèi)存、cpu、網(wǎng)絡、io、磁盤等。

unameuname命令可以輸出當前的內(nèi)核信息,讓你了解到用的是什么機器。

uname?-a

ps
ps命令能夠看到進程/線程狀態(tài)。和top有些內(nèi)容重疊,常用。

#?找到java進程
ps?-ef|grep?java

top系統(tǒng)狀態(tài)一覽,主要查看。cpu load負載、cpu占用率。使用內(nèi)存或者cpu最高的一些進程。下面這個命令可以查看某個進程中的線程狀態(tài)。

top?-H?-p?pid

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

df
df命令用來查看系統(tǒng)中磁盤的使用量,用來查看磁盤是否已經(jīng)到達上限。參數(shù)h可以以友好的方式進行展示。

df?-h

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

ping
至于網(wǎng)絡通不通,可以使用ping來探測。(不包括那些禁ping的網(wǎng)站)

netstat雖然ss命令可以替代netstat了,但現(xiàn)實中netstat仍然用的更廣泛一些。比如,查看當前的所有tcp連接。

netstat?-ant

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

1.6 工作常用

還有一些在工作中經(jīng)常會用到的命令,它們的出現(xiàn)頻率是非常高的 ,都是些熟面孔。

export
很多安裝了jdk的同學找不到java命令,export就可以幫你辦到它。export用來設定一些環(huán)境變量,env命令能看到當前系統(tǒng)中所有的環(huán)境變量。比如,下面設置的就是jdk的。

export?PATH=$PATH:/home/xjj/jdk/bin

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

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

*/10?*?*?*?*?/home/xjj/wc10min

datedate命令用來輸出當前的系統(tǒng)時間,可以使用-s參數(shù)指定輸出格式。但設置時間涉及到設置硬件,所以有另外一個命令叫做hwclock

xargsxargs讀取輸入源,然后逐行處理。這個命令非常有用。舉個栗子,刪除目錄中的所有class文件。

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

#把所有的rmvb文件拷貝到目錄
ls?*.rmvb?|?xargs?-n1?-i?cp?{}?/mount/xiaodianying

1.7 網(wǎng)絡

linux是一個多作業(yè)的網(wǎng)絡操作系統(tǒng),所以網(wǎng)絡命令有很多很多。工作中,最常和這些打交道。

ssh
這個,就不啰嗦了。你一定希望了解ssh隧道是什么。你要是想要詳細的輸出過程,記得加參數(shù)-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命令可以讓你直接使用命令行下載文件,并支持斷點續(xù)傳。

wget?-c?http://oracle.fuck/jdk2019.bin

mysql
mysql應用廣泛,并不是每個人都有條件用上navicat的。你需要了解mysql的連接方式和基本的操作,在異常情況下才能游刃有余。

mysql?-u?root?-p?-h?192.168.1.2

不要覺得復雜,命令是有限的,但激情無限;都會也不要驕傲,一個vim就夠折騰一輩子。捷徑就是總結(jié),深入只有探索。白馬過隙,終會行云流水,手到擒來。
物是人非,年華易老。唯有時光,不會辜負。

2. 挑選一個Linux發(fā)行版

和Linux比較像的還有Unix,但如果你是一個二三十歲的小青年,你接觸到可能只有Linux的世界了。從手機,到服務器上廣泛使用的centos,到漂亮的桌面發(fā)行版ubuntu,甚至是風靡全球的樹莓派,到處都是linux的身影。

2.1 你需要知道這些linux歷史

知道一點相關操作系統(tǒng)的歷史,是能夠陶冶情操的。GNU/Linux是為了抵制一些商業(yè)公司的壟斷行為而發(fā)展起來的,凝結(jié)了一代互聯(lián)網(wǎng)人向往自由的心血。

和其他Unix比起來,Linux其實很年輕。直到1991年,一個叫Linus Torvalds的芬蘭年輕人才開始開發(fā)我們現(xiàn)在所知道的Linux內(nèi)核

Linux的吉祥物是企鵝,這個吉祥物直到1996年才確定,所以你會經(jīng)??吹揭恍└阈Φ膱D片。如果你是90后,那這只小企鵝幾乎和你一般大,還是個年輕的小伙。

Linux的發(fā)展歷程比較的復雜。經(jīng)過一次次的過關斬將,Linux走到今天確屬不易。關于其發(fā)展歷史,你可以通過下面的鏈接,查看高清圖片。20年的時間,對軟件行業(yè)來說,是一段非常漫長的時光,有多少的風光已經(jīng)物是人非。

高清見圖片(http://1t.click/aUnx) ??梢钥吹剑琹inux只占了那可憐的一小塊。這就像人類的出現(xiàn),在生命的長河中,微不足道,但卻是一個質(zhì)的飛躍。

你可能注意到,在前面的描述中,說的是GUN/Linux,而不僅僅是Linux。Linux本身只是一個內(nèi)核,作用有限,只有和GNU聯(lián)合起來,擁有完整的生態(tài)才會發(fā)揮它的作用。

談到上面區(qū)別的原因,是為了記住Richard Stallman在1983年發(fā)起的GNU計劃。他同時是smalltalk語言的發(fā)明者,被公認的第二個面向?qū)ο蟮恼Z言。我在早些年,還研究過一段時間。哦,他還編寫了一個巨無霸編輯器,Emacs。

只有一個人被捧成神,他才會有能量折磨你。

針對于Linux歷史,我們不做過多介紹。下面介紹幾個經(jīng)典的發(fā)行版本。

2.2 精選版本介紹

現(xiàn)在的Linux發(fā)行版本,已經(jīng)有上千個,你要是喜歡、而且多金,你也可以做一個。如何在這其中,找到最合適的版本,是需要經(jīng)過一番折騰的。很多發(fā)行版本,其實是很小眾的。

這不像是哲學領域的某些東西,真理掌握在少數(shù)人手中。只有獲得良好發(fā)展,并得到認可的Linux發(fā)行版,才有它的價值,可以說是徹頭徹尾的實用主義。

但這東西又像女朋友,剛開始感覺風采迥異,各有千秋,到最后了解到是一樣的庸俗不堪。但有人就是喜歡Linux相關的工作,一干就是一輩子...

我可以先說一下自己的歷程。剛開始,接觸的是紅帽redhat,當時還沒有分什么企業(yè)版。用了一段時間以后,又切換成更穩(wěn)定的slackware。但是slackware上的程序更新實在太慢了,于是又切換成readhat血統(tǒng)的fedora,這個版本的軟件保鮮度很高。其間,又嘗試了其他幾個linux版本,最終,在2013年前后,換成了滾動升級的archlinux,直到現(xiàn)在。

要我個人做個推薦的話:
1、個人用戶(技術(shù)),桌面版用ubuntu=>archlinux。
2、企業(yè)用戶,服務器,使用centos

2.3 主要起源

這么多Linux版本,其實有兩條主線。debian系列和redhat系列。很多發(fā)行版本,其實是二次翻新,很多就直接拿這兩個基礎系列進行改造。正所謂:操作系統(tǒng)千千萬,都是帽子和大便。

debian

下面這個屎一樣的圖表,就是debian。呃呃呃,和大便只差一個字母。

Debian計劃是一個致力于創(chuàng)建一個自由操作系統(tǒng)的合作組織。它的特點是:穩(wěn)定、安全,到現(xiàn)在為止,已經(jīng)發(fā)展了20多年了。我們所熟悉的ubuntu,就是基于debian改進的。

redhat

紅帽是一家商業(yè)公司,涉足Linux比較早,現(xiàn)在對個人提供一些紅帽認證之類的證書?,F(xiàn)在云主機使用較多的centos,包括紅帽公司的RHEL,占據(jù)了大部分服務器市場。近期,centos 8推出了centos stream滾動版本,看起來更像是一個正常的操作系統(tǒng)。

2.4 典型版本

我們看一下處于不同層次的幾個典型版本。從應用方面來說,linux有桌面、服務器、研究用等用途。

2.4.1、ubuntu

ubuntu的出現(xiàn),對Linux的推廣有不可磨滅的貢獻。它是一個易于安裝的桌面版本(也有服務器版本),界面非常漂亮。ubuntu是基于debian系統(tǒng)的unstable分支修改的,包管理軟件是apt-get。

它的創(chuàng)建者是Mark Shuttleworth,南非企業(yè)家,世界上第二名自資的太空游客。我想,無論是太空還是ubuntu,這都是夢想吧。

2.4.2、centos

centos是目前最流行的服務器版本。它是RHEL源代碼再編譯的產(chǎn)物,主要是為了繞開一些法律問題。在包管理,甚至穩(wěn)定性上,與紅帽企業(yè)版沒什么差別。

2.4.3、archlinux

archlinux采用滾動升級的模式進行發(fā)行,盡全力提供最新的穩(wěn)定版本。剛開始安裝,arch只提供一個基本的系統(tǒng),甚至連界面都沒有,對初學者不是很友好。

但是,archlinux是非常干凈的系統(tǒng)。很多軟件,只有你需要的時候才會安裝。它的軟件和理念通常都是最新的,定制化非常強,深得許多Linux愛好者的喜愛。

2.4.4、gentoo

上面的archlinux,提供了編譯后的軟件包。用戶在安裝軟件時,只需要下載、解壓即可。gentoo將這個過程更近一步,可以說更加的變態(tài)。它下載的是軟件的源代碼,然后在本地進行編譯,然后安裝。

這通常非常的蛋疼,因為下載、編譯會花費非常長的時間,但它有一個非常大的優(yōu)點,就是穩(wěn)定。

這個系統(tǒng)比較底層,對技能要求更多,不太推薦。

2.4.5 、LFS

LFS的全拼是“l(fā)inux from scratch”,意思是從零構(gòu)建一個linux系統(tǒng)。它有一個非常詳細的安裝文檔,教你怎樣編譯內(nèi)核,編譯引導程序,編譯和配置必要的軟件。

這是一個瘋狂而必要的過程。如果你想要自己的Linux之上更上層樓,跟著文檔做一遍是受益無窮的。你需要經(jīng)過多次交叉編譯,最終使用chroot命令切換到新系統(tǒng)進行后續(xù)操作。

想做一個自己的發(fā)行版么?從這開始吧。

2.4.6、kali

kali linux是一個非常專業(yè)的發(fā)行版。如果你在做滲透方面的工作,將是一個非常好的選擇。

發(fā)行版的安裝包非常大,包含了常見的破解工具,滲透工具,攻擊工具。這非常的危險,我曾用它暴力破解了非常多的wifi密碼,成功的窺視了鄰居的隱私。還是非常好用的。

3. 安裝一個清爽的Linux系統(tǒng)

工欲善其事,必先利其器。你可能會想到買一臺云主機練練手,但那畢竟要花點銀子,我們可以自己安裝一個。我們在上面提到,目前使用最廣泛的,就是centos。不論你是自建機房,還是使用類似于阿里云這樣的云端環(huán)境,大多數(shù)都會提供centos的安裝。

你可能會找到多種安裝虛擬機的方式。本小節(jié),將使用虛擬雙網(wǎng)卡的方式,準備一個純潔的環(huán)境。這一小節(jié),圖片很多。

以阿里云為例,默認第一位就是CentOS,提供了從7.6版本到舊版本的多個鏡像。

3.1 下載

下面的文章,我們就以CentOS 7穩(wěn)定版本為基礎環(huán)境。centos很流行,所以鏡像也有很多。國內(nèi),我們從上海交大下載,速度應該會快一些。

http://ftp.sjtu.edu.cn/centos/7/isos/x86_64/CentOS-7-x86_64-Minimal-1908.iso

如果交大哪天不維護了。可以從這里找:

http://centos.mirror.ndchost.com/7/isos/x86_64/CentOS-7-x86_64-Minimal-1908.iso

為了讓大家學到更多的知識,我們使用最小化的系統(tǒng)ISO。最小化的iso不到1GB,而預裝了很多軟件的dvd有4.3GB的大小。我們就用這個減肥版。

3.2 安裝Linux

要想快速學習、體驗Linux,最便捷的方式,就是使用虛擬機進行安裝。目前,最流行的虛擬機,一個是VMware,一個是VirtualBox。在MacOS上還有一個Parallels Desktop

其中,VirtualBox免費而且跨平臺,能夠滿足我們的需求。接下來,將一步步引導你進行安裝。

(1) 點擊新建,開啟安裝旅程。

(2) 填寫名稱,版本。然后點擊繼續(xù)。

(3)按照你的機器配置,選擇內(nèi)存

我的機器是8GB內(nèi)存的,就分配給虛擬機2GB,這個已經(jīng)足夠用了。

(4) 創(chuàng)建一個虛擬磁盤

點擊繼續(xù)后,將彈出一個對話框。我們不用多管,一直點繼續(xù),知道對話框消失。這非常的粗暴。

(5) 接下來,點擊設置。

(6) 切換到Storage選項,選擇我們下載的iso

(7) 點擊啟動,開始安裝。

使用方向鍵切換,使得高亮聚焦在Install CentOS 7上。點擊確定,開始安裝。

(8) 彈出一個安裝界面

接下來的步驟有點多,如果我們沒有特別的介紹,那么直接continue就ok了。

(9) 接下來,配置磁盤分區(qū)

依然保持默認,并按按鈕Done退出。

(10) 配置用戶

linux上默認的用戶名為root。接下來我們設置root用戶的密碼為123456。由于這是一個弱密碼,所以需要點擊兩次確定退出。

(11) 等待安裝完畢,進行重啟

(12) 安裝成功

3.3 聯(lián)網(wǎng)

這個時候,我們安裝的虛擬機,還不能聯(lián)網(wǎng),無法把自己的意念傳達出去。由于我們沒有對虛擬機進行任何設置,所以使用的是默認的NAT模式。

將光標聚焦到命令行窗口,然后輸入命令dhclient。等待幾秒鐘,執(zhí)行ping baidu.com測試以下網(wǎng)絡,可以看到能夠正常訪問網(wǎng)絡了。

上面黑漆漆的窗口,就是我們現(xiàn)在的Linux界面。有人覺得很丑,就像是在玩dos,但像我這種不可救藥的人,卻覺得格外的親切。

接下來的命令,我們不會再截圖,而使用高亮的代碼塊表示。為了不至于讓人暈頭轉(zhuǎn)向,請先看下圖。

3.4 外部訪問虛擬機

由于NAT模式的特點,我們的虛擬機能夠訪問外網(wǎng),但無法被外部發(fā)現(xiàn)。酒香竟怕巷子深。為了解決這個問題,我們需要再添加一塊網(wǎng)卡。

在做這些更改之前,需要首先關閉虛擬機。可以強制關閉機器,也可以在命令行中輸入:

shutdown?-h?now

虛擬機關閉后,再次點擊設置,切換到網(wǎng)絡適配器選項卡。如圖,添加一個新的網(wǎng)絡適配器,適配器類型為Host-only Adapter。通過這塊網(wǎng)卡,我們的宿主機就能夠訪問它了。

再次啟動虛擬機,執(zhí)行dhclient命令后,執(zhí)行ip addr查看主機的ip地址??梢钥吹?,我們現(xiàn)在有兩塊網(wǎng)卡,兩個ip地址。

記錄下192打頭的網(wǎng)絡地址,我們會使用外部的程序,比如XShell、SecureCRT等,進行連接。比如,我這里的ip地址是:192.168.99.100。不廢話,看圖。

小提示:關于虛擬網(wǎng)卡的網(wǎng)段,如果有差異。你可以在全局設置里,改成和我一樣的。

3.5 遠程連接

你可能已經(jīng)體驗到,通過虛擬機自帶的命令行界面進行輸入,局限性非常大。通過遠程連接,可以把終端界面切換到我們熟悉的操作模式,如果能夠顯示彩色的終端,那再好不過了。下面介紹幾個工具,一般的,使用xshell的居多。

Windows

  • XShell?你可能在公司內(nèi),見過你的SRE同事,運指如飛,命令字符如流水一般撒過屏幕。即使非常繁雜,難以記憶的密碼,也能瞬間輸入。他可能用的就是xshell。

  • SecureCRT?比較老的一款產(chǎn)品,使用也較多。

  • MobaXterm?MobaXterm就是一單文件純綠色軟件,下載過來exe包直接運行即可,不需要任何的安裝過程。

它們都有免費版和專業(yè)版之分。無力購買的話,就找找破解版。但是注意,盜版漢化的ssh客戶端,有些別有用心的人會在軟件中植入木馬,竊取你的密碼、證書,這種情況已經(jīng)發(fā)生過很多次。

MacOS

對于macos用戶來說,簡單的很。直接使用iTerm,輸入命令行即可。比如使用下面的命令連接我們的機器。

[email protected]

Linux

唔,你都已經(jīng)是Linux環(huán)境了,還折騰個啥虛擬機呢?直接用吧。

推薦使用XShell、SecureCRT、iTerm等工具,通過ssh進行遠程連接。對于一些命令拷貝、驗證來說,要方便快捷的多。

4. 對Linux命令行有個初步了解

萬事開頭難。面對黑漆漆的Linux窗口,要勇敢的走出第一步。不要怕輸錯了什么,系統(tǒng)健壯的很。命令行通常會擁有比圖形界面更高的效率,更加重要的是它可以做自動化之類的小工具,這使得生產(chǎn)力產(chǎn)生質(zhì)的飛躍。

現(xiàn)在,你已經(jīng)安裝好了centos,并遠程連接上了它。我們擁有了它,但并不能了解它的脾氣。接下來,讓我們進入Linux命令行的世界。和我簽訂契約吧,少年。

本小節(jié)會使用非常詳細的演進方式,來看一下一個命令,是怎樣生成和執(zhí)行的。

4.1、簡單嘗試

好啦,我們現(xiàn)在就在終端里了。什么叫做終端呢?你在很多黑客電影里,看到的黑漆漆的界面就是,它提供了一個可以輸入字符串的交互式界面,至于那些閃光的、掃描機一樣的東西,是不存在的。

嘗試輸入些什么吧。?比如:jdsjf

[root@localhost?~]#?jdsjf
-bash:?jdsjf:?command?not?found

我們再次把這張圖貼一下。怎么回事?命令的輸出翻譯成中文,就是“找不到命令”的意思。什么叫命令?就是我們上面隨便輸入的字符串jdsjf

然后,我們看下提示中其他一些有用的東西。

↓↓↓↓↓↓

bash??代表的是我們所使用的shell,shell可以認為是一個解釋器,將我們的輸入解釋成一系列可執(zhí)行的指令?,F(xiàn)在的linux發(fā)行版,最流行的就是bash解釋器,幾乎每個都預裝了它。

命令找不到,證明我們的字符串bash解釋不了。但是,Linux上一些目錄里的文件,是可以被默認找到的,這些目錄的集合,就叫PATH?。PATH還是一個環(huán)境變量,我們可以通過命令查看它的尊容。

[root@localhost?~]#?echo?$PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin

想要知道系統(tǒng)中有哪些命令,就可以看下上面這些文件夾中,都有哪些文件。文件非常非常之多,但是大部分我們不會接觸。所以,xjjdog才會寫這么個東西--聚焦那些最常用,最有用的命令,最常用的參數(shù),最有用的場景。

命令輸出后,還有一些額外的東西,比如[root@localhost ~],這部分叫做提示符,光標會一直跳動,等待你的輸入。這部分是可以定制的,甚至可以定制的十分漂亮。

4.2、Hello World

到現(xiàn)在為止,我們什么都沒得到。按照程序員的想法來說,就要實現(xiàn)一個hello world的程序。在終端shell里,這個過程變得簡單,遠比寫一個java程序簡單。

[root@localhost?~]#?echo?"Hello?World"
Hello?World

如上所示,echo的意思就是輸出一些內(nèi)容。后面的Hello World,就叫做參數(shù),它們之間以空格分隔,可以接受多個參數(shù)。

[root@localhost?~]#?echo?"Hello?World"?,?"Fuck?996"
Hello?World?,?Fuck?996

以上命令能夠正常運行,證明echo是我們的終端能夠認識的一個命令。那到底這個命令是在什么地方呢?可以使用whereis命令進行查找。

[root@localhost?~]#?whereis?echo
echo:?/usr/bin/echo?/usr/share/man/man1/echo.1.gz

命令顯示。我們的echo命令全路徑,是/usr/bin/echo,由于它處于PATH目錄中,所以能夠被識別到。

4.3、將命令加入PATH

接下來,我們把上面的命令,做成一個腳本。然后將這個腳本,放到PATH目錄中。不過先等等,我們要先給命令起個名字。

首先需要創(chuàng)建一個文件。在Linux上,創(chuàng)建文件使用touch命令。

[root@localhost?~]#?touch?jdsjf

命令執(zhí)行后,什么都沒發(fā)生,它只是創(chuàng)建了一個空文件。接下來,我們向其中添加一些內(nèi)容。

[root@localhost?~]#?echo?"echo?'Hello?World'"?>?jdsjf

注意符號>,它的意思是,將前面的輸出,重定向到后面的文件中。執(zhí)行完上面的命令,jdsjf?中的內(nèi)容,就變成了echo 'Hello World。

接下來,我們嘗試著去執(zhí)行剛才生成的命令。

[root@localhost?~]#?./jdsjf
-bash:?./jdsjf?:?Permission?denied

我們通過相對路徑的方式,來執(zhí)行剛剛生成的命令。結(jié)果,終端顯示我們并沒有這個命令的執(zhí)行權(quán)限。

其實,Linux在權(quán)限控制這一方面,非常的詳細。一個文件,有可讀、可寫、可執(zhí)行三種屬性。如果想要一個文件能夠執(zhí)行,需要給它添加執(zhí)行權(quán)限,這個過程是由命令chmod完成的。

[root@localhost?~]#?chmod?u+x?jdsjf
[root@localhost?~]#?./jdsjf
Hello?World

我們將在后面的章節(jié),來詳細介紹權(quán)限方面的知識。如上所示,命令已經(jīng)能正常輸出,接下來,我們把命令移動到PATH中的一個目錄。

[root@localhost?~]#?mv?jdsjf?/usr/local/bin/
[root@localhost?~]#?jdsjf
Hello?World

不需要加任何的相對路徑,現(xiàn)在,只需要輸入jdsjf,就可以正常輸出一串數(shù)字。我們成功的讓一個沒有任何意義的字符串,表達了它的想法。雖然我們依然是它的主宰。

你可以想一下下面這三個問題:

1、我可以自定義一個目錄,比如/root/mybin,把它加入到PATH么?

2、我可以省略上面的touch命令,直接使用重定向生成文件么?

3、除了放到PATH和相對路徑,還有沒有其他的命令執(zhí)行方式?

5. ?Linux漫游方式

想要了解linux的基本使用方法,就要了解一個基本的事實--linux系統(tǒng)中,一切皆文件。

不管是命令,還是文檔,甚至設備,目錄,套接字,在linux上對它們的操作都是一致對待的。許多開發(fā)驅(qū)動程序的小伙伴,會發(fā)現(xiàn)使用的一些函數(shù),和讀寫文件的沒什么兩樣(open、close、read、write、ioctl)。今天我們所說的基本操作,針對的就是普通文件和目錄,本小節(jié)將詳細解釋相關命令。

5.1、當前路徑

到現(xiàn)在為止,我們還不知道自己在系統(tǒng)的什么地方。在瀏覽器上,我們能夠通過導航欄上的url,了解到自己在互聯(lián)網(wǎng)上的具體坐標。相似的功能,是由pwd命令提供的,它能夠輸出當前的工作目錄。

pwd命令是非常非常常用的命令,尤其是在一些命令提示符設置不太友好的機器上。另外,它也經(jīng)常用在shell腳本中,用來判斷當前的運行目錄是否符合需求。

有很多線上事故,都是由于沒有確認當前目錄所引起的。比如rm -rf *這種危險的命令。在執(zhí)行一些高危命令時,隨時確認當前目錄,是個好的習慣。

[root@localhost?~]#?pwd
/root

我們使用root用戶默認登陸后,就停留在/root目錄中。Linux中的目錄層次,是通過/進行劃分的。

5.2、文件系統(tǒng)用戶標準

Linux的文件系統(tǒng),從一開始就有一個規(guī)范標準。它還有一個專有縮寫名詞,叫做FHS?(Filesystem Hierarchy Standard)。FHS經(jīng)過多年的演進,目錄結(jié)構(gòu)也越來越清晰。除了一些標準的要求,還有一些使用者之間的約定。

接下來,我們大體看一下linux上的默認目錄,對其有一個基本的感覺。

第1層第二層介紹
/bin
目錄/usr/bin的軟鏈接
/sbin
目錄/usr/sbin的軟鏈接
/lib
目錄/usr/lib的軟鏈接
/usr/bin存放一些常用的命令
/usr/sbin存放一些管理員常用的命令
/usr/lib用來存放動態(tài)庫和一些模塊文件
/sys
內(nèi)核中的數(shù)據(jù)結(jié)構(gòu)的可視化接口
/proc
內(nèi)存映像
/run
內(nèi)存映像
/boot
存放引導程序,內(nèi)核相關文件
/dev
存放一些設備文件,比如光盤
/etc
用于存儲一些全局的、應用的配置文件
/var
與/var/run一樣,存放的是系統(tǒng)運行時需要的文件,比如mysql的pid等
/tmp
非常特殊的臨時文件夾,斷電丟失
/home/**用戶目錄,比如我的目錄是/home/xjjdog
/root
root用戶的home目錄
  • home?平常,我們打交道最多的目錄,就集中在自己的用戶目錄,我們可以在里面做任何操作,比如我們現(xiàn)在root用戶的/root目錄。一些自己的資料,比如視頻、音頻、下載的文件,或者做測試用的一些數(shù)據(jù)資料,就可以自行在這些目錄下規(guī)劃。root用戶比較特殊,普通用戶的私人目錄都是在/home下的。

  • /etc?etc目錄是經(jīng)常要打交道的目錄,存放了一些全局的系統(tǒng)配置文件和應用配置文件。比如你安裝了php,或者nginx,它們的配置文件就躺在/etc目錄下的某個文件夾里。

  • /var?var目錄存放一些運行中的數(shù)據(jù),有必須的,也有非必須的。一些黑客入侵之后,會在這里面的某些文件中留下痕跡,他們會著重進行清理。var目錄還是一些應用程序的默認數(shù)據(jù)存放之地,比如mysql的數(shù)據(jù)文件。

  • /tmp?目錄是一個特殊的臨時目錄,文件在斷電以后就消失了。但這個目錄,所有的用戶,都有寫入權(quán)限,通常用來做文件交換用。

  • /proc/sys目錄,是兩個神奇的目錄。它們兩個是一種偽文件系統(tǒng),可以通過修改其中一些文件的狀態(tài)和內(nèi)容,來控制程序的行為(修改后會直接刷到內(nèi)存上,太酷了)。剛開始的時候,只有proc目錄,由于里面內(nèi)容有多又亂,后面又規(guī)劃出sys目錄,用來控制內(nèi)核的一些行為。如果你在調(diào)優(yōu)一些系統(tǒng)參數(shù),和這些文件打交道的時間比較多。

  • 還有幾個空的目錄,我們沒有列在上面的表格上。比如/srv目錄,通常會把一些web服務的資料,比如nginx的,放在這里面。但是,這并不是強制要求的,所以我見過的/srv目錄,通常會一直是空的。同樣的,/opt目錄也是這樣一個存在,你就當它不存在就行。這都屬于使用者規(guī)劃的范疇,自定義性非常強。

  • 在使用Linux系統(tǒng)的時候,也可以創(chuàng)建自己的目錄。比如,我就喜歡自己創(chuàng)建一個叫做/data的目錄,用來存放一些數(shù)據(jù)庫相關的內(nèi)容。舉個例子,/data/mysql存放mariadb的數(shù)據(jù),而/data/es/存放elasticsearch的索引內(nèi)容。

linux上的文件類型有很多,它們大部分都分門別類的存放在相應的目錄中,比如/dev目錄下,就是一些設備文件;/bin文件下,是一些可以執(zhí)行命令。通常都好記的很。

5.3、查看文件列表

所以,上面的表格內(nèi)容,我是怎么看到的呢,靠記憶么?ls命令,能夠列出相關目錄的文件信息??梢员辉u為linux下最勤勞的命令標兵。

現(xiàn)在的終端,都能夠輸出彩色的信息,非常的直觀。oh-my-zshoh-my-bash等項目,可以讓你的終端更加的漂亮。把它加入到你的研究清單里吧。

[root@localhost?/]#?ls?/
#?注意:ls可以接受路徑參數(shù),你不用先跳轉(zhuǎn),就可以輸出相關信息
bin??boot??dev??etc??home??lib??lib64??media??mnt??opt??proc??root??run??sbin??srv??sys??tmp??usr??var
[root@localhost?/]#?ls?-l?/
#?帶上?-l參數(shù),可以查看一些更加詳細的信息。
total?20
lrwxrwxrwx.???1?root?root????7?Nov??3?20:24?bin?->?usr/bin
dr-xr-xr-x.???5?root?root?4096?Nov??3?20:34?boot
drwxr-xr-x.??19?root?root?3080?Nov??3?21:19?dev
drwxr-xr-x.??74?root?root?8192?Nov??3?20:34?etc
drwxr-xr-x.???2?root?root????6?Apr?11??2018?home
lrwxrwxrwx.???1?root?root????7?Nov??3?20:24?lib?->?usr/lib
lrwxrwxrwx.???1?root?root????9?Nov??3?20:24?lib64?->?usr/lib64
drwxr-xr-x.???2?root?root????6?Apr?11??2018?media
drwxr-xr-x.???2?root?root????6?Apr?11??2018?mnt
drwxr-xr-x.???2?root?root????6?Apr?11??2018?opt
dr-xr-xr-x.?108?root?root????0?Nov??3?21:19?proc
dr-xr-x---.???2?root?root??135?Nov??4?07:53?root
drwxr-xr-x.??24?root?root??740?Nov??3?21:20?run
lrwxrwxrwx.???1?root?root????8?Nov??3?20:24?sbin?->?usr/sbin
drwxr-xr-x.???2?root?root????6?Apr?11??2018?srv
dr-xr-xr-x.??13?root?root????0?Nov??3?21:19?sys
drwxrwxrwt.???9?root?root?4096?Nov??4?03:40?tmp
drwxr-xr-x.??13?root?root??155?Nov??3?20:24?usr
drwxr-xr-x.??19?root?root??267?Nov??3?20:34?var

ls最常用的,就是加參數(shù)l或者參數(shù)a。

5.3.1、詳細信息

加上參數(shù)l,能夠看到文件的一些權(quán)限信息已經(jīng)更新日期等。但我們還看到了一些更有意思的東西。比如:

lib?->?usr/lib

上面表示的,是軟鏈接信息。

就如同我們上面表格所展示的一樣,lib目錄,是/usr/lib的快捷方式,它們之中的內(nèi)容,沒有什么兩樣。

關于ls -l展示的更加詳細的內(nèi)容,可以參照我下面的這張圖。我們將在了解后面小節(jié)的內(nèi)容后,再次對這張圖進行回顧。

5.3.2 隱藏文件

直接在你的/root目錄里,執(zhí)行ls -al,你會看到更多東西。這些額外的隱藏文件,都是以.開頭,以配置文件居多。這就是參數(shù)a的作用。

[root@localhost?~]#?ls?-al
total?28
dr-xr-x---.??2?root?root??135?Nov??4?07:53?.
dr-xr-xr-x.?17?root?root??224?Nov??3?20:28?..
-rw-------.??1?root?root?1273?Nov??3?20:28?anaconda-ks.cfg
-rw-------.??1?root?root??246?Nov??4?11:41?.bash_history
-rw-r--r--.??1?root?root???18?Dec?28??2013?.bash_logout
-rw-r--r--.??1?root?root??176?Dec?28??2013?.bash_profile
-rw-r--r--.??1?root?root??176?Dec?28??2013?.bashrc
-rw-r--r--.??1?root?root??100?Dec?28??2013?.cshrc
-rw-r--r--.??1?root?root??129?Dec?28??2013?.tcshrc

細心的同學,應該會注意到兩個特殊的目錄。...。前者表示的是當前目錄,而后者表示的是上層目錄。

使用cd命令,將在這些目錄中,自由穿梭。

小技巧:如果你對英文日期閱讀困難,可以使用ls -al --full-time查看可讀的日期。

5.4、切換目錄

執(zhí)行cd命令,可以將工作目錄切換到目標文件夾。為了展示cd命令的效果。請在root用戶下,執(zhí)行下面的命令,這將創(chuàng)建一個7層的目錄。

cd
mkdir?-p?a1/b2/c3/d4/e5/f6/{g7,g8,g9,g10}

我們使用cd命令,切換到最后一層。然后,我們使用..切換到上層目錄。

[root@localhost?~]#?cd?a1/b2/c3/d4/e5/f6/g7
[root@localhost?g7]#?pwd
/root/a1/b2/c3/d4/e5/f6/g7

[root@localhost?g7]#?cd?..
[root@localhost?f6]#?pwd
/root/a1/b2/c3/d4/e5/f6

所以,切換到上面n層目錄,只需使用多層級的../即可。有幾個特殊的變量,需要說明一下。

  • ../?指的是上層目錄
  • ../../?指的是上兩層目錄
  • ./?指的是當前目錄
  • ~?指的是當前的用戶目錄,這是一個縮寫符號
  • -?使用它,可以在最近兩次的目錄中來回切換

我們來使用命令把上面這些特殊變量驗證一下。

#?跳轉(zhuǎn)到用戶根目錄
[root@localhost?tmp]#?cd?~
[root@localhost?~]#?pwd
/root

#?進入到第三層目錄
[root@localhost?~]#?cd?a1/b2/c3/
[root@localhost?c3]#?pwd
/root/a1/b2/c3

#?跳回到前三層目錄
[root@localhost?c3]#?cd?../../..
[root@localhost?~]#?pwd
/root

#?跳到上次訪問的目錄
[root@localhost?~]#?cd?-
/root/a1/b2/c3
[root@localhost?c3]#?pwd
/root/a1/b2/c3

#?進入當前目錄:等于什么都沒干
[root@localhost?c3]#?cd?./
[root@localhost?c3]#?pwd
/root/a1/b2/c3

以上就是cd命令的常用用法?,F(xiàn)在,我們返回頭來看一下mkdir。顧名思義,就是創(chuàng)建目錄的意思,但一般在工作中,都會加上-p參數(shù),這樣就可以一次性創(chuàng)建多層目錄。注意mkdir后面的大括號{},可以一次性的指定多個目錄進行創(chuàng)建,這通常能節(jié)省很多時間。

5.5、文件操作

使用命令行操作文件,是非常方便的。

  • touch?新建文件
  • cp?復制文件
  • mv?移動文件
  • rm?刪除文件

這四個風騷的命令,主宰著文件資料的去向。我們依然使用上面創(chuàng)建的目錄,進行接下來的操作。

#?創(chuàng)建三個文件
[root@localhost?~]#?touch?long-long-long.txt
[root@localhost?~]#?touch?996.txt
[root@localhost?~]#?touch?icu.txt
[root@localhost?~]#?ls
996.txt??a1??anaconda-ks.cfg??icu.txt??long-long-long.txt

#?復制一個文件
[root@localhost?~]#?cp?996.txt?007.txt
[root@localhost?~]#?mv?long-long-long.txt?short.txt
[root@localhost?~]#?ls
007.txt??996.txt??a1??anaconda-ks.cfg??icu.txt??short.txt

#?移動996.txt到a1目錄,icu.txt到a1/b2目錄
#?刪除short.txt
[root@localhost?~]#?mv?996.txt?a1/
[root@localhost?~]#?mv?icu.txt?a1/b2/
[root@localhost?~]#?rm?short.txt
rm:?remove?regular?empty?file?‘short.txt’??y

#?遞歸刪除a1目錄
[root@localhost?~]#?rm?-rvf?a1/
removed?directory:?‘a(chǎn)1/b2/c3/d4/e5/f6/g7’
removed?directory:?‘a(chǎn)1/b2/c3/d4/e5/f6/g8’
removed?directory:?‘a(chǎn)1/b2/c3/d4/e5/f6/g9’
removed?directory:?‘a(chǎn)1/b2/c3/d4/e5/f6/g10’
removed?directory:?‘a(chǎn)1/b2/c3/d4/e5/f6’
removed?directory:?‘a(chǎn)1/b2/c3/d4/e5’
removed?directory:?‘a(chǎn)1/b2/c3/d4’
removed?directory:?‘a(chǎn)1/b2/c3’
removed?‘a(chǎn)1/b2/icu.txt’
removed?directory:?‘a(chǎn)1/b2’
removed?‘a(chǎn)1/996.txt’
removed?directory:?‘a(chǎn)1/’

[root@localhost?~]#?ls
007.txt???anaconda-ks.cfg

經(jīng)過一番操作以后,只剩下了007了。除了上面基本的操作,接下來我要介紹一些更加重要的功能。

可以看到在使用rm刪除文件的時候,進行了一次提示。這是為了避免誤刪除一些東西,但有時候,你需要不顯示這種提示,就可以加-f參數(shù)。f參數(shù)對于cp、mv等命令來說,同樣適用,它是force的意思。

rm?-f?file
cp?-f?file1?file2
mv?-f?file1?file2

另外,還有一個參數(shù)-r,這是遞歸的意思。我們的目錄和文件,通常有多個層次,遞歸可以把操作全部作用于上面,比如上面的遞歸刪除a1目錄。

#?警告:以下命令會造成嚴重后果
rm?-rf?/

上面的這個命令,你一定經(jīng)常看到。這不是笑話,已經(jīng)有很多用戶因此丟失了數(shù)據(jù),這就是傳說中的刪根,最終你將一無所有。那參數(shù)v又是干什么用的呢?加上它之后,可以看到命令詳細的執(zhí)行過程。在平常的操作中,我一般都加上。

6.開始操作文件

你可能已經(jīng)了解到,ll -l命令的第一列,能夠顯示linux的文件類型。請對此有一個大體的印象,因為后面的很多命令,會用到這些知識。

  • -?表示普通文件
  • d?表示目錄文件
  • l?表示鏈接文件,比如快捷方式
  • s?套接字文件
  • c?字符設備文件,比如/dev/中的很多文件
  • b?表示塊設備文件,比如一些磁盤
  • p?管道文件

Linux上的文件可以沒有后綴,而且可以創(chuàng)建一些違背直覺的文件。比如后綴是png,但它卻是一個壓縮文件(通常不會這么做)。大學時,就有聰明的同學這樣藏小電影,效果很好。

查看文件的具體類型,可以使用file命令,它很聰明,能夠識別很多文件格式。

[root@localhost?~]#?file?/etc
/etc:?directory
[root@localhost?~]#?file?/etc/group
/etc/group:?ASCII?text
[root@localhost?~]#?file?/dev/log
/dev/log:?socket
[root@localhost?~]#?file?/dev/log
/dev/log:?socket
[root@localhost?~]#?file?/bin
/bin:?symbolic?link?to?`usr/bin'

本部分的操作,面向的就是ASCII text類型的,普通文本文件。接下來,我們要創(chuàng)建一些文件。然后寫入一些內(nèi)容到文件里,以便進行后續(xù)的操作。

6.1、創(chuàng)建一個文件

6.1.1、數(shù)字序列

使用重定向符,能夠直接生成文件。下面,我要生成10到20的數(shù)字,每一個數(shù)字單獨一行,寫入一個叫做spring的文件。巧的很,seq命令可以完成這個過程。

seq?10?20?>>?spring

我們在前面提到過>的意思,是將前面命令的輸出,重定向到其他地方。在這里,我們用了兩個>,它依然是重定向的意思,但表示的是,在原來文件的基礎上,追加內(nèi)容。

也就是編程語言里的w+a+的意思。

6.1.2、查看內(nèi)容

為了查看文件的生成效果,可以使用cat命令檢測。cat命令將會把文件的內(nèi)容,輸出打印到終端上。如果加上參數(shù)n,甚至可以打印行號。效果如下:

[root@localhost?~]#?cat?spring
10
11
12
13
14
15
16
17
18
19
20
[root@localhost?~]#?cat?-n?spring
1?10
2?11
3?12
4?13
5?14
6?15
7?16
8?17
9?18
10?19
11?20

除了查看文件內(nèi)容,cat命令通常用在更多的地方。只有和其他命令聯(lián)合起來,它才會覺得生活有意義。

#?合并a文件和b文件到c文件
cat?a??b>>?c

#?把a文件的內(nèi)容作為輸入,使用管道處理。我們在后面介紹
cat?a?|?cmd

#?寫入內(nèi)容到指定文件。在shell腳本中非常常用。我們在后面會多次用到這種寫法
cat?>?index.html?<
????
????

EOF

由于我們的文件不大,cat命令沒有什么危害。但假如文件有幾個GB,使用cat就危險的多,這只叫做的小命令,會在終端上瘋狂的進行輸出,你可以通過多次按ctrl+c來終止它。

6.2、平和的查看文件

既然cat命令不適合操作大文件,那一定有替換的方案。less和more就是。由于less的加載速度比more快一些,所以現(xiàn)在一般都使用less。它最主要的用途,是用來分頁瀏覽文件內(nèi)容,并提供一些快速查找的方式。less是一個交互式的命令,你需要使用一些快捷鍵來控制它。

這次我們使用seq生成一千萬行記錄,足足有76MB大小,然后用less打開它。

[root@localhost?~]#?seq?10000000?>?spring
[root@localhost?~]#?du?-h?spring
76M?spring
[root@localhost?~]#?less?spring

關于less,一般操作如下:

  • 空格?向下滾屏翻頁
  • b?向上滾屏翻頁
  • /?進入查找模式,比如/1111將查找1111字樣
  • q?退出less
  • g?到開頭
  • G?去結(jié)尾
  • j?向下滾動
  • k?向上滾動,這兩個按鍵和vim的作用非常像

6.3、文件頭尾

head可以顯示文件頭,tail可以顯示文件尾。它們都可以通過參數(shù)-n,來指定相應的行數(shù)。

[root@localhost?~]#?head?-n?3?spring
1
2
3
[root@localhost?~]#?tail?-n?3?spring
9999998
9999999
10000000

對于部分程序員來說,tail -f或許是最常用的命令之一。它可以在控制終端,實時監(jiān)控文件的變化,來看一些滾動日志。比如查看nginx或者tomcat日志等等。通常情況下,日志滾動的過快,依然會造成一些困擾,需要配合grep命令達到過濾效果。

#?滾動查看系統(tǒng)日志
tail?-f?/var/log/messages

#?滾動查看包含info字樣的日志信息
tail?-f?/var/log/messages?|?grep?info

對于tail命令來說,還有一個大寫的參數(shù)F。這個參數(shù),能夠監(jiān)控到重新創(chuàng)建的文件。比如像一些log4j等日志是按天滾動的,tail -f無法監(jiān)控到這種變化。

6.4、查找文件

考慮下面這個場景。我們需要找一個叫做decorator.py的文件,這個文件是個幽靈,可能存在于系統(tǒng)的任何地方。find命令,能夠勝任這次捉鬼行動。

我們使用find命令,從根目錄找起,由于系統(tǒng)的文件過多,下面的命令可能會花費一段時間。

[root@localhost?site-packages]#?find?/?-name?decorator.py??-type?f
/usr/lib/python2.7/site-packages/decorator.py

使用time命令,可以看到具體的執(zhí)行時間。執(zhí)行還是挺快的么!秒出!

[root@localhost?site-packages]#?time?find?/?-name?decorator.py??-type?f
/usr/lib/python2.7/site-packages/decorator.py

real?0m0.228s
user?0m0.098s
sys?0m0.111s

find命令會查出一個路徑的集合。通常是查詢出來之后,進行額外的處理操作,一般配合xargs命令使用(xargs讀取輸入,然后逐行處理),至于find的exec參數(shù)?忘了它吧,不好用!

#?刪除當前目錄中的所有class文件
find?.?|?grep?.class$?|?xargs?rm?-rvf

#?找到/root下一天前訪問的文件,type后面的類型參見文章開頭
find?/root??-atime?1?-type?f

#?查找10分鐘內(nèi)更新過的文件
find?/root??-cmin??-10

#?找到歸屬于root用戶的文件
find?/root?-user?root

#?找到大于1MB的文件,進行清理
find?/root?-size??+1024k??-type?f?|?xargs?rm?-f

find的參數(shù)非常非常多,記不住怎么辦?除了常用的,其實都可以通過man命令查看。man的操作也和vi非常的類似,輸入/EXAMPLES,會看到很多樣例。不過我覺得還是上面列出的這些命令更加的適用。

6.4.1、數(shù)據(jù)來源

在上圖中,你會看到mtime,ctime,atime類似的字樣,它們的數(shù)據(jù)來自于何處呢?接下來我們順理成章的看一下stat命令。

[root@localhost?~]#?stat?spring
??File:?‘spring’
??Size:?78888897???Blocks:?154080?????IO?Block:?4096???regular?file
Device:?fd00h/64768d?Inode:?8409203?????Links:?1
Access:?(0644/-rw-r--r--)??Uid:?(????0/????root)???Gid:?(????0/????root)
Context:?unconfined_u:object_r:admin_home_t:s0
Access:?2019-11-04?18:01:46.698635718?-0500
Modify:?2019-11-04?17:59:38.823458157?-0500
Change:?2019-11-04?17:59:38.823458157?-0500
?Birth:?-

這不就是文件屬性么?從文件大小,到文件類型,甚至到最后修改、訪問時間,都可以從這里獲取。Linux文件系統(tǒng)以塊為單位存儲信息,為了找到某一個文件所在存儲空間的位置,會用i節(jié)點(inode) 對每個文件進行索引,你可以認為它是一個文件指針。

  • 文件的字節(jié)數(shù)
  • 文件擁有者user
  • 文件所屬組group
  • 文件的讀、寫、執(zhí)行權(quán)限
  • 文件的時間戳
    • ctime指inode上一次變動的時間
    • mtime指文件內(nèi)容上一次變動的時間
    • atime指文件上一次打開的時間。
  • 鏈接數(shù),即有多少文件名指向這個inode (ln命令)
  • 文件數(shù)據(jù)block的位置(具體的數(shù)據(jù)位置)

關于inode是一個比較大的話題,也是比較重要的知識點,有興趣的可以自行搜索。我們只需要知道這些信息是從這里來的就可以了。

6.4.2、小練習

如果我只想獲取Modify這個數(shù)值,可以組合使用一下上面學到的命令。首先獲取最后三行,然后獲取首行。效果如下:

[root@localhost?~]#?stat?spring?|?tail?-n?3?|?head?-n?1
Modify:?2019-11-04?17:59:38.823458157?-0500

下面幾個命令,效果是與上面等價的,輸出結(jié)果也是一模一樣。正所謂條條大路通羅馬,接下來,我們首先介紹一下出現(xiàn)頻率較高的grep。另外,我們在上面的這些命令中,多次使用了|,這是Linux中非常重要的管道概念,下面也會著重介紹。

stat?spring?|?head?-n?7?|?tail?-n?1
stat?spring?|?grep?Modify
stat?spring?|?sed?-n?'7p'
stat?spring?|?awk?'NR==7'

6.5、字符串匹配

grep用來對內(nèi)容進行過濾,帶上--color參數(shù),可以在支持的終端可以打印彩色,參數(shù)n則用來輸出具體的行數(shù),用來快速定位。這是一個必須要熟練使用的命令。

比如:查看nginx日志中的POST請求。

grep?-rn?--color?POST?access.log

推薦每次都使用這樣的參數(shù)。

如果我想要看某個異常前后相關的內(nèi)容,就可以使用ABC參數(shù)。它們是幾個單詞的縮寫,經(jīng)常被使用。

  • A ?after ?內(nèi)容后n行
  • B ?before ?內(nèi)容前n行
  • C ?內(nèi)容前后n行

就像是這樣:

#?查看Exception關鍵字的前2行和后10行
grep?-rn?--color?Exception?-A10?-B2???error.log

#查找/usr/下所有import關鍵字,已經(jīng)它們所在的文件和行數(shù)
grep?-rn?--color?import?/usr/

6.6、管道

在上面的命令中,我們多次用到了|,這貌似可以完成一些神奇的事情。|pipe的意思,它可以把多個命令聯(lián)系起來。通常,命令有下面的關聯(lián)方式:

  • ;?順序執(zhí)行,如mkdir a;rmdir a
  • &&?條件執(zhí)行,如mkdir a && rmdir a
  • ||?條件執(zhí)行,如mkdir a || rmdir a,后面的命令將不執(zhí)行
  • |?管道,前面命令的輸出,將作為后面命令的輸入

前三種的命令關聯(lián),是非常簡單有邏輯的,非常的好理解。而管道,卻有自己的特點。

接觸過編程語言的都知道stdinstdout、stderr的概念。讓我們重新組織一下針對于管道的定義:前面命令的輸出(stdin),將作為后面命令的輸入(stdout)。

我們拿一行命令來說明。

seq?20?100?|?head?-n?50?|?tail?-n?1

上面命令,將輸出69。69是個神奇的數(shù)字,它是怎么辦到的呢?我們來一張小圖,一切就豁然開朗了。

關于輸入輸出和錯誤,linux使用一個數(shù)字進行縮寫,這在一些腳本中,甚至在一些安裝文件中,會經(jīng)常用到。

  • 0 表示stdin標準輸入
  • 1 表示stdout標準輸出
  • 2 表示stderr標準錯誤

通過類似2>&1的語法,可以把錯誤信息定向到標準輸出。我們用命令來證明一下。

#?錯誤信息無法輸出到文件
[root@localhost?~]#?cat?aaaaaaaaa?>?b
cat:?aaaaaaaaa:?No?such?file?or?directory
[root@localhost?~]#?cat?b

#?錯誤信息被重定向了
[root@localhost?~]#?cat?aaaaaaaaa?>?b?2>&1
[root@localhost?~]#?cat?b
cat:?aaaaaaaaa:?No?such?file?or?directory

6.7、排序

在了解管道的工作原理之后,就可以介紹一下sort命令了。它通??梢院蛈niq(去重)命令聯(lián)合,完成一些排序、去重的操作。首先使用cat命令,生成如下內(nèi)容的文件。

cat?>?sort.txt?<1?11
3?22
2?44
4?33
5?55
6?66
6?66
EOF
```bash
接下來讓這兩個命令上臺表演一下。sort可以使用-t指定分隔符,使用-k指定要排序的列。但是空格,是不需要做這些畫蛇添足的指定的。
```bash
#?根據(jù)第一列倒序排序
[root@localhost?~]#?cat?sort.txt?|?sort??-n?-k1?-r
6?66
6?66
5?55
4?33
3?22
2?44
1?11

#?統(tǒng)計每一行出現(xiàn)的次數(shù),并根據(jù)出現(xiàn)次數(shù)倒序排序
#?此時,行數(shù)由7變成了6
[root@localhost?~]#?cat?sort.txt?|?sort??|?uniq?-c??|?sort?-n?-k1?-r
2?6?66
1?5?55
1?4?33
1?3?22
1?2?44
1?1?11

注意:uniq命令,一般用在已經(jīng)經(jīng)過排序的結(jié)果集上。所以,很多情況需要首先使用sort命令進行排序后,再使用uniq命令。新手經(jīng)常會忘記第一步,造成命令不能正常運行。

6.8、小練習

本部分,我們從文件的屬性開始說起,了解了幾個對文件操作的常用命令。并順便介紹了管道的概念。下面,我們來練習一下。

找到系統(tǒng)中所有的grub.cfg文件,并輸出它的行數(shù)。

分析:首先需要使用find命令,找到這些文件。然后使用xargs逐行處理。最后,使用wc命令,統(tǒng)計確切的行數(shù)。

[root@localhost?grub2]#?find?/?|?grep?grub.cfg?|?xargs?wc?-l
141?/boot/grub2/grub.cfg

輸出系統(tǒng)的group列表

cat?/etc/group?|?awk?-F?':'?'{print?$1}'

下面這個命令輸出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

6.9、思考&擴展

1、Linux的終端,是如何實現(xiàn)彩色的文字的?我要如何輸出一個綠色的Hello World?

2、軟鏈接與硬鏈接有什么區(qū)別?

3、了解幾個偏門但又不是非常偏的命令。

  • cut?有了awk,幾乎不怎么會用cut了
  • tr
  • col
  • paste
  • join
  • split

7. 正則和高級用法

你可能遇到一些棘手的問題,通過搜索得到想要的結(jié)果,但下次還是要通過搜索解決問題,這種低效的手段不是我們所想要的。典型的就是一個線上運維工程師,當問題來臨時,不會給你留太多的現(xiàn)場學習時間。

為了達到更高效的訓練,我們要做兩件事情:第一,總結(jié)歸納;第二,觸類旁通。Linux的命令也是如此,一個問題,通常會有多種解決方式,要通過變化找出其中的共性。

這涉及到一些設計者對于規(guī)范約定俗成的遵守。一般的,你只需要掌握一小部分命令,然后對大批命令達到了解的程度,就可以在命令行的世界里游刃有余。舉個例子,你知道ls是列出文件目錄,你就會聯(lián)想到lscpu是列出cpu信息;lsmem是列出內(nèi)存信息;lsblk是磁盤信息等。這種共性很多,比如top系列,stat系列。

7.1、輔助信息

7.1.1、Linux文件格式

在Linux上工作,是非常非常排斥二進制這種格式的,幾乎什么都是可以讀寫的文本內(nèi)容。大多數(shù)命令生成的結(jié)果,也都是文本文件。這些文件有一些特點,通常列與列都是通過空格或者鍵分隔的。比如下面lsmem的結(jié)果,這種有規(guī)律的,有章可循的文件,是非常容易被處理的。

[root@localhost?~]#?lsmem??
RANGE??????????????????????????????????SIZE??STATE?REMOVABLE?BLOCK
0x0000000000000000-0x0000000007ffffff??128M?online????????no?????0
0x0000000008000000-0x000000000fffffff??128M?online???????yes?????1
0x0000000010000000-0x0000000017ffffff??128M?online????????no?????2
0x0000000018000000-0x0000000027ffffff??256M?online???????yes???3-4
0x0000000028000000-0x000000004fffffff??640M?online????????no???5-9
0x0000000050000000-0x000000005fffffff??256M?online???????yes?10-11
0x0000000060000000-0x000000007fffffff??512M?online????????no?12-15

Memory?block?size:???????128M
Total?online?memory:???????2G
Total?offline?memory:??????0B

有一大批針對于行操作的命令,同樣有一批針對于列操作的命令。然后,有兩個集大成者,叫做sed、awk。由于這兩個命令的內(nèi)容非常多,我們將其列為單獨的章節(jié)。

7.1.2、命令記不住怎么辦?

通常linux命令都十分簡單,但是有些還是有些復雜度的。比如find,ps這種命令,如果要照顧到所有的場合,可能需要非常巨大的篇幅。但是,萬一用到這種偏門的場合怎么辦?

全面了解一下是非常有必要的,以便在使用的時候能夠喚起記憶中最淺顯的印象。然后剩下的,就可以交給類似于man的這種命令了。Linux上的每一個命令,都會有配套的幫助文件,這遠比網(wǎng)絡上那些轉(zhuǎn)來轉(zhuǎn)去的信息,正確的多。

正式介紹一下下面的兩個命令:

  • man?用來顯示某個命令的文檔信息。比如:man ls
  • info?你可以認為和man是一樣的,雖然有一些能夠互補的內(nèi)容。它們會在內(nèi)容中進行提示的
  • --help?很多命令通過參數(shù)--help提供非常簡短的幫助信息。這通常是最有用最快捷的用例展示。如果你根本就記不住一個非常拗口的單詞,那就找找這些地方吧

注意:這些幫助信息,僅集中在命令的作用域本身。對于它的組合使用場景,并沒有過多信息。也就是說,它教會了你怎么用,但并沒有告訴你用它能夠來做什么。

這些幫助命令,一般會通過高亮關鍵字,增加閱讀的體驗。但我們可以更近一步,把幫助文件變成彩色的。在root用戶下,執(zhí)行下面的命令。然后,重新登錄虛擬機。

cat?>>?~/.bashrc?<function?man()
{
????env?\\
????LESS_TERMCAP_mb=\$(printf?"\e[1;31m")?\\
????LESS_TERMCAP_md=\$(printf?"\e[1;31m")?\\
????LESS_TERMCAP_me=\$(printf?"\e[0m")?\\
????LESS_TERMCAP_se=\$(printf?"\e[0m")?\\
????LESS_TERMCAP_so=\$(printf?"\e[1;44;33m")?\\
????LESS_TERMCAP_ue=\$(printf?"\e[0m")?\\
????LESS_TERMCAP_us=\$(printf?"\e[1;32m")?\\
????man?"\$@"
}
EOF

再次執(zhí)行man命令,就可以看到彩色的信息了。

7.1.3、TAB補全

現(xiàn)在,在終端里,輸入ca,然后快速按2次鍵盤,命令行會進入補全模式,顯示以ca打頭的所有命令。

[root@localhost?~]#?ca
cacertdir_rehash?????cache_dump???????????cache_repair?????????cache_writeback??????ca-legacy????????????capsh????????????????case?????????????????catchsegv
cache_check??????????cache_metadata_size??cache_restore????????cal??????????????????caller???????????????captoinfo????????????cat??????????????????catman

如果你對某個命令,只有模糊的印象,只記得前面的幾個字母,這個功能是極好的,命令范圍會一步步縮減。

7.2、正則表達式

為了開始下面的內(nèi)容,我們首先介紹一下正則表達式。在前面的一些命令中,也可以使用這些正則表達式,比如less、grep等。

有些書籍,能夠把正則表達式寫成一本書,我們這里僅作簡單的介紹,但足夠用了。一般的,正則表達式能用在匹配上,還能夠把匹配的內(nèi)容拿來做二次利用。關于后者,我們在sed命令中介紹。

標志意義
^行首
$行尾
.任意單個字符
*匹配0個或者多個前面的字符
+1個或者多個匹配
?0個或者1個匹配
{m}前面的匹配重復m次
{m,n}前面的匹配重復m到n次
[]匹配一個指定范圍內(nèi)的字符
[^]匹配指定范圍外的任意單個字符
\轉(zhuǎn)義字符
[0-9]匹配括號中的任何一個字符,or的作用
|or,或者
\b匹配一個單詞。比如\blucky\b?只匹配單詞lucky

使用下面的命令創(chuàng)建一個文件,我們練習一下grep命令加上E參數(shù)后的正則表現(xiàn)。

cat?>?996?<996:?996?is?a?funcking?thing?.?which?make?woman?as?man?,?man?as?ass?.
we?all?on?the?bus?,?bus?bus?on?the?way?.?996
way?to?icu.?icuuuuuu......
The?greedy?green?boss?rides?on?the?pity?programmer
EOF

在終端執(zhí)行下面命令,注意高亮的部分即為匹配到的字符串。

#?匹配996開頭的行
[root@localhost?~]#?cat?996?|?grep?-E?^996
996:?996?is?a?funcking?thing?.?which?make?woman?as?man?,?man?as?ass?.

#?匹配996結(jié)尾的行
[root@localhost?~]#?cat?996?|?grep?-E?996$
we?all?on?the?bus?,?bus?bus?on?the?way?.?996

#?匹配到icu和icuuuuuu
[root@localhost?~]#?cat?996?|?grep?-E?icu+
way?to?icu.?icuuuuuu......

#?再次匹配到996
[root@localhost?~]#?cat?996?|?grep?-E?[0-9]
996:?996?is?a?funcking?thing?.?which?make?woman?as?man?,?man?as?ass?.
we?all?on?the?bus?,?bus?bus?on?the?way?.?996

[root@localhost?~]#?cat?996?|?grep?-E?^[\^0-9]
we?all?on?the?bus?,?bus?bus?on?the?way?.?996
way?to?icu.?icuuuuuu......
The?greedy?green?boss?rides?on?the?pity?programmer

#?匹配所有不包含996的行,良心命令,淚奔
[root@localhost?~]#?cat?996?|?grep?-E?-v?[0-9]{3}
way?to?icu.?icuuuuuu......
The?greedy?green?boss?rides?on?the?pity?programmer

#?匹配boss和icu
[root@localhost?~]#?cat?996?|?grep?-E?boss\|icu
way?to?icu.?icuuuuuu......
The?greedy?green?boss?rides?on?the?pity?programmer

#?匹配所有行
[root@localhost?~]#?cat?996?|?grep?-E?.
996:?996?is?a?funcking?thing?.?which?make?woman?as?man?,?man?as?ass?.
we?all?on?the?bus?,?bus?bus?on?the?way?.?996
way?to?icu.?icuuuuuu......
The?greedy?green?boss?rides?on?the?pity?programmer

正則表達式非常的重要,在一些sed腳本中,awk腳本中,甚至是vim編輯器中,都會簡化你的操作。以上內(nèi)容應該熟記,達到不需要查找文檔的地步。

下面有6個小問題,可以思考一下。

1、回過頭去,執(zhí)行一下man cat,是否發(fā)現(xiàn)了一個叫做tac的命令?它是干什么的?

2、上面提到的stat系列,你能想象iostat大體是干什么用的么?

3、grep -v是什么意思?

4、了解一下和mv非常像的rename命令來批量修改文件,看能否使用上面的正則。

5、有些命令如果拼寫錯誤,如何快速修正?靠搜索么?了解一下fuck命令。我沒有說錯。

6、下面哪種寫法表示如果cmd1成功執(zhí)行,則執(zhí)行cmd2命令?

  • A. cmd1&&cmd2
  • B. cmd1|cmd2
  • C. cmd1;cmd2
  • D. cmd1||cmd2

8. Linux下的壓縮

壓縮,是一件非常神奇的事情。

很久很久之前,就接觸過一些64KB大小的電影,你花半小時都看不完。事實上,這些動畫的真實容量是15GB,Warez組織把它壓縮了25萬倍

你要是Windows系統(tǒng),可以在這里下載體驗一下。但我們現(xiàn)在講的是Linux,很打臉是不是?

鏈接:?https://pan.baidu.com/s/12YJQ4jsbtRr7RxoLpARTyQ?
提取碼:?r7sp

壓縮是件神奇的事。它能大能小,能伸能縮,在現(xiàn)實中很難找到這樣的東西。

為了減小傳輸文件的大小,或者為了傳輸方便,一般都會開啟壓縮。linux下常見的壓縮文件有tar、bzip2、zip、rar等,7z這種用的相對較少。壓縮之后的文件,非常適合在網(wǎng)絡環(huán)境上傳輸。甚至,你可以認為iso文件為一種特殊的壓縮方式。

.tar?使用tar命令壓縮或解壓.bz2?使用bzip2命令操作.gz?使用gzip命令操作.zip?使用unzip命令解壓.rar?使用unrar命令解壓.Z??使用compress,uncompress

準備工作:使用下面的命令,復制1000個文件。

cd?~
mkdir?files
cd?files
seq?1000?|?xargs?-I?{}?cp??/etc/group??{}

使用ls,就可以看到我們剛才創(chuàng)建的1000個文件。接下來,我們使用壓縮命令將它打包成一個。

#?查看1000個文件的總大小
[root@localhost?files]#?du?-h?.
4.0M?.

#?切換到root目錄
cd?~

#?使用tar進行壓縮,壓縮后的文件不到1MB
[root@localhost?~]#?tar?cvf?files.tar?files

[root@localhost?~]#?du?-h?files.tar
1012K?files.tar

#?使用gizp提高壓縮比,壓縮后的文件只有12KB
[root@localhost?~]#?gzip?files.tar
[root@localhost?~]#?du?-h?files.tar.gz
12K?files.tar.gz

tar和gzip一般是聯(lián)合使用的。tar命令提供了一種特殊的功能,就是可以在打包解包的同時調(diào)用其他的壓縮程序,比如:gzip,bzip2等。

下面的命令,與上面執(zhí)行兩次命令后是等同的。所以,一般使用下面的方式進行操作。

[root@localhost?~]#?tar?cvfz?files2.tar.gz?files
[root@localhost?~]#?du?-h?files2.tar.gz
12K?files2.tar.gz

與之對應的,就是解壓操作。我們只需要改動命令行中的一個字母即可:c->x。但其實,參數(shù)vz也是可以省略的。

[root@localhost?~]#?tar?xvfz?files2.tar.gz

我們更加常用的方式,是加上參數(shù)C,指定一個要解壓的目錄。比如下面的命令,把壓縮內(nèi)容解壓到/opt目錄中。

[root@localhost?~]#?tar?xvfz?files2.tar.gz?-C?/opt/

那如果我僅僅想要看下壓縮文件中包含哪些文件呢?這就要使用參數(shù)t。

  • c?壓縮
  • x?解壓
  • t?查看列表

安裝其他的

我們來看一下常用的zip和rar解壓程序有沒有安裝。

[root@localhost?~]#?which?unzip
/usr/bin/which:?no?unzip?in?(/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin)
[root@localhost?~]#?which?unrar
/usr/bin/which:?no?unrar?in?(/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin)

所以,我們的系統(tǒng)并沒有安裝這兩個應用。那我就使用centos的包管理工具yum安裝一下。java中的jar命令也是與zip類似的,可自行探索。

[root@localhost?~]#?yum?install?-y?zip?unzip?rar?unrar
Loaded?plugins:?fastestmirror
Loading?mirror?speeds?from?cached?hostfile
?*?base:?mirrors.aliyun.com
?*?extras:?mirrors.tuna.tsinghua.edu.cn
?*?updates:?mirrors.aliyun.com
...

rar不能安裝成功,所以rar文件并不能被解壓。沒關系,我們在后面的章節(jié)把它安裝上。

現(xiàn)在,你會在Linux安裝tomcat了么?

接下來,我們思考一下:

1、 經(jīng)過zip壓縮的文件,再使用gzip壓縮,容量還會減少么?

為了驗證這個過程,可以使用dd命令,生成一個69MB大小的隨機文件。dd命令也是個神奇哦。

[root@localhost?~]#?dd?if=/dev/urandom??of=test?bs=1M?count=69
69+0?records?in
69+0?records?out
72351744?bytes?(72?MB)?copied,?0.446161?s,?162?MB/s


[root@localhost?~]#?du?-h?test
69M?test

所以,回到文章最上面,我們可以隨機生成一批文件,讓壓縮效果更有意義一點。

seq?1000?|?xargs?-i?dd?if=/dev/zero?of={}.xjj?bs=1k?count=256

2、如果已經(jīng)有了文件,tar命令是如何做到強制覆蓋的?

9. Linux的權(quán)限體系

我們在最最最上面,剛接觸命令行的時候,就使用chmod命令,給普通文本文件,賦予了執(zhí)行權(quán)限。本小節(jié)將看一下用戶權(quán)限文件權(quán)限這兩個息息相關的概念,

9.1、添加用戶

到現(xiàn)在為止,我們的系統(tǒng)中,還孤零零的只有這一個用戶,是時候?qū)W學女媧,捏幾個小泥人了。

首先創(chuàng)建兩個用戶:張三(zhang3)、李四(li4)。

[root@localhost?~]#?useradd?zhang3

查看下面命令的三個輸出結(jié)果。

#?系統(tǒng)中多了一個叫做zhang3的組,group文件保存了系統(tǒng)的組信息
[root@localhost?~]#?tail?-n1?/etc/group
zhang3:x:1000:

#?系統(tǒng)中多了一個叫做zhang3的用戶,shadow文件保存了它們的密碼。很多安全滲透就是為了拿到它進行暴力破解
[root@localhost?~]#?tail?-n1?/etc/shadow
zhang3:!!:18207:0:99999:7:::

#?home目錄中,多了一個叫做zhang3的目錄
[root@localhost?~]#?ll?/home?--full-time
total?0
drwx------.?2?zhang3?zhang3?83?2019-11-06?22:09:33.357165082?-0500?zhang3

接下來,給我們剛剛建立的用戶,使用passwd設置一個密碼。密碼需要輸入兩次進行確認。如果想要更改密碼,可以使用chpasswd命令。

[root@localhost?~]#?passwd?zhang3
Changing?password?for?user?zhang3.
New?password:
BAD?PASSWORD:?The?password?is?shorter?than?8?characters
Retype?new?password:
passwd:?all?authentication?tokens?updated?successfully.

那么如何刪除一個現(xiàn)有的用戶呢?這是通過userdel命令實現(xiàn)的。加上參數(shù)f,會在其他用戶使用系統(tǒng)的時候,強制退出。

userdel?-f?zhang3

9.2、文件權(quán)限說明

從上面的命令執(zhí)行結(jié)果中,我們發(fā)現(xiàn)了有兩件非常有意思的東西。添加用戶后,除了在密碼文件shadow中增加了一些內(nèi)容,同時還在group文件中添加了信息。這涉及到用戶的兩個屬性:用戶名,組名。

一個用戶只有一個名稱代號,但是可以有多個組。下面命令創(chuàng)建一個密碼為123的用戶li4,并給它追加一個叫做zhang3的組??梢钥吹?code style="">/etc/group文件中的信息變更。

[root@localhost?~]#?useradd??-G?zhang3?-p?123?li4
[root@localhost?~]#?tail?-n?2?/etc/group
zhang3:x:1000:li4
li4:x:1001:

好啦,接下來切換到我們的文件權(quán)限上面。為了進行下面命令的驗證,我們首先創(chuàng)建一個名字叫confirm777.sh的腳本文件。為了讓腳本對所有用戶可見,我們把它創(chuàng)建在/tmp目錄下。

cat?>?/tmp/confirm777.sh?<echo?$USER
id
EOF

使用ll命令查看文件信息。

[root@localhost?~]#?ll?/tmp/confirm777.sh?--full-time
-rw-r--r--.?1?root?root?13?2019-11-07?04:25:55.418254935?-0500?confirm777.sh

ll的命令可以看出,文件的所有者是root用戶,文件所屬的組,也是root組,它的權(quán)限是rw-r--r--。文件權(quán)限分為三部分。

  • 所有者權(quán)限,縮寫為u。文件的所有者所擁有的權(quán)限。也就是root用戶的權(quán)限,是rw-
  • 組用戶權(quán)限,縮寫為g。文件所屬組內(nèi)所有用戶的權(quán)限。因為root組內(nèi)只有root一個用戶,所以組用戶權(quán)限是r--。
  • 其他用戶權(quán)限,縮寫為o。其他不相關用戶的權(quán)限,比如我們剛創(chuàng)建的zhang3、li4用戶,對文件的權(quán)限就是r--。
  • 全部,縮寫為a,表示對上面三類用戶集體操作。

那rw-這些東西是什么意思呢?

  • r??表示可讀權(quán)限。read。
  • w?表示可寫權(quán)限。write。
  • x?表示可執(zhí)行權(quán)限。execute。
  • -??權(quán)限占位符,表示沒有當前權(quán)限。

注意:一個用戶擁有文件的w權(quán)限,并不代表就可以刪除文件。w僅僅針對于文件內(nèi)容來說的。

一個文件,有3類用戶,每類用戶,有3種權(quán)限。使用最簡單的小學乘法,我們能夠得出,一個文件的權(quán)限位,需要3x3=9個標志位表示。

我們的文件名稱,叫做confirm777.sh,這個名字是隨便起的么?當然不是,777在linux代表特殊的含義,它代表文件對所有用戶具有可讀、可寫、可執(zhí)行的權(quán)限??梢韵胂螅绻總€文件都有這樣的權(quán)限,系統(tǒng)將無安全可言。那這一串數(shù)字是怎么來的呢?可以看下面的對照表。

  • r?4?讀
  • w?2?寫
  • x?1?執(zhí)行

對以上三個屬性進行任意組合,可以得到:

  • 4?r--?4+0+0
  • 6?rw-?4+2+0
  • 5?r-x??4+0+1
  • 2?-w-?0+2+0
  • 3?-wx?0+2+1
  • 1?--x?0+0+1
  • 7?rwx?4+2+1

9.3、文件權(quán)限更改

下面介紹三個文件權(quán)限相關的命令。一般常用的,就是chown和chmod。

chown?更改文件的所有者。chgrp?更改文件的組。chmod?更改文件權(quán)限。

接下來,我們把confirm777.sh的所有者和組,修改成剛剛創(chuàng)建的用戶zhang3。

cd?/tmp
[root@localhost?tmp]#?chown?zhang3:zhang3?confirm777.sh
[root@localhost?tmp]#?ll?confirm777.sh
-rw-r--r--.?1?zhang3?zhang3?13?Nov??7?04:25?confirm777.sh

給文件所有者增加執(zhí)行權(quán)限。然后分別切換到zhang3li4用戶執(zhí)行一下。

通過su?命令,可以切換到其他用戶,一般使用su -進行環(huán)境變量的清理;而命令id,能夠看到當前正在執(zhí)行的用戶信息。

[root@localhost?tmp]#?chmod?u+x?confirm777.sh
[root@localhost?tmp]#?su?li4
[li4@localhost?tmp]$?./confirm777.sh
bash:?./confirm777.sh:?Permission?denied
[li4@localhost?tmp]$?exit
exit

[root@localhost?tmp]#?su?zhang3
[zhang3@localhost?tmp]$?./confirm777.sh
root
uid=1000(zhang3)?gid=1000(zhang3)?groups=1000(zhang3)?context=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023

可以看到,文件所有者zhang3可以執(zhí)行文件,但不相關的li4,提示沒有權(quán)限。接下來,我們驗證用戶組相關的權(quán)限位。

#?去掉zhang3的執(zhí)行權(quán)限
root@localhost?tmp]#?chmod?u-x?confirm777.sh
[root@localhost?tmp]#?ll?confirm777.sh
-rw-r--r--.?1?zhang3?zhang3?13?Nov??7?04:25?confirm777.sh

#?增加zhang3組的執(zhí)行權(quán)限,由于li4在zhang3組里,它擁有權(quán)限
[root@localhost?tmp]#?chmod?g+x?confirm777.sh
[root@localhost?tmp]#?ll?confirm777.sh
-rw-r-xr--.?1?zhang3?zhang3?13?Nov??7?04:25?confirm777.sh

#?切換到zhang3進行執(zhí)行
[root@localhost?tmp]#?su?-?zhang3
[zhang3@localhost?tmp]$?./confirm777.sh
bash:?./confirm777.sh:?Permission?denied
[zhang3@localhost?tmp]$?exit
exit

#?切換到li4進行執(zhí)行
[root@localhost?tmp]#?su?-?li4
[li4@localhost?tmp]$?./confirm777.sh
root
uid=1001(li4)?gid=1001(li4)?groups=1001(li4),1000(zhang3)?context=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023

從命令的執(zhí)行結(jié)果可以看出。這次,li4能夠執(zhí)行文件,相反的,zhang3卻不能。

我們使用chmod命令來修改文件權(quán)限,使用的是類似于a+x這樣的英文字母。拿第一個腳本來說,初始的權(quán)限是rw-r--r--,也就是644,在這種情況下,下面的兩個腳本等效。

chmod?u+x?confirm777.sh
chmod?744?confirm777.sh

可以看到,第二個命令,使用的是數(shù)字樣式的權(quán)限位,多了一步人腦轉(zhuǎn)換過程。這在日常的使用中,是非常不方便的。所以,使用符號法的表示方式,能夠更加直觀,非常推薦。

為了更直觀的表現(xiàn)這個過程,我專門制作了一張圖。

9.4、目錄權(quán)限

這里有一個非常有意思的地方。把文件設置成可執(zhí)行,可以把普通文件變成腳本,目錄文件的可執(zhí)行權(quán)限是什么鬼?有什么意義?對文件夾來說:

  • r?表示允許讀取目錄中的文件名,但不能進入該目錄
  • w?表示允許用戶修改目錄,可以創(chuàng)建、遷移、刪除、更名目錄下的文件
  • x?可以獲得目錄下文件的列表,以及進入目錄,執(zhí)行cd命令

關于r和x的區(qū)別,可以看下面的命令結(jié)果,仔細感受一下它們的區(qū)別。一般的,幾乎所有的目錄,都擁有執(zhí)行權(quán)限,不要隨意對其進行設置。

[root@localhost?tmp]#?su?-?li4
[li4@localhost?~]$?cd?/tmp

[li4@localhost?tmp]$?mkdir?nox
[li4@localhost?tmp]$?touch?nox/{a,b,c,d}
[li4@localhost?tmp]$?chmod?a-x?nox
[li4@localhost?tmp]$?ls?nox
ls:?cannot?access?nox/a:?Permission?denied
ls:?cannot?access?nox/b:?Permission?denied
ls:?cannot?access?nox/c:?Permission?denied
ls:?cannot?access?nox/d:?Permission?denied
a??b??c??d
[li4@localhost?tmp]$?cat?nox/a
cat:?nox/a:?Permission?denied

[li4@localhost?tmp]$?chmod?a+x?nox
[li4@localhost?tmp]$?chmod?a-r?nox
[li4@localhost?tmp]$?ls?nox
ls:?cannot?open?directory?nox:?Permission?denied

9.5、sticky bit

接下來,我們介紹一個比較燒腦的粘貼位。

假如你要刪除一個文件,你可以沒有這個文件的寫權(quán)限,但是你必須要擁有這個文件上級目錄的寫權(quán)限。如何創(chuàng)建一個目錄,可以讓任何人些人文件,但是又不能刪除其他用戶的文件?這就是stick bit的作用。粘貼位一般只用于目錄上,對文件來說并沒有什么用處。粘貼位一般使用t表示。

我們可以看一個典型的目錄/tmp

[root@localhost?tmp]#??ls?-dl?/tmp
drwxrwxrwt.?9?root?root?4096?Nov??7?06:27?/tmp

可以看到,最后一位,顯示的是t,而不是x,意思是普通用戶不能刪除其他用戶的文件。所有用戶在/tmp目錄中,都可以隨意創(chuàng)建文件,但是卻刪除不了其他人的文件,即使文件的權(quán)限是777

[root@localhost?tmp]#?touch?/tmp/stick
[root@localhost?tmp]#?chown?li4:li4?/tmp/stick
[root@localhost?tmp]#?chmod?777?/tmp/stick
[root@localhost?tmp]#?su?-?zhang3
[zhang3@localhost?~]$?rm?/tmp/stick
rm:?cannot?remove?‘/tmp/stick’:?Operation?not?permitted

我們在上面創(chuàng)建了兩個用戶zhang3和li4,并拿它們測試了chown和chmod命令,最后介紹了粘貼位。linux比較安全的原因,就是因為有比較詳盡的權(quán)限劃分。但權(quán)限是枚雙刃劍,超權(quán)用戶一個命令就可以搞垮系統(tǒng),許多隱藏的木馬,通過提權(quán)運行在不為人知的地方。

權(quán)限相關的幾個命令會經(jīng)常被使用,下面舉幾個例子。

#?設置/var/lib/mysql的用戶和組為mysql
chown?-R?mysql:mysql?/var/lib/mysql

#?設置目錄可讀可寫,能夠上傳文件
chmod??777?/var/www/uploads

#?增加本目錄下所有sh的執(zhí)行權(quán)限
chomd?a+x?*.sh

#?變更file為可讀可寫可執(zhí)行
chmod?u=rwx,g=rwx,o=rwx?file

下面依然是思考時間:

1、下面這個命令,執(zhí)行以后,會發(fā)生什么情況?警告:不要執(zhí)行,哪怕把000改成其他數(shù)字。

#?R遍歷子目錄的意思
chmod?-R?000?/

2、有一天,我看到一個命令chmod u+s file,文中并沒有介紹s是什么意思,這是什么意思?

3、如何刪除一個用戶的組?

10. 如何對磁盤進行操作?

下面的場景非常的恐怖,對有些程序員來說可以是一場噩夢。

一大早剛剛?cè)ド习?,煎餅果子剛啃了一半,幾個全副武裝的警察就闖進了公司。二話不說控制住了工作人員,并守株待兔的等著魚兒來上班。

原因就是:公司涉嫌存儲和擴散非法文件,需要查封所有的服務器進行徹查。

這些文件,有的簡單的放在磁盤上,有的放在文件存儲服務器上,有的,被切成了多片放在了不同的廉價機器上。

接下來會發(fā)生什么,要看技術(shù)人員的水平,但估計結(jié)果并不會太好。

在上一小節(jié),我們創(chuàng)建了兩個普通用戶,這兩個用戶沒什么本事,和默認的用戶root比起來,它們的權(quán)限就小得多。除了自己目錄下的文件,其他的,它幾乎都沒有權(quán)限去修改。

這些文件,肯定是要存在磁盤上的。對磁盤的管理,有非常多的命令,這一小節(jié)的內(nèi)容,對于系統(tǒng)管理員來說,經(jīng)常使用;但對于開發(fā)來說,就要求比較低一些。因為開發(fā)只需要知道小電影存在什么地方了,不需要知道小電影是怎么存的。

那定罪的時候,運維和程序員,到底是誰的鍋更大一些?其實是個悖論。運維人員在發(fā)呆的時候,腦子里回憶起了下面的知識。

10.1.添加新硬盤

你要是一個系統(tǒng)管理員,甚至是一個上了云的系統(tǒng)管理員,現(xiàn)在買了一塊aws的擴展盤,它是不能被使用的。需要經(jīng)過格式化掛載以后,才能投入生產(chǎn)。

還記得在安裝系統(tǒng)的時候么?其中有一步,需要對虛擬機的磁盤,進行劃分,我們直接采用默認的方式。不過現(xiàn)在已經(jīng)改不了了,它已經(jīng)是過去式了。

為了模擬對磁盤的管理,我們需要首先給虛擬機新加一塊虛擬磁盤。首先,使用shutdown -h now命令關閉機器,進行下面的操作。

1、?進入settings選項,然后切換到storage,添加磁盤

2、?點擊創(chuàng)建一塊磁盤

3、?選擇VDI

4、?動態(tài)擴容,用多少擴多少

5、?我們創(chuàng)建一塊2GB大的,叫做disk2的磁盤

啟動機器。遠程連接192的ip,別忘了執(zhí)行dhclient命令。

首先使用fdisk看一下目前的磁盤狀況。

root@localhost?~]#?fdisk?-l

Disk?/dev/sda:?8589?MB,?8589934592?bytes,?16777216?sectors
Units?=?sectors?of?1?*?512?=?512?bytes
Sector?size?(logical/physical):?512?bytes?/?512?bytes
I/O?size?(minimum/optimal):?512?bytes?/?512?bytes
Disk?label?type:?dos
Disk?identifier:?0x000c2410

???Device?Boot??????Start?????????End??????Blocks???Id??System
/dev/sda1???*????????2048?????2099199?????1048576???83??Linux
/dev/sda2?????????2099200????16777215?????7339008???8e??Linux?LVM

Disk?/dev/sdb:?2147?MB,?2147483648?bytes,?4194304?sectors
Units?=?sectors?of?1?*?512?=?512?bytes
Sector?size?(logical/physical):?512?bytes?/?512?bytes
I/O?size?(minimum/optimal):?512?bytes?/?512?bytes


Disk?/dev/mapper/centos-root:?6652?MB,?6652166144?bytes,?12992512?sectors
Units?=?sectors?of?1?*?512?=?512?bytes
Sector?size?(logical/physical):?512?bytes?/?512?bytes
I/O?size?(minimum/optimal):?512?bytes?/?512?bytes


Disk?/dev/mapper/centos-swap:?859?MB,?859832320?bytes,?1679360?sectors
Units?=?sectors?of?1?*?512?=?512?bytes
Sector?size?(logical/physical):?512?bytes?/?512?bytes
I/O?size?(minimum/optimal):?512?bytes?/?512?bytes

從命令的結(jié)果,我們看到了有兩塊磁盤。/dev/sda/dev/sdb,其中sda已經(jīng)被分配,已經(jīng)被我們的文件系統(tǒng)所占用。現(xiàn)在,回憶一下/dev目錄的用途,在這個目錄下,存放了一些設備文件,假如我們再添加一塊磁盤,它的句柄就應該是sdc?(sd*)。

在這整塊磁盤能夠被使用之前,我們需要對它進行三次操作。

  1. 磁盤分區(qū)
  2. 磁盤格式化
  3. 磁盤掛載

10.2.分區(qū)

對磁盤分區(qū)依然是fdisk命令,以下命令,將進入交互模式。在交互模式中,輸入n新建分區(qū)。由于我們的磁盤只有2GB,所以只創(chuàng)建一個分區(qū)就好。根據(jù)向?qū)?,一路確定向下,最后,輸入w確定寫入分區(qū)表,同時退出命令交互。

再次執(zhí)行fdisk -l,可以看到已經(jīng)多了一塊2gb大小的分區(qū)。

[root@localhost?~]#?fdisk?/dev/sdb
...
[root@localhost?~]#?fdisk?-l
...
???Device?Boot??????Start?????????End??????Blocks???Id??System
/dev/sdb1????????????2048?????4194303?????2096128???83??Linux
...

10.3.格式化

在命令行,輸入mkfs,然后按進行補全,將會顯示一批命令。

[root@localhost?~]#?mkfs.
mkfs.btrfs???mkfs.cramfs??mkfs.ext2????mkfs.ext3????mkfs.ext4????mkfs.minix???mkfs.xfs

這批命令,都可以對磁盤進行格式化。目前,最常用的磁盤格式是ext4。但我們并沒有找到windows操作系統(tǒng)的FAT以及NTFS等格式,但它們在概念上是等同的。

下面介紹一下Linux下常用的磁盤格式。

  • btrfs?GPL授權(quán)。是為了替換ext系統(tǒng)而發(fā)起的。不熟悉,不過多評價。
  • cramfs?門針對閃存設計的只讀壓縮的文件系統(tǒng),其容量上限為256M,采用zlib壓縮,很少用
  • ext2?ext的早先版本。
  • ext3?ext2的改進。
  • ext4?使用最多。如果對其他的不熟悉,老老實實用ext4吧。
  • minix?比較古老,也不常用。
  • xfs?XFS 文件系統(tǒng)是擴展文件系統(tǒng)的一個擴展,是 64 位高性能日志文件系統(tǒng)。centos7.0開始的默認文件系統(tǒng)。

我們就錄鄉(xiāng)隨俗,將磁盤給格式化成xfs。

[root@localhost?~]#?mkfs.xfs?/dev/sdb1

注意:如果想要把磁盤格式化成fat32的格式,需要安裝一個軟件。

?yum?install?dosfstools?-y

10.4.掛載

最后一步,是使用mount命令掛載磁盤。我們把它掛載到/data目錄。

df命令能夠看到系統(tǒng)的磁盤使用狀況,參數(shù)hhuman的意思,以比較容易讀的方式展現(xiàn)信息;lsblk則以另一個角度查看系統(tǒng)磁盤掛載情況。

[root@localhost?~]#?mkdir?/data
[root@localhost?~]#?mount?/dev/sdb1?/data
[root@localhost?~]#?df?-h
Filesystem???????????????Size??Used?Avail?Use%?Mounted?on
devtmpfs?????????????????908M?????0??908M???0%?/dev
tmpfs????????????????????920M?????0??920M???0%?/dev/shm
tmpfs????????????????????920M??8.6M??911M???1%?/run
tmpfs????????????????????920M?????0??920M???0%?/sys/fs/cgroup
/dev/mapper/centos-root??6.2G??1.4G??4.9G??22%?/
/dev/sda1???????????????1014M??149M??866M??15%?/boot
tmpfs????????????????????184M?????0??184M???0%?/run/user/0
/dev/sdb1????????????????2.0G???33M??2.0G???2%?/data

root@localhost?~]#?lsblk??-f
NAME????????????FSTYPE??????LABEL?UUID???????????????????????????????????MOUNTPOINT
sda
├─sda1??????????xfs???????????????ac3a3ce8-6ab1-4c0b-91c8-b4e617f0dfb4???/boot
└─sda2??????????LVM2_member???????3GzmOd-TUc1-p2ZN-wT5q-ttky-to9l-PF495o
??├─centos-root?xfs???????????????9f86f663-060a-4450-90f9-3005ad9c5d92???/
??└─centos-swap?swap??????????????cf8709b0-b0ab-4d44-a23e-ad76f85efad6???[SWAP]
sdb
└─sdb1??????????xfs???????????????0a7c861c-1a31-45b3-bf37-c72229f35704???/data

為了能夠在開機的時候加載磁盤,我們需要修改/etc/fstab文件。這種文件修改的時候一定要小心,否則會造成系統(tǒng)無法啟動。

[root@localhost?~]#?echo?"/dev/sdb1??xfs?defaults?0?0"?>>?/etc/fstab
[root@localhost?~]#?cat?/etc/fstab
/dev/mapper/centos-root?/?xfs?defaults????????0?0
UUID=ac3a3ce8-6ab1-4c0b-91c8-b4e617f0dfb4?/boot??xfs?????defaults????????0?0
/dev/mapper/centos-swap?swap????swap????defaults????????0?0
/dev/sdb1???????????????????????xfs?????defaults????????0?0

10.5.交換分區(qū)

由于內(nèi)存的容量有限,現(xiàn)在的操作系統(tǒng),都會使用磁盤模擬一個虛擬內(nèi)存區(qū)域,用于緩沖一些數(shù)據(jù)。由于磁盤的速度和內(nèi)存不可同日而語,通常會造成應用程序的卡頓??w卡,應用進程卻可以因此茍延殘喘,續(xù)命。

swap分區(qū),即交換區(qū),系統(tǒng)在物理內(nèi)存不夠時,與swap進行交換。即當系統(tǒng)的物理內(nèi)存不夠用時,把硬盤中一部分空間釋放出來,以供當前運行的程序使用。當那些程序要運行時,再從swap分區(qū)中恢復保存的數(shù)據(jù)到內(nèi)存中。

現(xiàn)代互聯(lián)網(wǎng)公司,一般對接口的響應時間有比較高的要求,swap分區(qū)一般是禁用的。關于swap,有下面幾個相關的命令。

#?制作交換分區(qū)
[root@localhost?~]#?mkswap?/dev/sdb1

#?禁用所有交換分區(qū)
[root@localhost?~]#?swapoff?-a

#?啟用交換分區(qū)
[root@localhost?~]#?swapon

10.6 使用dd命令進行備份

下面的命令,將直接備份磁盤A到磁盤B。

#?dd?if=/dev/sda?of=/dev/sdb

在上面的命令中,if代表輸入的文件,of代表輸出的文件。根據(jù)Linux下一切皆文件的原理,這里的文件指的就是設備。

dd命令還可以將整個磁盤打包成一個鏡像文件。比如下面的命令。

#?dd?if=/dev/hda?of=~/hdadisk.img

當然,恢復磁盤的時候,也是相當簡單的,我們只需要逆向操作就可以了。

#?dd?if=hdadisk.img?of=/dev/hda

良許個人微信


添加良許個人微信即送3套程序員必讀資料


→ 精選技術(shù)資料共享

→ 高手如云交流社群





本公眾號全部博文已整理成一個目錄,請在公眾號里回復「m」獲??!

推薦閱讀:

致 Linux 運維:當你的服務器被黑了,一定要看是不是犯了這 5 點錯誤

Typora + GitHub = 效率

費解!為什么那么多人用“ji32k7au4a83”作密碼?


5T技術(shù)資源大放送!包括但不限于:C/C++,Linux,Python,Java,PHP,人工智能,單片機,樹莓派,等等。在公眾號內(nèi)回復「1024」,即可免費獲取??!


瀏覽 95
點贊
評論
收藏
分享

手機掃一掃分享

分享
舉報
評論
圖片
表情
推薦
點贊
評論
收藏
分享

手機掃一掃分享

分享
舉報

感谢您访问我们的网站,您可能还对以下资源感兴趣:

国产秋霞理论久久久电影-婷婷色九月综合激情丁香-欧美在线观看乱妇视频-精品国avA久久久久久久-国产乱码精品一区二区三区亚洲人-欧美熟妇一区二区三区蜜桃视频 一区二区三区在线观看免费 | 亚洲伊人综合| 亚洲日本中文字幕在线观看| 黑人粗暴偷拍一区二区| 深爱五月婷婷| 国产无码播放| 一区二区三区在线观看免费 | 青青草小视频| 日韩一区二区在线看在线看| 久久中文字幕综合| 欧美A片在线观看| 69精品无码成人久久久久久| 国产成人精品无码| 亚洲黄色在线免费观看| 黄色电影一级| 一区二区三区四区视频| 搡BBBB搡BBB搡我瞎了| www.国产| 人人爽人人做| 国产69AV| 亚洲日韩一区二区三区| 亚洲AV成人片色在线观看麻豆| 四虎黄色网| 日韩欧美123| 国产在线播放91| 91视频美女| 成人肏逼视频在线| 欧美三级片视频| 天天人人精品| 日韩精品人妻中文字幕第4区| 久久8| 国产1区在线观看| 2025av中文字幕| 麻豆AV96熟妇人妻| 精品欧美一区二区精品久久| 一级黄色片免费| 中文字幕VA| 久久国产2025| 一本色道精品久久一区二区三区| 蜜臀AV在线| 国产精品久久视频| 图片区小说区区亚洲五月| 国产第56页| 国产一区二区三区免费观看| 99re视频在线播放| 青草青青视频| 日韩人妻精品无码久久边| 亚洲永久| 久久精品成人电影| 99久久精品国产精品有折扣吗| 日韩欧美精品18| 国产毛片久久久久久久| 亚洲AV毛片成人精品网站| 欧美性爱a视频| 亚洲av性爱| 超碰在线| av高清无码| 強姧伦一区二区三区在线播放| 国产色色色色| 天天做天天爽| 免费视频一区二区三区四区| 99久久国产热无码精品免费| 青青操色| 思思热思思操免费视频| AV天堂影视在线观看| 青娱乐伊人| 午夜成人福利剧场| 日本黄色视频在线免费观看| 在线观看操逼| 色99在线| 婷婷乱伦| 怕怕怕视频| 18禁片网站| 国产一级美女操逼视频免费播放| 波多野结衣高清无码| 伊人色五月| 免费看无码一级A片在线播放| 欧美特黄AAAAAAAAA片| 亚洲精品资源在线| 91探花秘在线播放偷拍| 嘉兴少妇按摩69XX| yjizz视频| 中文字幕免费AV| 国产女人高潮毛片| 色色激情网| 豆花视频在线免费观看| 成人欧美一区二区三区在线观看| 伊人色色色| 丁香五月婷婷视频| 少妇熟女视频一区二区三区| 国产午夜精品视频| 四川少妇搡bbbb搡bbbb| 2019中文字幕在线| 午夜免费播放观看在线视频| 91最新在线播放| 一区二区三区精品| 91香蕉视频| 一区二区三区日韩| 一级av| 亚洲天天操| 日韩视频免费在线观看| 永久免费一区二区三区| 亚洲特黄| 狼人久久| 欧美在线天堂| 九九九免费视频| 国产高清在线观看| 日韩无码电影网| 国产精品无码一区二区在线欢| 日韩色情片| 91蝌蚪丨人妻丨丝袜| 大香蕉人人| 亚洲免费视频在线播放| 爱爱91| 国产日韩精品无码去免费专区国产 | 91超碰在线免费观看| 97自拍视频| www.国产在线观看| 亚洲高清无码专区| 91乱子伦国产乱子伦!| 西西人体WW大胆无码| 五月婷婷av| 五月丁香六月婷| 99视频免费看| 大香蕉99| 欧美日韩国产不卡视频| 国产无遮挡又黄又爽在线观看| 毛片天堂| 91一区在线观看| 高清无码网站在线观看| 男人视频网站| 亚洲中文无码电影| 亚洲欧美日韩高清| 九色PORNY蝌蚪自拍视频| 久久国产黄色视频| 婷婷五月在线观看| 九九热在线观看| 国内精品无码| 亚洲天堂在线观看视频| 日韩中文字幕一区二区三区| 国产寡妇亲子伦一区二区三区四区 | 99精品视频免费看| 人人射人人操| 探花av| 伊人大香蕉网| 天天干天天撸影视| 天堂无吗| 手机看片1024你懂的| 色婷婷成人网| 搡老熟女-91Porn| 一区二区黄| 安徽妇搡BBBB搡BBBB| 亚洲综合视频在线观看| 天天摸天天操| 51无码| 日韩综合不卡| 日本中文字幕亚洲| 国产区av| 蜜臀av网| 久久久天堂| 欧美日韩在线电影| 天天撸一撸视频| 日韩午夜福利| 国产1区2区| 国产乱子伦-区二区三区| 人人妻人人爽| 操b国产| 一级婬片A片AAAAA毛片| www.xxx国产| 中文在线一区| 97精品国产97久久久久久免费| 韩国无码一区二区三区| 亚洲综合激情| 欧美五月在线网址| 国产在线观看一区| 成人一区二区在线观看| 无码无码无码| 中文字幕2018第一页| 波多野成人无码精品69| 黄色激情五月天| 999成人电影| 国产精品一区二区AV日韩在线| 久久97人妻AⅤ无码一区| 97国产在线观看| 狠狠无码| 在线一区二区三区四区| 麻豆三级片| 五月亭亭在线视频| 四虎影成人精品A片| 天天摸天天干| 91中文字幕+乱码| 91香蕉在线| 成人电影亚洲天堂| 黄一区二区| gogogo日本免费观看高清电视剧的注意 | 永久免费AV无码| 蜜臀久久99精品久久久久久婷婷| 天天做天天爽| 狠狠狠狠狠狠| 另类老妇性BBBWBBW| 九九伊人大香蕉| 91热爆TS人妖系列| 999一区二区三区| www.黄色在线观看| 国产高清做爱| 国产91嫩草乱婬A片2蜜臀| 日日搔AV一区二区三区| 黄片天堂| 美女做爱网站| 成人色播播| 天堂中文资源在线观看| 99热这里只有精品7| 俺去俺来也www色官网cms| 香蕉视频国产| 大香蕉亚洲成人| 一级a一级a爰片免费免免中国A片| 韩国一区二区三区| 国产又爽又黄在线看视频| 奇米狠狠干| 日韩黄在线| 屁屁影院CCYYCOM发布地| 91大香蕉视频| 欧美精品在线视频| 男女操逼视频网站免费观看| 天天毛片| 91久久成人| 亚洲三级在线播放| 亚洲无码在线观看视频| 日本親子亂子倫XXXX| 久久精品在线播放| 你懂的视频网站| 操逼视频在线观看| 91精品少妇| 天天干妹子| 91久操| 欧美性受XXXX黑人XYX性爽| 亚洲图片中文字幕| 亚洲综合日韩| 无码视频在线观看免费| 欧美爆操视频| 一本之道高清数码大全| 国产办公室丝袜人妖| 在线观看污视频| 強暴人妻一区二区三区| 青青草视频免费| 草b视频| 91乱伦视频| 伊人成人在线视频观看| 欧美日韩综合网| 欧美性爱XXXX| 黄色A片电影| 一本道视频在线| 色综合天天综合| 亚洲AV无码电影| 九鼎联盟骗子| 人人射人人射| 伊人狠狠蜜桃亚洲综合| 韩国AV在线| www.黄色大片| 久久99久久99| 久久99深爱久久99精品| 亚洲自拍天堂| 日韩啪啪啪网站| 婷婷狠狠| 女人自慰在线观看| 激情视频综合网| 无码毛片一区二区三区人口| 木下凛凛子AV888AV在线观看| 六十路老熟女码视频| 亚洲理论视频| 欧美中文字幕在线| 亚洲综合片| 久久久黄色视频| 日韩激情无码| 国产伦精品一区二区三区妓女下载| 亚洲AV性爱| 国产精品成人片| 欧美性生活视频| 日本中文字幕免费| 免费看一区二区三区A片| 久久精品无码一区二区无码性色| 亚洲成人影音| 国产成人在线播放| 乱伦一区二区三区| 亚洲国产精品成人久久蜜臀| 久操视频一区二区三区| 亚洲免费AV在线| 亚洲无码一本道| 国产男女性爱视频播放| 黄色一级视频在线观看| 97精品综合久久| 成人黄网在线观看| 日韩精品免费在线观看| 搡BBBB搡BBB搡Bb| 港澳日韩黄片| 欧美性受XXXX黑人XYX性爽冫| 成人二区| 亚洲日本三级| 成人免费在线观看| 欧美日韩精品一区二区三区| 上床视频网站| 中文字幕乱妇无码Av在线| 国产成人黄色片| 久草视频首页| 国产黄色电影| 成人网站在线看。| 亚洲精品偷拍| 亚洲欧美日韩免费| 色婷婷在线无码精品秘人口传媒| 成人电影亚洲天堂| 永久久久久久久| 欧美老女人操逼| 91偷拍与自偷拍精品无码| 久久精品www人人爽人人| 大香蕉尹人在线| 青青草视频免费| 91在线小视频| 日韩中文字幕区| 国产综合婷婷| 色色免费黄色视频| 大香蕉伊人综合网| 人人草人人干| 成人精品秘久久久按摩下载| 无码免费视频在线观看| 日韩不卡高清在线观看视频| 男人日女人视频| 91中文字幕| 欧美熟妇搡BBBB搡BBBBB| 色男人色天堂| 亚洲AV电影在线| 色婷婷Av| 五月丁香在线播放| 在线精品福利| 五月色综合网| 伊人影院久久| 亚洲色吧| 青久久久| 99视频免费看| 欧美A级成人婬片免费看| 欧美性精品| 高潮无码在线观看| 国产XXXXX| 夜夜天天人人| 精品久久久久久久久久久| 日屄在线观看| 怮交小拗女小嫩苞视频| 欧美亚洲成人精品| 北条麻妃毛片| 国内成人精品网站| 高清无码日本| 久久91久久久久麻豆精品 | 久操不卡| 亚洲AV秘一区二区色盗战流出| 无码颜射| 成人av黄色三级片在线观看| 欧美囗交大荫蒂免费| 天天操B| 天天撸在线| 婷婷六月天| 欧美午夜激情视频| 9991区二区三区四区| www天天干| 婷婷五月视频| 色色色热热热| 日韩无码性爱| 精品国产免费无码久久噜噜噜AV | 欧美一区二区三区系列电影| 99这里有精品视频| 日本黄色精品| 91丨PORNY丨丰满人妻网站| 青草青青视频| 搡bbb| 性欧美一区二区| 国产操操操| 黄色a在线| 欧美熟妇精品黑人巨大一二三区| 日本绿色精品视频| 亚洲中午字幕| 亚洲国产精品尤物yw在线观看| www.99爱| 日本黄色电影在线播放| 亚洲无码福利| 久久色片| 干老女人逼| 天堂成人网站| 日韩人妻码一区二区三区| 国产欧美精品成人在线观看 | 亚洲无码中| 蜜桃免费视频| 一级香蕉视频| 欧美日韩视频在线| 中文字幕在线观看二区| 肏少妇女情人大骚逼直播一区二区| 欧美AⅤ在线| 黄频美女日本免费| 大香蕉中文网| 91人妻一区二区| 国产三级片精品| 国产成人精品a区在线观看| caopor在线| 成人一区二区电影| 免费的黄色视频| 91.xxxx| 波多野结衣网址| 亚洲尤物在线| 男人天堂手机视频| 久久久久久久大香蕉| 久久99草| 国产成人精品免高潮在线人与禽一| 男人天堂无码成人| 波多野结衣亚洲无码| 国产www视频| 久久蜜| 欧美成人视频网| 一本一道vs波多野结衣| 五月天激情性爱| 人人澡av| 99乱伦| 毛片A片免费看| 黄色片网站在线观看| 日韩在线观看中文字幕| 成人一级精品| 天天天天日| 一级a一级a爱片兔兔软件| 狠狠躁日日躁夜夜躁A片无码| 人人操狠狠操| 99热久| 青草视频在线| 日韩欧美成人网站| 一级a片在线免费观看| 国产伊人久久| 美女网站永久免费观看| 一级AV片| 久久极品| 91麻豆国产在线| 91看片| 亚洲精品国产成人AV在线| 996热久久| 亚洲另类色图| 91人妻一区二区三区| 亚洲高清无码在线免费观看| 日韩AV毛| 青娱乐在线精品| 亚洲香蕉在线视频| 五月丁香亚洲综合| 国产a√| 无码AV动漫| 天堂在线视频免费| 成人福利网站| 人人色在线观看| 五月天婷婷在线无码| JiZZjiZZ亚洲成熟熟妇| 久久青草免费视频| 人妻精品一卡二卡| 国产又爽又黄在线看视频| 麻豆午夜福利视频| 青青草AV| 国产精品成人在线| 影音先锋三级资源| 搡BBBB推BBBB推BBBB| AV中文在线观看| www.色色网| 日本爱爱视频| 午夜福利在线视频| 天天操欧美| 欧美性爱永久| 日韩成人小电影| 天干天干天夜夜| 手机在线成人视频| 国产乱子伦一区二区三精品| 欧美熟妇BBB搡BBB| 日韩不卡免费| 操逼视频国产| 欧美高清无码在线观看| 欧美一级A片免费看视频小说| 亚洲免费观看高清| 成人无码日韩| 国产精品久久AV电影| 亚洲精品成人av无码| 黄色一级a片| 日皮视频在线观看免费| 亚洲一级黄色片| 91在线一区二区三区| 国产欧美综合在线三区| 色撸撸在线视频| 人妻电影亚洲av| 免费看黄片,在线观看| 亚洲天堂在线观看免费视频| 国产成人精品a区在线观看| 青青草99| 老婆被黑人杂交呻吟视频| 开心五月色婷婷综合开心网| 欧美肏屄视频| 男女做爱视频网站| 久操超碰| 国产一区视频在线| 无码人妻一区二区三区精品不付款 | 激情五月天导航| 欧美一区在线视频| 夫妻成人免费看片一区二区| 午夜AV在线观看| 国产精品v欧美精品v日韩精品| 欧美成人A片| 99久在线精品99re8热| 特黄在线| 青春草在线免费观看| 国产欧美在线| 国产成人高潮毛片| 特级西西444www无码视频免费看| 色中色av| 玖玖热在线视频| 成人无码区免费A片久久鸭| 日韩午夜福利视频| 亚洲激情黄色| 奇米色婷婷| 婷婷深爱激情| 成年人免费看视频| 免费一级婬片AAA片毛片A级| 亚洲精品区| 色五月网| 欧美A片在线播放| 亚欧美日韩| 中文字幕福利电影| 亚洲黄色av| 亚洲日韩在线免费观看| 2020人妻中文字幕| 黄色片A片| 人妻黄色视频| 免费人成视频在线播放| 人妻公日日澡久久久| 少妇搡BBBB搡BBBB毛多多| 丰满人妻无码| 成人免费黄色视频网站| 骚骚网站| 巨乳国产一区| 人人爽人人澡| 丁香婷婷一区二区三区| 亚洲精品熟女| 成人黄色AV| 精品视频网| 欧美精品乱码99久久蜜桃| 无码av高清| 国产熟妇搡BBBB搡BBBB搡| 四川搡BBBBB搡BBB| AAA激情| 美女一级变态毛片| 色噜噜狠狠一区二区三区Av蜜芽| 黄色亚洲| 午夜无码人妻AV大片| 伊人99re| 免费国产成人看片在线| 五月天综合在线| 亚洲国产精品精JIZZ老师| 中文字幕观看| 欧美一级黄色电影| 五月婷亚洲精品AV天堂| 九色首页| 先锋AV资源在线| 日本一本视频| 亚洲777| 免费亲子乱婬一级A片| 国产精品美女| 大香蕉久| 麻豆回家视频区一区二| 天天综合久久| 大香蕉A片| 欧美黄色电影网站| 伊人大香蕉在线观看| 国产传媒三级| 久操国产| 三级片无码| 国产三级视频| 欧美色图15p| 色就是色欧美| 操逼视频在线播放| eeuss一区| 99久久综合| 尿在小sao货里面好不好| 91探花秘入囗| 人人操人人爽| 亚洲vs无码秘蜜桃少妇| 亚洲综合另类| 亚洲a级| 自拍亚洲欧美| 免费涩涩无遮挡18国产| 牛牛无码| 欧美精品无码久久久精品酒店| 操B网站| 成人性爱在线观看| 午夜成人网站| 毛片视频免费观看| 亚洲秘无码一区二区三区胖子| 网址你懂的| 91精品人妻一区二区三区| 人人妻人人澡| 欧美性爱操逼视频| 欧洲肥胖BBBBBBBBBB| 欧美黄网站| 亚洲AV官方网站| 日韩高清无码免费| 综合色国产精品欧美在线| 亚洲AV秘一区二区色盗战流出| 大香蕉99热| 欧美国产精品一区二区三区| 免费观看一级A片| 欧洲天堂在线视频网站| AV资源在线| 免费人妻视频| 欧美精品一二三| 一区二区视频在线| 黄色电影a片| 亚洲无码视频专区| 少妇av| 92丨九色丨偷拍老熟女| 日韩人妻无码一区| 亚洲AⅤ| 蝌蚪AV| 国产小毛片| 中文字幕国产一区| 日本中文字幕网站| 少妇bbw搡bbbb搡bbbb| 中文av字幕| 成人免费A片| 黄片高清免费观看| 中文字幕日韩乱伦| 男女拍拍拍拍| 黄色电影a片| 俺也去视频| 99久久精品国产精品有折扣吗| 黄色大片在线免费观看| 91国产精品视频在线| 国产精品久久毛片| 午夜福利h| 国产色自拍| 西西444大胆无码视频| 美女视频一区二区三区| 亚洲中字幕新| 欧美无人区码suv| 黄色在线观看免费| 日本草逼视频| 天天拍夜夜操| 国产精品99久久久久的广告情况 | 国产熟妇婬乱A片免费看牛牛| 黄色毛片视频| 九七色色电影| 日韩视频在线观看一区| 亚洲超碰在线观看| 精品无码专区| 精品久久视频| 欧美在线观看网站18| 懂色av懂色av粉嫩av| 女同久久另类99精品国产91 | 婷婷激情五月天丁香| 亚洲天堂一| 特级艺体西西444WWw| 奇米色色色| 另类老太婆性BBWBBw| av在线资源观看| 亚洲国产精品成人综合| 日韩精品一区二区三区黄冈站长| 欧美综合第一页| 五月天婷婷色色| 岛国无码av| 99久久99久久久精品棕色圆 | 7799精品| 一区二区三区成人电影| 色婷婷天天操天天干| 国产无限资源| 日日操夜夜爽| 成人网站视频在线观看| 蜜臀久久99精品久久一区二区| 伊人免费成人视频| 欧美性受XXXX爽XYX熟99 | 可以免费看的av| 久热久| 特黄色A级片视频| 亚洲中文字幕在线视频观看| 精品视频在线免费观看| 狠操网| 强开小嫩苞一区二区三区网站| 操在线视频| 亚洲V视频| 安徽妇搡BBBB搡BBBB,另类老妇| 日韩欧美视频在线播放| 高清无码视频免费观看| 无码人妻A片一区二区青苹果 | 99精品视频免费在线观看| 另类老妇极品BBWBBw| 中文字幕12页| 97大香蕉在线视频| 久草资源在线观看| 久久九热| 日韩欧美视频在线| 99国产精品免费视频观看8| 欧美日本国产| 精品久久无码中文字幕| 波多野结衣日韩| 人人做人人爱人人做人人乐的意思| 精品久久久久久亚洲| 色网站在线观看| 在线无码| 亚洲一卡二卡三卡四卡免| 91三级视频| 欧美性爱高清| 亚洲黄色视频网站在线观看| 成人在线视频观看| 久久无码在线观看| 男插女青青影院| 一区二区三区免费| 国产乱伦片、| 91九色网| 一级黄片学生妹| 欧美成人网站视频| 俺来了俺去也| 四虎www| 麻豆精品传媒国产剧的特点| 天天操天天操天天操天天| 久久久久久免费一级A片| 嫩草国产在线| jt33免费观看高清| 亚洲无码免费看| 亚洲一区二区久久| 人人操人人摸人人| 久久久偷拍视频| 天天骑夜夜操| 国产AV大香蕉| 欧美性性生交XXXXX无码| 日韩一级一片| 天天日天天操天天摸天天干天日射天天插 | 日韩免费av| 日韩激情一区二区| 欧美女人操逼| 午夜操一操一级| 成人爱爱免费视频| 中文字幕av在线| 亚洲www在线| 一级成人视频| 亚洲一级婬片A片AAAA网址| 国产超级无码高清在线视频观看| 五月婷婷导航| 精品视频网| av天堂中文在线| 操BBBB| 久色| 国产亚洲视频完整在线观看| 99成人精品| 91亚洲精华国产精华精华液| 国产人妻一区二区精选| 人人看人人爱| 一牛影视精品av| a毛片| 大鸡巴日| 大陆一级片| 黄色录像一级带| 97看片| 久久久久久黄片| 玖玖国产| 免费一级网站| 91你懂的| 亚洲无码色色| 亚洲口味重一级黄片| 人人干人人干人人干| 国产精品乱码毛片在线人与| 色综合天天综合| 成人在线视频一区| 国产一区二区三区在线视频| 久久无码免费| 日韩无码人妻一区二区| 一本色道无码人妻精品| 猫咪AV成人永久网站| 成人免费激情视频| 自拍做爱视频| 东方成人av| 97人人艹| 免费看a的网站| 亚洲精品无码更新| 秋霞无码| 人妻少妇无码精品| 日韩精品无码一区二区| 天天日天天干麻豆| 亚洲永久天堂| 亚洲欧美不卡| 欧美午夜在线| 欧美视频中文字幕| 免费看黄色AV| 日本不卡视频| av资源免费| 三级片AV在线| 久久AV电影| 欧美高清无码视频| 大鸡巴操小逼视频| 国产综合第一页| 男女黄色免费网站| 91精品在线播放| AAAAA毛片| 亚洲视频观看| 免费看操逼| 国产永久精品| 精品玖玖| 亚洲无码精品视频| 国内精品久久久久| 风间由美大荫蒂无码AV| 欧美日韩在线免费观看| 亚洲成人无码网站| 人人爽网站| 国产福利网站| 91AV在线电影| 二区三区视频| 色94色.欧美.setu| 你懂的在线视频| 久久久久久黄片| 国产三级黄| 天天射天天爽| 国产久久视频| 亚洲日韩精品欧美一区二区yw | AV成人无码| 蜜桃91精品入口| 超碰手机在线| 色狠狠网| 国产精品V日韩精品V在线观看| 少妇做爱特级AAA| 免费一级无码婬片A片AAA毛片| 青青草原在线| 特级西西444WWW高清| 丁香五月婷婷视频| 北条麻妃视频在线| 伊人久久国产| 五月天婷婷网站| 国产g蝌蚪| 午夜激情av| 中文字幕日韩电影| 日欧内射| 国产一区亚洲| 日韩无码精品视频| 黄色视频久久| 成人网站www污污污网站公司| 日韩欧美国产黄色电影| 中文字幕无码在线| 久久WW| 69福利网| 国产理论在线| 成人性在线| 91精品一区| 中文字幕精品无码一区二区| 日韩欧美黄色电影| 三须三级久久三级久久18| 国产一级在线免费观看| 日本黄A级A片国产免费| 伊人久久大综合中文无码| 99操99| 91丨国产丨熟女熟女| 影音先锋成人资源AV在线观看| 999在线视频| 日韩精品一区二区三区黄冈站长| 91在线无码| 国产福利美女网站| 九九热视频在线观看| 中文字幕av无码| va色婷婷亚洲在线| 激情无码一区二区三区| 女人一级A片色黄情免费| 親子亂子倫XXXX| 成人免费A片在线观看直播96| 免费成人三级片| 免费色色网站| 伊人网在线免费视频| 五月丁香啪啪啪| 黄色毛片视频| 影音先锋成人资源网| 成人无码久久| 久草电影在线观看| 亚洲视频天天射| 国产一区亚洲| 成人视频123| 天天综合久久| 亚洲V视频| 日韩免费在线播放| 天天插天天日| 中文字幕亚洲视频在线观看| 日韩在线国产| 中文字幕综合在线| 一区二区精品视频| 另类老妇性bbwbbwbbw| 亚洲福利视频电影精| www.久草| 亚洲AV无码国产精品| 九九成人视频| 在线免费观看无码| 中日韩特黄A片免费视频| 久久国产精品99久久人人澡| 日本黄色视频。| 色噜噜网站| 天堂va欧美ⅴa亚洲va一夜| 福利视频免费观看| 91人妻日韩人妻无码| 性久久久久久| 免费观看黄色成人网站| 免费国产A片| 天天操天天干天天日| 久久久久女人精品毛片九一|