標籤:linux 伺服器 基本知識
以第一篇博文大概總結一下通過預習第三期課程學到的Linux基本知識,但是都放在一塊的話估計字數會太多,感覺差不多了就重開一篇。總結之前先來扯扯淡。作為一個資深的細桶假狗屎,不懂點基本的Linux操作似乎有點說不過去,開發完成以後不能獨立動作伺服器更新版本什麼的簡直naive。最重要的是,我還聽說了一個有點玄乎的結論,那就是有部落格並且堅持寫部落格的假狗屎||攻城獅||程式猿要比沒有部落格或者不能堅持寫部落格的工資水平要高出不少(多希望在這不不是部落格而是微博,麼麼噠)。好了,淡也扯了,言歸正傳,走起~
1.系統磁碟分割一般規則:
/boot 200M
swap 實際記憶體的2倍,但不超過8G
/ 剩餘全部空間
當然,這隻是最基本的一種分區策略,實際應用中可以分出/data,專門存放各種資料,或者給使用者家目錄單獨分區存放使用者資料,具體情況根據實際需求進行調整。
可以通過以下命令來查看分區情況:
[[email protected]~ ]# fdisk -l
2.連結檔案--永久連結和軟串連:
[[email protected] ~]# ln 被連結檔案 連結檔案 --> 永久連結
[[email protected] ~]# ln -s 被連結檔案 連結檔案 --> 軟連結
註:如果連結檔案不存在,自動產生;如果連結檔案存在,提示連結失敗,解決辦法是使用 -f 參數,強制連結,覆蓋可能存在的連結檔案。
★兩者區別:
(1)永久連結後連結檔案和被連結檔案的 inode 相同,軟串連則不同。
(2)永久連結後,連結檔案為普通檔案(即通過 stat, file, ll 等命令查看連結檔案時為regular file),而軟連結後,連結檔案為symbolic link類型,ll時也會指向其連結的檔案。
(3)永久連結後,刪除被連結檔案,連結檔案照常使用。軟串連後,刪除被連結檔案,連結檔案不能使用。
(4)永久連結只能用於連結普通檔案,連結目錄檔案時報錯:
ln: `link/‘: hard link not allowed for directory
軟串連沒有這種限制,可以用來連結目錄。這裡還要特別說明一點,將目錄做軟串連後,刪除時需要注意,比如:
[[email protected] learn]# ln -s ./link/ test //這裡不能是test/這種目錄形式
[[email protected] learn]# rm -rf test //這裡不能是test/這種目錄形式
如果將以上的test寫為test/這種形式會報錯。原因大概是因為連結檔案test的檔案類型是symbolic link,而不是directory。
(5)永久連結不能跨分區連結,比如想要將/boot分區下的檔案連結到/根分區下,會報錯:
ln: creating hard link `/test‘ => `/boot/test‘: Invalid cross-device link
軟串連無此限制,可以跨分區連結。
註:可以簡單的將永久連結理解為一種cp,只是該cp會將inode的值一併cp過來。同時使用這種cp會增加連結檔案和被連結檔案的節點數(即通過 ll 命令查看時的第二列數值)。
3.Linux系統分層及RAID:
使用者
↑
檔案系統
↑
RAID
↑
物理硬碟1 物理硬碟2 ……
其中,RAID分為以下幾種,作用不同;
RAID 0 -- 增加寫入速度
RAID 1 -- 鏡像,為了安全
RAID 3 -- 最少需要三塊物理硬碟,是RAID 5的過度版本
RAID 5 -- 最少需要三塊物理硬碟
在做完RAID後,幾塊物理硬碟看起來就是一塊硬碟一樣
RAID 0 假如有兩塊100G的物理硬碟做成,則該RAID 0可使用空間為200G
RAID 1 假如有兩塊100G的物理硬碟做成,則該RAID 1可使用空間為100G(鏡像)
RAID 5 假如有三塊100G的物理硬碟做成,則該RAID 5可使用空間為200G(一塊物理硬碟拿出去做同位)
註:這裡說的RAID是物理RAID,而非系統在分區時的邏輯RAID。邏輯RAID不推薦使用,物理RAID一般由硬體供應商做好,這一塊知識瞭解一下就行。
4.Linux系統添加硬碟及使用硬碟:
為Linux虛擬機器添加新硬碟時:
(1)硬碟類型選擇IDE,則Linux中路徑為/dev/hda(hdb, hdc...順序排列)
(2)硬碟類型選擇SCSI,則Linux中路徑為/dev/sda(sdb, sdc...順序排列)
註:經過實驗發現,CentOS 6.6中不管是IDE硬碟還是SSCI硬碟,在Linux中都是/dev/sd*這種形式,而非視頻中所說的IDE為/dev/hd*,可能是因為在CentOS6.6或者更早的版本中已經取消了SSCI和IDE在命名上的區別。在為虛擬機器添加新的硬碟後,SSCI排在IDE前面,如,開始時有兩塊IDE硬碟,分別為/dev/sda和/dev/sdb,之後添加一塊SSCI硬碟,此時三塊硬碟為/dev/sda(SSCI),/dev/sdb(IDE), /dev/sdc(IDE)。
使用新添加的硬碟(又稱裸裝置)需要三步:分區 --> 格式化 --> 掛載
(1)分區:
[[email protected] ~]# fdisk /dev/sdb
根據提示資訊進行分區, n --> 建立
p --> 主要磁碟分割 83 Linux
e --> 擴充分區 5 Extended
p + e 個數 <= 4, 編號從1-4
擴充分區可以再分區,分為l --> 邏輯分區 83 Linux,邏輯分區編號從5-more。分區完成後,在Command中,p查看該硬碟分區情況,q不儲存退出,w儲存退出。
(2)格式化:
[[email protected] ~]# mkfs.ext4 /dev/sdb1 //將/dev/sdb硬碟下的/sdb1分區格式化為ext4檔案系統,檔案系統有ext1,ext2,ext3,ext4版本,版本越高越穩定,現在一般使用的檔案系統都為ext4。
(3)掛載:
[[email protected] ~]# mkdir /data
[[email protected] ~]# mount /dev/sdb1 /data
即可完成掛載,通過
[[email protected] ~]# df -hT
命令可以看到分區的掛載資訊和使用方式,此時/dev/sdb1分區已掛載在/data目錄下。注意,這樣掛載只是暫時的,系統重啟後會失效。解決方案有兩種。第一種:
[[email protected] ~]# vim /etc/fstab
修改該檔案,添加新的一行:
/dev/sdb1 /data ext4 defaults 0 0
儲存退出即可。第二種:
[[email protected] ~]# vim /etc/rc.d/rc.local //或者 vim /etc/rc.local,這兩個檔案為軟串連,/etc/rc.local為連結檔案,/etc/rc.d/rc.local為被連結檔案。添加新的一行:
mount /dev/sdb1 /data
儲存退出即可。補充一點,/etc/rc.local檔案是系統啟動時最後執行的檔案,想讓系統啟動後幫你做的事都可以寫到該檔案中。另外,
[[email protected] ~]# fdisk -l
[[email protected] ~]# df -Th
兩條命令都可以查看分區,其中,fdisk -l查看的主要是分區表資訊,而df -Th側重的是已經格式化並掛載後的檔案系統,包括容量大小、使用方式、掛載點及檔案系統類型等。(df -Th查看不到swap交換分區,查看交換分區需要使用fdisk -l,如下:
Device Boot Start End Blocks ID System
/dev/sda2 26 287 2097152 82 Linux swap / Solaris
)
5.強大的find命令:
在介紹 find 命令之前先來看一看 stat 命令:
[[email protected] ~]# stat /tmp/learn/test.log
該命令用來查看檔案的詳細資料(不特別說明的話,Linux中的檔案都是指廣義上的檔案,既包括普通檔案,又包括目錄檔案),包括檔案類型、inode值、許可權、所屬使用者、Uid、所屬使用者組、Gid、檔案大小、最後訪問時間atime,最後修改時間mtime,最後改變時間ctime等 ,這三個時間經常配合find命令對檔案進行操作,那麼什麼是atime,mtime和ctime,又有什麼命令會影響他們呢?
atime --> 訪問時間 vi vim cat head tail more less
mtime --> 修改時間 echo vi、vim(儲存退出操作,即便沒有修改任何內容)
ctime --> 改變時間 echo vi、vim(同上) chmod chown chgrp
這裡注意,使用echo進行輸出重新導向或者追加內容時,並沒有訪問檔案,所以不會改變atime。你是否想到,ls -l 命令查看檔案詳情時也有一個時間,那裡所列出的時間是mtime。
說完了stat 命令和三個時間,該find 命令登場了,不用過多介紹,來看幾個例子先:
(1)請尋找/目錄下檔案名稱為test.log的檔案:
[[email protected] ~]# find / -name test.log
(2)請尋找/tmp目錄下inode號為261132的檔案,並將其刪除:
[[email protected] ~]# find /tmp -inum 261132 -exec rm -rf {} \;
(3)請尋找/root目錄下三天前修改的所有檔案,且檔案名稱為test的檔案:
[[email protected] ~]# find /root -mtime +3 -name test //或者,更寬泛一點
[[email protected] ~]# find /root -mtime +3 | grep test
(4)請尋找/var目錄下10分鐘內被訪問過的檔案:
[[email protected] ~]# find /var -amin -10
(5)請尋找/dev目錄下檔案類型為塊裝置的檔案:
[[email protected] ~]# find /dev -type b //f,d,b,s,c,p,l,D <-- 檔案類型
上面幾個例子列出來find命令比較常用的一些查詢條件,比如檔案名稱,inode值,atime,amin,ctime,cmin,mtime,mmin,檔案類型,這些條件能夠組合使用,對查詢結果進行操作使用-exec,格式為-exec 操作命令 {} \; 。
第一篇寫了不少了,不過也只總結了一小部分,下一遍咱們繼續總結,see you~~~
本文出自 “細桶假狗屎” 部落格,請務必保留此出處http://xitongjiagoushi.blog.51cto.com/9975742/1619923
權當開篇——Linux學習之路(一)