【Linux系列】Linux基礎知識整理
Linux作業系統在伺服器領域廣泛的使用到,作為一個後臺開發工程師很有必要了解Linux相關的知識。
本篇日誌是我學習Linux過程中的簡單記錄和總結。本著“理論夠用,實踐為主”的原則,這裡沒有對Linux底層原理方面的知識做深入研究,只是記錄了相關的基礎概念,有興趣的同學可以參考Linux相關的專業書籍(鳥哥的Linux私房菜)。
Linux簡介
歷史簡介
Linux系統的創始人是芬蘭著名程式設計師Linus Torvalds(發音為 ['li:nэks])。後來經過一眾Linux愛好者不斷提交程式碼,Linux核心系統越來越完善壯大。
發行版本
基於Linux核心的Linux發行版本有很多。較知名的發行版有:Ubuntu、RedHat、CentOS、Debain、Fedora、SuSE、OpenSUSE、TurboLinux、BluePoint、RedFlag、Xterm、SlackWare、國產麒麟。平時我們常用的有CentOS和RedHat,如果習慣使用介面的使用者,可以考慮使用Ubuntu。
但是Linux作業系統一般都使用在伺服器領域,管理人員都是通過遠端登入管理伺服器資源的,所以為了節省頻寬很少會安裝介面程式,一般都是通過命令列登入。因此掌握常用的Linux命令很重要。
Linux vs Unix
Linux基礎知識
一些快捷鍵
- ctrl+c:不執行當前輸入的命令;
- ctrl+d:退出當前終端,和exit功能一樣;
- ctrl+L:清屏;
- Ctrl + Z: 暫停當前程序,比如你正執行一個命令,突然覺得有點問題想暫停一下,就可以使用這個快捷鍵。暫停後,可以使用 fg 恢復它。
目錄結構
進入Linux系統的主目錄(使用命令:cd /),你會看到下面的目錄結構:
- /:根目錄,一般根目錄下只存放目錄,不要存放檔案,/etc、/bin、/dev、/lib、/sbin應該和根目錄放置在一個分割槽中
/bin:/usr/bin:可執行二進位制檔案的目錄,如常用的命令ls、tar、mv、cat等。
/boot:放置linux系統啟動時用到的一些檔案。/boot/vmlinuz為linux的核心檔案,以及/boot/gurb。建議單獨分割槽,分割槽大小100M即可
/dev:存放linux系統下的裝置檔案,訪問該目錄下某個檔案,相當於訪問某個裝置,常用的是掛載光碟機mount /dev/cdrom /mnt。
/etc:系統配置檔案存放的目錄,不建議在此目錄下存放可執行檔案,重要的配置檔案有/etc/inittab、/etc/fstab、/etc/init.d、/etc/X11、/etc/sysconfig、/etc/xinetd.d修改配置檔案之前記得備份;
/home:系統預設的使用者家目錄,新增使用者賬號時,使用者的家目錄都存放在此目錄下,~表示當前使用者的家目錄,~test表示使用者test的家目錄。建議單獨分割槽,並設定較大的磁碟空間,方便使用者存放資料
/lib:/usr/lib:/usr/local/lib:系統使用的函式庫的目錄,程式在執行過程中,需要呼叫一些額外的引數時需要函式庫的協助,比較重要的目錄為/lib/modules。
/lost+fount:系統異常產生錯誤時,會將一些遺失的片段放置於此目錄下,通常這個目錄會自動出現在裝置目錄下。如載入硬碟於/disk 中,此目錄下就會自動產生目錄/disk/lost+found
/mnt:/media:光碟預設掛載點,通常光碟掛載於/mnt/cdrom下,也不一定,可以選擇任意位置進行掛載。
/opt:給主機額外安裝軟體所擺放的目錄。如:FC4使用的Fedora 社群開發軟體,如果想要自行安裝新的KDE 桌面軟體,可以將該軟體安裝在該目錄下。以前的 Linux 系統中,習慣放置在 /usr/local 目錄下
/proc:此目錄的資料都在記憶體中,如系統核心,外部裝置,網路狀態,由於資料都存放於記憶體中,所以不佔用磁碟空間,比較重要的目錄有/proc/cpuinfo、/proc/interrupts、/proc/dma、/proc/ioports、/proc/net/*等
/root:系統管理員root的家目錄,系統第一個啟動的分割槽為/,所以最好將/root和/放置在一個分割槽下。
/sbin:/usr/sbin:/usr/local/sbin:放置系統管理員使用的可執行命令,如fdisk、shutdown、mount等。與/bin不同的是,這幾個目錄是給系統管理員root使用的命令,一般使用者只能"檢視"而不能設定和使用。
/tmp:一般使用者或正在執行的程式臨時存放檔案的目錄,任何人都可以訪問,重要資料不可放置在此目錄下
/srv:服務啟動之後需要訪問的資料目錄,如www服務需要訪問的網頁資料存放在/srv/www內
/usr:應用程式存放目錄,/usr/bin存放應用程式,/usr/share存放共享資料,/usr/lib存放不能直接執行的,卻是許多程式執行所必需的一些函式庫檔案。/usr/local:存放軟體升級包。/usr/share/doc:系統說明檔案存放目錄。/usr/share/man: 程式說明檔案存放目錄,使用 man ls時會查詢/usr/share/man/man1/ls.1.gz的內容建議單獨分割槽,設定較大的磁碟空間
/var:放置系統執行過程中經常變化的檔案,如隨時更改的日誌檔案/var/log,/var/log/message:所有的登入檔案存放目錄,/var/spool/mail:郵件存放的目錄,/var/run:程式或服務啟動後,其PID存放在該目錄下。建議單獨分割槽,設定較大的磁碟空間
檔案和目錄
通過ls命令我們可以檢視檔案的詳細屬性,下面介紹下下面輸出具體是什麼含義。
[root@SHB-L0074969 tmp]# ls -al
total 52
drwxrwxrwt. 5 root root 16384 Dec 13 14:40 .
dr-xr-xr-x. 28 root root 4096 Oct 11 02:35 ..
-rw-r--r-- 1 root root 840 Nov 3 2016 autofsInfo.rb
drwxr-xr-x 2 root root 4096 Nov 23 11:39 hsperfdata_root
- 第一列:表示檔案時普通檔案、資料夾、還是其他型別的檔案。常見的型別有d(資料夾)、-(普通檔案)、l(連線檔案,可以想象成window下面的快捷方式)、s(socket檔案)。後邊的9位,每三個為一組。均為rwx 三個引數的組合。其中r 代表可讀,w代表可寫,x代表可執行。前三位為所屬主(user)的許可權,中間三位為所屬組(group)的許可權,最後三位為其他非本群組(others)的許可權。
- 第2列,表示為連線佔用的節點(inode),若為目錄時,通常與該目錄地下還有多少目錄有關係;
- 第3列,表示該檔案的所屬主。
- 第4列,表示該檔案的所屬組。
- 第5列,表示該檔案的大小。
- 第6列、第7列和第8列為該檔案的建立日期或者最近的修改日期,分別為月份日期以及時間。
- 第9列,檔名。如果前面有一個. 則表示該檔案為隱藏檔案。
檔案系統格式
Linux檔案系統的格式是Ext2或者Ext3
認識/etc/passwd和/etc/shadow
這兩個檔案儲存著使用者的使用者和密碼等資訊。開啟/etc/passwd檔案,可以看到下面內容。/etc/passwd由’:’分割成7個欄位,每個欄位的具體含義是:
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
sync:x:5:0:sync:/sbin:/bin/sync
1)使用者名稱(如第一行中的root就是使用者名稱),代表使用者賬號的字串。使用者名稱字元可以是大小寫字母、數字、減號(不能出現在首位)、點以及下劃線,其他字元不合法。雖然使用者名稱中可以出現點,但不建議使用,尤其是首位為點時,另外減號也不建議使用,因為容易造成混淆。
2)存放的就是該賬號的口令,為什麼是’x’呢?早期的unix系統口令確實是存放在這裡,但基於安全因素,後來就將其存放到/etc/shadow中了,在這裡只用一個’x’代替。
3)這個數字代表使用者標識號,也叫做uid。系統識別使用者身份就是通過這個數字來的,0就是root,也就是說你可以修改test使用者的uid為0,那麼系統會認為root和test為同一個賬戶。通常uid的取值範圍是0~65535,0是超級使用者(root)的標識號,1~499由系統保留,作為管理賬號,普通使用者的標識號從500開始,如果我們自定義建立一個普通使用者,你會看到該賬戶的標識號是大於或等於500的。
4)表示組標識號,也叫做gid。這個欄位對應著/etc/group 中的一條記錄,其實/etc/group和/etc/passwd基本上類似。
5)註釋說明,該欄位沒有實際意義,通常記錄該使用者的一些屬性,例如姓名、電話、地址等等。不過,當你使用finger的功能時就會顯示這些資訊的(稍後做介紹)。
6)使用者的家目錄,當用戶登入時就處在這個目錄下。root的家目錄是/root,普通使用者的家目錄則為/home/username,這個欄位是可以自定義的,比如你建立一個普通使用者test1,要想讓test1的家目錄在/data目錄下,只要修改/etc/passwd檔案中test1那行中的該欄位為/data即可。
7)shell,使用者登入後要啟動一個程序,用來將使用者下達的指令傳給核心,這就是shell。Linux的shell有很多種sh, csh, ksh, tcsh, bash等,而Redhat/CentOS的shell就是bash。檢視/etc/passwd檔案,該欄位中除了/bin/bash外還有/sbin/nologin比較多,它表示不允許該賬號登入。如果你想建立一個賬號不讓他登入,那麼就可以把該欄位改成/sbin/nologin,預設是/bin/bash。
再看看/etc/shadow的內容
Linu壓縮檔案
Linux下常見的壓縮格式
.zip zip壓縮檔案
.gz gzip 壓縮工具壓縮的檔案
.bz2 bzip2 壓縮工具壓縮的檔案
.tar tar 打包程式打包的檔案(tar並沒有壓縮功能,只是把一個目錄合併成一個檔案)
.tar.gz 可以理解為先用tar打包,然後再gzip壓縮
.tar.bz2 同上,先用tar打包,然後再bzip2壓縮