前言
這篇文章做一下Linux系統相關的記錄,後續再深入學習研究Linux的相關內容。
Linux 系統目錄結構
[root@hostname ~]# ls /
bin data etc lib lost+found mnt proc run srv tmp var
boot dev home lib64 media opt root sbin sys usr
複製程式碼
樹狀目錄結構:
以下是對這些目錄的解釋:
- /bin:bin是Binary的縮寫, 這個目錄存放著最經常使用的命令。
- /boot:這裡存放的是啟動Linux時使用的一些核心檔案,包括一些連線檔案以及映象檔案。
- /dev:dev是Device(裝置)的縮寫, 該目錄下存放的是Linux的外部裝置,在Linux中訪問裝置的方式和訪問檔案的方式是相同的。
- /etc:這個目錄用來存放所有的系統管理所需要的配置檔案和子目錄。
- /home:使用者的主目錄,在Linux中,每個使用者都有一個自己的目錄,一般該目錄名是以使用者的賬號命名的。
- /lib:這個目錄裡存放著系統最基本的動態連線共享庫,其作用類似於Windows裡的DLL檔案。幾乎所有的應用程式都需要用到這些共享庫。
- /lost+found:這個目錄一般情況下是空的,當系統非法關機後,這裡就存放了一些檔案。
- /media:linux系統會自動識別一些裝置,例如U盤、光碟機等等,當識別後,linux會把識別的裝置掛載到這個目錄下。
- /mnt:系統提供該目錄是為了讓使用者臨時掛載別的檔案系統的,我們可以將光碟機掛載在/mnt/上,然後進入該目錄就可以檢視光碟機裡的內容了。
- /opt:這是給主機額外安裝軟體所擺放的目錄。比如你安裝一個ORACLE資料庫則就可以放到這個目錄下。預設是空的。
- /proc:這個目錄是一個虛擬的目錄,它是系統記憶體的對映,我們可以通過直接訪問這個目錄來獲取系統資訊。這個目錄的內容不在硬碟上而是在記憶體裡,我們也可以直接修改裡面的某些檔案,比如可以通過下面的命令來遮蔽主機的ping命令,使別人無法ping你的機器:
echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_all
複製程式碼
- /root:該目錄為系統管理員,也稱作超級許可權者的使用者主目錄。
- /sbin:s就是Super User的意思,這裡存放的是系統管理員使用的系統管理程式。
- /selinux:這個目錄是Redhat/CentOS所特有的目錄,Selinux是一個安全機制,類似於windows的防火牆,但是這套機制比較複雜,這個目錄就是存放selinux相關的檔案的。
- /srv:該目錄存放一些服務啟動之後需要提取的資料。
- /sys:這是linux2.6核心的一個很大的變化。該目錄下安裝了2.6核心中新出現的一個檔案系統 sysfs 。sysfs檔案系統整合了下面3種檔案系統的資訊:針對程式資訊的proc檔案系統、針對裝置的devfs檔案系統以及針對偽終端的devpts檔案系統。該檔案系統是核心裝置樹的一個直觀反映。當一個核心物件被建立的時候,對應的檔案和目錄也在核心物件子系統中被建立。
- /tmp:這個目錄是用來存放一些臨時檔案的。
- /usr:這是一個非常重要的目錄,使用者的很多應用程式和檔案都放在這個目錄下,類似與windows下的program files目錄。
- /usr/bin:系統使用者使用的應用程式。
- /usr/sbin:超級使用者使用的比較高階的管理程式和系統守護程式。
- /usr/src:核心原始碼預設的放置目錄。
- /var:這個目錄中存放著在不斷擴充著的東西,我們習慣將那些經常被修改的目錄放在這個目錄下。包括各種日誌檔案。
在linux系統中,有幾個目錄是比較重要的,平時需要注意不要誤刪除或者隨意更改內部檔案。 - /etc: 上邊也提到了,這個是系統中的配置檔案,如果你更改了該目錄下的某個檔案可能會導致系統不能啟動。
- /bin, /sbin, /usr/bin, /usr/sbin: 這是系統預設的執行檔案的放置目錄,比如 ls 就是在/bin/ls 目錄下的。值得提出的是,/bin, /usr/bin 是給系統使用者使用的指令(除root外的通使用者),而/sbin, /usr/sbin 則是給root使用的指令。
- /var: 這是一個非常重要的目錄,系統上跑了很多程式,那麼每個程式都會有相應的日誌產生,而這些日誌就被記錄到這個目錄下,具體在/var/log 目錄下,另外mail的預設放置也是在這裡。
瞭解系統目錄結構,對於我們安裝管理一些依賴包更加清晰。
Linux 檔案基本屬性
Linux系統是一種典型的多使用者系統,不同的使用者處於不同的地位,擁有不同的許可權。為了保護系統的安全性,Linux系統對不同的使用者訪問同一檔案(包括目錄檔案)的許可權做了不同的規定。
在Linux中我們可以使用ll或者ls –l命令來顯示一個檔案的屬性以及檔案所屬的使用者和組,如:
[root@hostname ~]# ls -l
total 4
-rw-------. 1 root root 2523 Apr 21 2016 anaconda-ks.cfg
複製程式碼
例項中,anaconda-ks.cfg檔案的第一個屬性用”-“表示,”-“在Linux中代表該檔案是一個檔案。
在Linux中第一個字元代表這個檔案是目錄、檔案或連結檔案,對應規則如下:
- 當為[ d ]則是目錄
- 當為[ – ]則是檔案;
- 若是[ l ]則表示為連結文件(link file);
- 若是[ b ]則表示為裝置檔案裡面的可供儲存的介面裝置(可隨機存取裝置);
- 若是[ c ]則表示為裝置檔案裡面的串列埠裝置,例如鍵盤、滑鼠(一次性讀取裝置)
Linux 檔案與目錄管理
Linux的目錄結構為樹狀結構,最頂級的目錄為根目錄 /。
絕對路徑:從根目錄 / 寫起,如:/usr/share/applications
相對路徑:使用../或~(/root的簡稱)。
處理目錄的常用命令:
- ls: 列出目錄
- cd:切換目錄
- pwd:顯示目前的目錄
- mkdir:建立一個新的目錄
- rmdir:刪除一個空的目錄
- cp: 複製檔案或目錄
- rm: 移除檔案或目錄
注:可以使用 man [命令] 來檢視各個命令的使用文件,如 :man cp。
檔案內容檢視的命令:
- cat 由第一行開始顯示檔案內容
- tac 從最後一行開始顯示,可以看出 tac 是 cat 的倒著寫!
- nl 顯示的時候,順道輸出行號!
- more 一頁一頁的顯示檔案內容
- less 與 more 類似,但是比 more 更好的是,他可以往前翻頁!
- head 只看頭幾行
- tail 只看尾巴幾行
Linux 磁碟管理
inux磁碟管理常用三個命令為df、du和fdisk。
- df:列出檔案系統的整體磁碟使用量
- du:檢查磁碟空間使用量
- fdisk:用於磁碟分割槽
** df 命令 **
df命令引數功能:檢查檔案系統的磁碟空間佔用情況。可以利用該命令來獲取硬碟被佔用了多少空間,目前還剩下多少空間等資訊。
語法:
df [-ahikHTm] [目錄或檔名]
複製程式碼
選項與引數:
- -a :列出所有的檔案系統,包括系統特有的 /proc 等檔案系統;
- -k :以 KBytes 的容量顯示各檔案系統;
- -m :以 MBytes 的容量顯示各檔案系統;
- -h :以人們較易閱讀的 GBytes, MBytes, KBytes 等格式自行顯示;
- -H :以 M=1000K 取代 M=1024K 的進位方式;
- -T :顯示檔案系統型別, 連同該 partition 的 filesystem 名稱 (例如 ext3) 也列出;
- -i :不用硬碟容量,而以 inode 的數量來顯示
du命令
Linux du命令也是檢視使用空間的,但是與df命令不同的是Linux du命令是對檔案和目錄磁碟使用的空間的檢視,還是和df命令有一些區別的,這裡介紹Linux du命令。
語法:
du [-ahskm] 檔案或目錄名稱
複製程式碼
選項與引數:
- -a :列出所有的檔案與目錄容量,因為預設僅統計目錄底下的檔案量而已。
- -h :以人們較易讀的容量格式 (G/M) 顯示;
- -s :列出總量而已,而不列出每個各別的目錄佔用容量;
- -S :不包括子目錄下的總計,與 -s 有點差別。
- -k :以 KBytes 列出容量顯示;
- -m :以 MBytes 列出容量顯示;
Linux vim
Vim是從 vi 發展出來的一個文字編輯器。程式碼補完、編譯及錯誤跳轉等方便程式設計的功能特別豐富,在程式設計師中被廣泛使用。簡單的來說, vi 是老式的字處理器,不過功能已經很齊全了,但是還是有可以進步的地方。 vim 則可以說是程式開發者的一項很好用的工具。
開啟檔案的命令
基本上 vim 共分為三種模式,分別是命令模式(Command mode),插入模式(Insert mode)和末行模式(Last line mode)。 這三種模式的作用分別是:命令模式、輸入模式、末行模式。
vi/vim三種模式切換
命令模式
使用者剛剛啟動 vi/vim,便進入了命令模式。此狀態下敲擊鍵盤動作會被Vim識別為命令,而非輸入字元。比如我們此時按下i,並不會輸入一個字元,i被當作了一個命令。
以下是常用的幾個命令:
- i 切換到插入模式,以輸入字元。
- x 刪除當前游標所在處的字元。
- : 切換到底線命令模式,以在最底一行輸入命令。
若想要編輯文字:啟動Vim,進入了命令模式,按下i,切換到輸入模式。
命令模式只有一些最基本的命令,因此仍要依靠底線命令模式輸入更多命令。
移動游標的位置:
字串的複製、刪除、貼上:
輸入模式
在命令模式下按下i、I、a、A、o、O、r和R中的某一個鍵就進入了輸入模式。
在輸入模式中,可以使用以下按鍵:
- 字元按鍵以及Shift組合,輸入字元
- ENTER,Enter鍵,換行
- BACK SPACE,退格鍵,刪除游標前一個字元
- DEL,刪除鍵,刪除游標後一個字元
- 方向鍵,在文字中移動游標
- HOME/END,移動游標到行首/行尾
- Page Up/Page Down,上/下翻頁
- Insert,切換游標為輸入/替換模式,游標將變成豎線/下劃線
- ESC,退出輸入模式,切換到命令模式
末行模式
在命令模式下按下:(英文冒號)就進入了底線命令模式。
末行模式可以輸入單個或多個字元的命令,可用的命令非常多。
在末行模式中,基本的命令有:
- :q 退出程式
- :w 儲存檔案
按ESC鍵可隨時退出底線命令模式。
vim的儲存檔案和退出命令
- :w —— 儲存編輯後的檔案內容,但不退出vim編輯器。這個命令的作用是把記憶體緩衝區中的資料寫到啟動vim時指定的檔案中。
- :w! —— 強制寫檔案,即強制覆蓋原有檔案。如果原有檔案的訪問許可權不允許寫入檔案,例如,原有的檔案為只讀檔案,則可使用這個命令強制寫入。但是,這種命令用法僅當使用者是檔案的屬主時才適用,而超級使用者則不受此限制。
- :wq —— 儲存檔案內容後退出vim編輯器。這個命令的作用是把記憶體緩衝區中的資料寫到啟動vim時指定的檔案中,然後退出vim編輯器。另外一種替代的方法是用ZZ命令。
- :wq! —— 強制儲存檔案內容後退出vim編輯器。這個命令的作用是把記憶體緩衝區中的資料強制寫到啟動vim時指定的檔案中,然後退出vim編輯器。
- ZZ —— 使用ZZ命令時,如果檔案已經做過編輯處理,則把記憶體緩衝區中的資料寫到啟動vim時指定的檔案中,然後退出vim編輯器。否則只是退出vim而已。注意,ZZ命令前面無需加冒號“:”,也無需按Enter鍵。
- :q —— 在未做任何編輯處理而準備退出vim時,可以使用此命令。如果已做過編輯處理,則vim不允許使用者使用“:q”命令退出,同時還會輸出下列警告資訊:No write since last change (:quit! overrides)
- :q! —— 強制退出vim編輯器,放棄編輯處理的結果。如果確實不需要儲存修改後的檔案內容,可輸入“:q!”命令,強行退出vim編輯器。
- :w filename —— 把編輯處理後的結果寫到指定的檔案中儲存
- :w! filename —— 把編輯處理後的結果強制儲存到指定的檔案中,如果檔案已經存在,則覆蓋現有的檔案。
- :wq! filename —— 把編輯處理後的結果強制儲存到指定的檔案中,如果檔案已經存在,則覆蓋現有檔案,並退出vim編輯器。
Linux Yum 包管理器
Yum(全稱為 Yellow dog Updater, Modified)是一個在Fedora和RedHat以及CentOS中的Shell前端軟體包管理器。基於RPM包管理,能夠從指定的伺服器自動下載RPM包並且安裝,可以自動處理依賴性關係,並且一次安裝所有依賴的軟體包,無須繁瑣地一次次下載、安裝。
yum 語法
yum [options] [command] [package ...]
複製程式碼
- options:可選,選項包括-h(幫助),-y(當安裝過程提示選擇全部為”yes”),-q(不顯示安裝的過程)等等。
- command:要進行的操作。
- package操作的物件。
yum常用命令
1.列出所有可更新的軟體清單命令:yum check-update
2.更新所有軟體命令:yum update
3.僅安裝指定的軟體命令:yum install <package_name>
4.僅更新指定的軟體命令:yum update <package_name>
5.列出所有可安裝的軟體清單命令:yum list
6.刪除軟體包命令:yum remove <package_name>
7.查詢軟體包 命令:yum search <keyword>
8.清除快取命令:
yum clean packages: 清除快取目錄下的軟體包
yum clean headers: 清除快取目錄下的 headers
yum clean oldheaders: 清除快取目錄下舊的 headers
yum clean, yum clean all (= yum clean packages; yum clean oldheaders) :清除快取目錄下的軟體包及舊的headers
複製程式碼