Linux達人養成計劃1

Cacra發表於2018-07-31

慕課網課程的筆記

1.基礎知識:

Linux分為核心版本和釋出版本

Linux核心官網:www.kernel.org

Linux主要發行版本:debian ununtu redhat(用的最多) centos 等

開源軟體:絕大多數開源軟體免費、可以獲得軟體原始碼、可以自由傳播改良甚至銷售。但是開源是指原始碼開放,開源不等於免費。

www.netcraft.com :檢視網站的一些技術資訊。

AIX是IBM開發的Unix、CentOS是RedHat系列的Linux、Debian是由社群開發和維護的Linux、Ubuntu是一個以桌面應用為主的Linux。

windows裡面才叫dos介面,Linux裡面叫命令列操作/介面。

Linux中所有內容以檔案形式儲存,包括硬體。

Linux不靠副檔名區分檔案型別(是通過許可權區分),但有一些約定俗成的(副檔名不是說一定要有,只是方便使用者操作):

  • 壓縮包:.gz、.bz2、.tar.bz2、.tgz等
  • 二進位制軟體包:.rpm
  • 網頁檔案:.html、.php
  • 指令碼檔案:.sh
  • 配置檔案:.conf

虛擬機器快照:儲存虛擬機器某一時間狀態。

FAT16:最大隻能支援2GB的分割槽

FAT32:單個檔案不能超過4GB,分割槽小於4TB

NTFS:Windows最新的檔案系統

Linux支援:EXT2、EXT3、EXT4。

Linux主分割槽:最多隻能有4個。

Linux擴充套件分割槽:

  • 最多隻能有1個擴充套件分割槽。
  • 主分割槽加擴充套件分割槽最多有4個,就是隻能拿一個主分割槽當擴充套件分割槽。
  • 不能寫入資料,只能包含邏輯分割槽,就是將擴充套件分割槽劃分為邏輯分割槽。

格式化:格式化又稱邏輯格式化,它是指使用者選定的檔案系統(如FAT16、FAT32、NTFS、EXT2、EXT3、EXT4等),在磁碟的特定區域寫入特定資料,在分割槽中劃出一片用於存放檔案分配表、目錄表等用於檔案管理的磁碟空間。

格式化的最終目是寫入檔案系統,並不是清空資料,格式化時主要做兩個事:

  • 1、將硬碟分割成等大小的資料塊(預設4kb,可以調節);
  • 2、建立二維表格(分割槽相當於櫃子,櫃子上面又二維表格),表格內容包括ID號、修改時間、許可權、檔案儲存位置等,目的是為了快速查詢檔案所在資料塊,ID號這裡面稱為I node。每個分割槽裡都有儲存ID,修改時間,訪問許可權的區塊。

Linux裡面把目錄(/etcpasswd/)當作碟符。

必須有的分割槽:

  • /(根分割槽)
  • swap分割槽(交換分割槽[可以理解為虛擬記憶體],記憶體2倍,不超過2GB)

推薦分割槽:

  • /boot(啟動分割槽,200MB)

這裡寫圖片描述

分割槽裝置檔名解析:

/dev/hda1 這個 hda1  的 a 代表第一個硬碟(若是b即代表第二個硬碟),1代表第一個分割槽,hd代表IDE硬碟介面

/dev/sda1 這個 sda1  的 a 代表第一個硬碟,1代表第一個分割槽,sd代表SCSI硬碟介面或者SATA硬碟介面

硬體裝置檔名:

這裡寫圖片描述

Linux:分割槽-格式化-給分割槽起裝置檔名-分配碟符(Linux稱為掛載點)

這裡寫圖片描述

碟符—是軟體級的概念,分割槽—是硬體級概念,當Windows啟動的時候,它會檢測電腦已連線的所有硬碟上它能夠識別的分割槽(NTFS、FAT32等),並自動為其分配碟符。這個分配碟符的過程,就是掛載(mount)過程,只不過這個過程完全不用你參與。具體來說就是,Windows把第一分割槽關聯到c:這個碟符,第二分割槽關聯到d:這個碟符等等。這樣,軟體中的磁碟管理概念和實際的硬碟分割槽緊密關聯,二者才具有真正的實用意義。

分割槽就是把磁碟分成幾個邏輯部分,碟符就相當於給分好的這幾部分各起一個名字,碟符是windows中的概念,就比如C盤、D盤之類的;碟符在linux中叫掛載點,在linux中是拿目錄作為碟符的。

碟符是Windows裡的概念,在Linux裡類似的東西叫掛載點。分割槽是指把磁碟分為不同的資料儲存區域,在Windows裡,要經過三步,分割槽,格式化,碟符;而在Linux裡,要多一步,分四步,分割槽,格式化,取名,掛載點,所以,分割槽與掛載點(碟符),是在不同步驟下做的不同的事。

關於掛載可以參考,很詳細:
https://www.cnblogs.com/ma5on/p/4357625.html
http://forum.ubuntu.org.cn/viewtopic.php?t=257333

掛載:根檔案系統之外的其他檔案要想能夠被訪問,都必須通過“關聯”至根檔案系統上的某個目錄來實現,此關聯操作即為“掛載”,此目錄即為“掛載點”,解除此關聯關係的過程稱之為“解除安裝”。

更多資訊可以參考:https://www.linuxidc.com/Linux/2016-08/134666.htm

密碼原則:

  • 複雜性
    八位字元以上、大小寫字母、數字、符號
    不能是英文單詞
    不能是和使用者相關的內容
  • 易記憶性
  • 時效性(一般90天更換一次)

安裝日誌:

  • /root/install.log 儲存了安裝在系統中的軟體包及其版本資訊。
  • /root/install.log.syslog 儲存了安裝過程中留下的事件記錄。
  • /root/anaconda-ks.cfg 以Kickstart配置檔案的格式記錄安裝過程中設定的選項資訊。

2.命令基本格式:

root@localhost: ~#
yangyang@ubuntu:~$
yangyang@ubuntu:~/test$

引數:

  • root:當前登入使用者
  • localhost:主機名
  • ~:當前所在目錄(家目錄)[輸入pwd可以看見這個目錄],比如管理員的家目錄:/root,user1的家目錄是/home/user1
  • # 超級使用者的提示符 普通使用者的提示符是$

命令格式:

命令 [選項] [引數]

注意:個別命令使用不遵循此格式;當有多個選項時,可以寫在一起;簡化選項與完整選項,-a等於–all。

查詢目錄中內容:

ls [選項] [檔案或目錄]
ls(ll命令就是ls -l的簡寫)

選項:

  • -a 顯示所有檔案,包括隱藏檔案
  • -l 顯示詳細資訊
  • -d 檢視目錄屬性
  • -h 人性化顯示檔案大小
  • -i 顯示inode
  • -lh 檔案大小以易懂的方式顯示
  • -ld 檢視目錄本身的資訊,例如許可權等 [ls -ld /home/yangyang/test]

程式碼示例:

~$ ls -l
total 36
d rwxr-xr-x 3 yangyang yangyang 4096 Apr 10 05:36 Desktop
...
//上面3是引用計數,第一個yangyang是檔案所有者,第二個yangyang是所屬組,4096是檔案大小。

3.檔案處理命令:

目錄處理命令:

mkdir -p [目錄名]  
    -p 遞迴建立
mkdir bols
mkdir -p japan/cang/bols [建立多層次目錄時,要加-p引數,這樣才可以遞迴建立]

切換所在目錄:

cd [change directory]
簡化操作:
cd ~ 進入當前使用者的家目錄(直接跳到家目錄,~本身就是代表家目錄)
cd
cd - 進入操作的上一次目錄
cd .. 進入上一級目錄
cd . 進入當前目錄(也可以使用pwd,檢視現在的目錄)

相對路徑:參照當前所在目錄,進行查詢。如:[root@imooc ~]# cd ../usr/local/src/(../就是表示上一級目錄,然後再新增後面目錄,./就是指當前目錄)

絕對路徑:從根目錄開始指定,一級一級遞迴查詢。在任何目錄下,都能進入指定網址。

查詢所在目錄:

pwd

刪除空目錄:rmdir

rmdir [只能刪除空目錄,不能包含檔案]

刪除檔案或目錄:rm

rm -rf [檔案或目錄] 
例如:rm -rf test 全部刪除test下面所有的檔案,包括test本身
選項:[rm本來是刪檔案的,加-r可以刪除目錄,加-f可以強制刪除全部,不用一條條回覆]
    -r 刪除目錄
    -f 強制

複製目錄/檔案:cp

cp [選項] [原檔案或目錄] [目標目錄]
    -r 複製目錄 [不加-r只能複製檔案到目錄,加上可以複製目錄到目錄]
    -p 連帶檔案屬性複製
    -d 若原始檔是連結檔案,則複製連結屬性
    -a 相對於-pdr(就是上面的總和,這樣原始檔和目標檔案就一模一樣了,屬性,時間期限等)
注:
cp test1 demo/test2 複製檔案時可以改名,這個就是複製到demo資料夾下面,且名字改為test2
cp test Picture/test1 複製資料夾,這個就是test複製到資料夾Picture下面資料夾test1裡面。

剪下或改名命令:mv

mv [原檔案或目錄] [目標檔案]
注:
不論是剪下檔案還是資料夾,都不用-r這個選項
如果原始檔和目標檔案一樣時,可以理解為改名命令。

4.常見目錄作用:

這裡寫圖片描述

根目錄下的bin和sbin,usr目錄下的bin和sbin,這四個目錄都是用來儲存系統命令的。(bin是一般使用者就可以執行的命令,sbin是root使用者才可以執行的命令)。

proc和sys目錄不能直接操作,這兩個目錄儲存的是記憶體的過載點。

可以在家目錄root或home,以及tmp目錄下隨便放內容。

5.連結命令:

連結命令;ln(原檔案生成一個目標檔案)

ln -s [原檔案] [目標檔案] 
選項:-s 建立軟連結

硬連結特徵:

  • 擁有相同的i節點和儲存blcok塊,可以看做是同一個檔案
  • 可通過i節點識別
  • 不能跨分割槽(建立硬連結)
  • 不能針對目錄使用

注:相當於不同名字,但是對應的資訊列表一樣,對應i節點一樣,指向的block塊也一樣。因此刪除一個硬連結,不影響另一個指向對應的block塊。所以硬連結相當於一個檔案的不同接入點。

軟連結特徵:

  • 類似windows快捷方式
  • 軟連結擁有自己的I節點和Block塊,但是資料中只有儲存原檔案的檔名和I節點號,並沒有實際的檔案資料
  • lrwxrwxrwx |軟連結 軟連結檔案許可權都為rwxrwxrwx
  • 修改任意檔案,另一個都改變(注意:建立時原檔案要寫全路徑,不然修改原檔案,軟連結不可用)
  • 刪除原檔案,軟連結不能使用

對於上面4、5兩條的理解可以利用下面程式碼:

ln -s /home/yangyang/test/test3 test4
ln -s test3 test5

軟連結是索引塊中目標檔名,而不是目標檔案inode,如果是inode,刪除目標檔案,因為有硬連結的存在,使得inode依然存在,則軟連線依然有效,所以記錄的不是檔案inode;而且如果我們刪除目標檔案,在新建一個相同檔名的檔案(內容不同),則軟連線就再次有效了,所以軟連線記錄的是目標檔名,而不是inode;此時,硬連結和軟連線的資料是不同的。

通俗理解:

  • 一個是你原檔案沒有了,這個連結就失效了(軟連結),類似於windows快捷方式。
  • 一個是你原檔案沒有了。這個檔案還在(硬連結)。

6.檔案搜尋命令:

  • 檔案搜尋命令locate
  • 命令搜尋命令whereis與which
  • 檔案搜尋命令find
  • 字元搜尋命令grep
  • find命令與grep命令的區別

檔案搜尋命令locate命令格式:

locate 檔名
//在後臺資料庫中按檔名搜尋,搜尋速度更快
/var/lib/mlocate
//locate命令所搜尋的後臺資料庫的路徑,即會在上面的路徑下進行搜尋
updatedb(sudo updatedb)
//因為是在路徑中搜尋,不能保證實時搜到新建立的檔案,所以搜尋之前可以更新資料庫

locate比較快,但是功能單一;find比較強大,但是速度相對較慢。

搜尋命令的命令whereis、which:

whereis 命令 名
結果顯示,搜尋命令所在路徑及幫助文件的所在位置
選項:
    -b 值查詢可執行檔案
    -m 值檢視幫助檔案
which:
    相對whereis,還可以看見別名,配置檔案等,如果命令有這些資訊的話。

PATH環境變數:定義的是系統搜尋命令的路徑

find命令:

find [搜尋範圍] [搜尋條件]
find /home/yangyang -name test1
find搜尋的檔名必須與搜尋條件中的檔名一模一樣。如果需要模糊匹配,可以使用萬用字元。
避免大範圍搜尋,會非常耗費系統資源。
find是在系統當中搜尋符合條件的檔名。如果需要匹配,使用萬用字元匹配,萬用字元是完全匹配。

萬用字元:

  • *匹配任意多個內容
  • ?匹配任意一個字元
  • []匹配任意一箇中括號內的字元
find /hoem/yangyang -name "ab[cd]" 
那麼可以找到abc abd這樣的檔案

find /root -iname install.log
不區分大小寫
find /root -user root
按照所有者搜尋(所有者是root)
find /root -nouser
查詢沒有所有者的檔案

核心產生、外來檔案(win拷進Linux)可以沒有所有者。

find /var/log/ -mtime +10
查詢10天前修改的檔案
-10 10天內修改的檔案
10 10天當天修改的檔案
+10 10天前修改的檔案

atime 檔案訪問時間
ctime 改變檔案屬性
mtime 修改檔案內容

find . -size 25k(.表示當前目錄,也可以使用路徑)
查詢檔案大小是25kb的檔案
-25k 小於25kb的檔案
25k 等於25kb的檔案
+25k 大於25kb的檔案

find . -inum 262422(.表示當前目錄,也可以使用路徑)
查詢i節點是262422的檔案

find /etc -size +20k -a-size -50k
查詢/etc/目錄下,大於20KB並且小於50KB的檔案
-a and 邏輯與,兩個條件都滿足
-o or 邏輯或,兩個條件滿足一個即可
find /etc -size +20k -a -size -50k -exec ls -lh {}\;
查詢/etc/目錄下,大於20KB並且小於50KB的檔案,並顯示詳細資訊
-exec/-ok 命令 {}\;對搜尋結果再次執行命令,進行篩選。

搜尋字串命令grep:

grep [選項] 字串 檔名
在檔案當中匹配符合條件的字串
選項:
    -i 忽略大小寫
    -v 排除指定字串

grep "size" anaconda-ks.cfg
搜尋anaconda-ks.cfg檔案中,還有size的行。

find命令與grep命令的區別:

  • find命令:在系統當中搜尋符合條件的檔名,如果需要匹配,使用萬用字元匹配,匹配符是完全匹配。
  • grep命令:在檔案當中搜尋符合條件的字串,如果需要匹配,使用正規表示式進行匹配,正規表示式時包含匹配。

7.Linux幫助命令:

man 命令
獲取指定命令的幫助

man ls
檢視ls的幫助

man命令級別:
    1 檢視命令的幫助
    2 檢視可被核心呼叫的函式的幫助
    3 檢視函式和函式庫的幫助
    4 檢視特殊檔案的幫助(主要是/dev目錄下的幫助)
    5 檢視配置檔案的幫助
    6 檢視遊戲的幫助
    7 檢視其它雜項的幫助
    8 檢視系統管理員可用命令的幫助
    9 檢視和核心相關檔案的幫助

檢視命令擁有哪個級別的幫助:
man -f 命令

相當於:
whatis 命令 [whereis 命令 更多的資訊]

man -f passwd(含有兩個級別)
passwd (1)
passwd (5)[然後檢視15兩個命令]

man 1 passwd
man 5 passwd

相關文章