1. 程式人生 > >Linux入門之第一次登入系統

Linux入門之第一次登入系統

1. 引言

  基於學習的目的,我們所安裝的Linux都是沒有安裝圖形介面的,因為圖形界形會對我們的學習造成一定的阻滯。由於失去了圖形介面的支撐,我們第一次進入Linux系統都會變得茫然,望著黑呼呼螢幕不知所措,下面我來提供一個首次登入系統的指引,希望可以帶領新手步入Linux的大門。
  通過這個指引,我們可以認識到:

  1. Linux的程式和程式管理
  2. Linux的使用者和使用者管理
  3. Linux的檔案和檔案管理

2. 首次進入系統

  Linux系統啟動結束後就會返回下圖這個介面給使用者:

login

  這就是常說的登陸介面,我們輸入安裝系統時提示的使用者名稱和密碼。

login

  上圖所示我們已經正式有登入了Linux系統,我們所看到的黑呼呼的東西是linux的一個終端(TTY),終端的意思可照字面去解釋,就是我們要接觸的Linux的最尾端,順著這條尾巴,可以一步一步深入Linux核心。通常,Linux會能夠提供TTY1-TTY6 六個終端介面給使用者,六個都和上圖所示的登陸介面一樣的,可以通過按ALT+數字(1-6)切換不同的終端。
  
  終端上看到的,我們打字能顯示出來,跟我們互動的這個程式叫SHELL,它是Linux的外殼,就像花生殼一樣,我們要吃花生,就要把殼捏碎,不過Linux的外殼不用捏碎,因為它上面有很多孔道(核心呼叫,系統介面)連通linux核心,我們通過這些孔道就可以到達核心。

  不同的作業系統有不同的外殼,如Windows有Command.exe,大部分的Linux用Bash(Bourne-again Shell), 有些用C shell。SHELL的用途是對輸入字元進行解釋,如果是系統命令,則執行返回命令結果,否則返回找不到命令提示。
  
  ls
  
  上圖中,我們輸入【ls】,因為這是一條命令,shell有記錄,所以它將【ls】提交給linux核心執行,然後終端列印【ls】執行的結果;而whoareyou這個字串,shell就不認識了,所以提示說沒找到命令。
  
  Shell是怎樣找到命令的呢?

Shell的環境下有很多變數,稱為環境變數,其中和命令有關聯的一個變數是PATH,PATH是記錄命令所在的路徑的變數。

3. 使用Linux

3.1 第一個命令

  程式的定義有很多,通常我們把放在硬盤裡,能夠執行的檔案稱為稱作程式,程式一般是以完成特定的任務為目的。我們學習的第一個程式是 ‘ls’, 也可以稱為Liunx的命令。

【ls】 是list的簡寫,作用是將目錄的內容羅列出來(輸出到終端)。
【ls】 命令有很多引數, 引數是指跟在ls後面,用來規範ls輸出的選項。
我們只需要學習二個引數:

  1. -a,–all 把當前目錄下所有專案列出來,(【ls】後面沒有指定目錄時,預設是當前目錄)
  2. -l 會列出專案的詳細資訊

ls

  上圖中,紅色框裡的是我們所輸入的【ls】命令,有帶引數和不帶引數的。
  當用帶引數-a的命令時, 【ls】列出了當前目錄下的所有檔案,其中有兩個特殊的檔案(綠色框內) :1個實心句點,2個實心句號。

1個實心句號: 代表當前目錄,例如,’ ls .’ , 這個命令的意思和直接ls是一樣的,都是對當前目錄專案進行查詢
2個實心句號: 代表包含當前目錄的父目錄,是目錄外面一層的目錄。
Linux檔案系統內目錄下面都存在這兩個特殊的目錄。

  帶引數-a的命令還列出了一些前面帶著小圓點的檔案,見上圖黃色框

  1. 這些前面帶著小圓點的檔案是Linux系統的隱藏檔案
  2. 如果想把一個檔案隱藏起來,只需要把檔名前面加上一個實心小圓點

  帶引數-l時,ls列印了很多長長的行,那些長出來的是檔案的基本屬性,包括:檔案屬主,檔案容量,檔案建立時間等。

引起我們注意的是第一列,類似於drwxr-xr-x. 這是什麼意思呢?
drwxr-xr-x 標示了檔案型別和屬性!其中,每一個字元都佔一個位包括【-】,共有十個位,每個位都有其意義:

1。第一位:指出檔案型別,d的意思是該檔案是目錄,如果是【-】,則是普通檔案。
2。第二三四,3位一起,是針對該檔案擁有者的許可權位,r是read(可讀),w是write(可寫),x是execute(可執行)。
3。五六七,也是三位一起,是針對檔案所屬的組的許可權位。
4。八九十,最後三位是針對其他人的許可權位。
5。Linux的每一個檔案,針對不同的使用者有不同的許可權,許可權就是指,是否可讀,是否可寫,是否可執行該檔案。
6。執行檔案是指可以將檔案載入記憶體執行的檔案,是一個程式或一個指令碼,相當於windows的exe檔案 。

引數除了可以單獨使用個外,大部分的引數都可以疊在一起使用,如上圖的 ls -al 。

當我們要了解一條命令怎樣使用時,可以利用【man】,男人都是可以利用的,在linux裡沒有什麼是man不懂的,儘管使喚他。【man】的用法很簡單,在終端裡輸入【man】 後面接你要詢問的命令,使用你想知道【ls】是怎樣使用,輸入:
【man ls】 , 螢幕就會列出滿滿的使用說明文件。

ls

在man的輸出裡可以通過翻頁鍵上翻下翻,也可能通過【j】和【k】這兩個字母上下移動文字,按【q】退出。

3.2 檔案目錄結構

  Linux的檔案路徑都帶有一個【/】,這條槓桿如果單獨表示時,叫根目錄,所有檔案和目錄都存放在根目錄之下,我們用【ls】這個命令檢視一下:
ls /

  【ls /】這條命令顯示出來的就是系統所有處於根目錄之下的目錄

   注意:/var/tmp裡面的【/】是分隔分層的意思,它意思是var是在根目錄下面,tmp則在var目錄下面,只有【/】單獨出現時才代表根目錄。

  Linux的目錄結構比較簡單,一般在etc目錄下面的是配置檔案,在bin下面的是二進位制可執行檔案,在lib裡面的是一些應用庫,在include裡面的標頭檔案。暫時不需要知道太多。

  只需要知道的是,每一個登入系統的使用者都會有一個家目錄,預設是在/home下面以使用者名字命名的目錄。這個家目錄是屬於你的,你可以在裡面隨便搗騰,基本上不會影響系統運作。不過,如果是root使用者,家目錄預設是/root,在裡面搗騰則要小心點,因為root的許可權很大,它可以忽略任何的限制,一不小心就能對系統造成破壞。

3.3 檔案管理

我們可以在自己的家目錄下面可以隨意思建立目錄和檔案。

1.【mkdir】這個命令可以建立目錄,例如:mkdir newdir , 在shell打入這條命令執行後,就可以在當前目錄裡建立新的目錄newdir。
2.【touch】這個命令可以建立新的可編輯檔案,例如:touch newfile , 在當前目錄下建立新檔案newfile。
3.【nano】是一個簡單的文字編輯器,例如:nano newfile , 開啟剛建立的檔案進行編輯,編輯完按CTRL+x 退出,最下列會有提示,根據提示操作就可以了。
4.【nano】後跟檔名引數,如果該檔案不存在,nano就建一個新的檔案。
5.【cp】 copy, 這是一個複製檔案的命令,例如:copy newfile newfile_cp , newfile_cp是newfile的副本,如需要複製目錄,需要加上【-r】引數, 例 如: copy -r newdir newdir_cp .
6.【rm】是刪除檔案的命令,例如:rm newfile , 刪除時有提示需要確認,輸入【y】確認刪除,如需要刪除目錄,需要加【-r】引數,例如:rm -r newdir
7.【cat】後接檔名,能把該檔案的內容列印到螢幕。

掌握了上面1234567條命令可以完成基本的檔案管理

3.4 使用者管理

  Linux可以允許同時有很多個使用者登入,不同的使用者使用不同的終端,上面有提到的TTY1-TTY6就充許同時登入六個使用者,除了TTY外,使用者還可以通過網路登入Linux,有一些服務提供網路遠端登陸,比較常用的是:SSH, Telnet, Rlogin,最常用和最多用的是SSH。通過網路登陸和在實體機登入並沒有兩樣。
  Linux有一個超級使用者叫root,在按階級或分的Linuw使用者裡,root是最高統治者,相當於皇帝,它可以突破系統的任何限制。
  在Linux裡建立使用者的命令是【useradd】, 後面跟新使用者名稱,建立新使用者需要用root才可以。
  更改密碼的命令是【passwd】, 後接需要改密碼的使用者名稱,除了更改自己的密碼外,更改其它使用者的密碼需要root。
  Linux的使用者都有一個歸屬的組,每個使用者可以屬於多個組,亦可只屬於一個組,用【usermod -g】命令可以更改使用者所屬組,例如將使用者test加入組classa: usermod -g classa test .

3.5 程序(任務)管理

  大家使用過Windows應該知道它有一個程式管理器,按著ALT+CTRL+DEL就可以調出來。
Linux下很多管理程式的方法,都是通Shell打入命令去完成。
  這裡,我們所說的程式是指程式執行的例項,通常稱為程序, 有些系統稱為任務,程式被執行是指程式被Linux核心讀入記憶體,並使他按照程式設計的目的去執行。在Linux裡有一個唯一的數字去標識程序,是為程序ID,它總是一非負整數。
  【ps】, 是我們學習的另一個命令,這個【ps】寫法和ps照片的【ps】是一樣的,不過Linux的【ps】是用來檢視當前系統所執行的程序的,同樣地,【ps】有很多引數,我們只需要學習兩個引數。

  1. -l , 【ps】 帶-l引數時,只列出和自己相關的程序。
  2. aux, 這是一個組合引數,可以帶‘-’,或者不帶‘-’,它會更出系統當前的所有程序。

ps

  上面【ps axu】的輸出很多,只好把它截短貼圖。

  我們需要理解一下綠色框裡的欄位,這些欄位指示了程序的相關資源和狀態。

USER: 是執行該程序的使用者
PID: 程序ID
CPU: 程序的CPU使用率(百分比)
MEM: 記憶體點用率(百分比)
VSZ: 虛擬記憶體佔用(kbyte)
RSS: 佔用了多少固定記憶體(kbyte)
TTY: 是TTY1-TTY6中的哪一個?
STAT: Status,程序的狀態
START:開始執行時間
TIME: CPU運作時間
COMMAND: 觸發這個程序的指令(具體哪個程式)

上面STAT的程序狀態有下列幾種:
R (Running):表示程序運作中;
S (Sleep):表示程序在睡覺,空閒中。
D :睡覺中,但不會醒過來的。
T :停止狀態(stop);
Z (Zombie):僵死狀態,程序已經中止,但還在記憶體中駐留。

  另一個要學習的命令是【top】,最top的【top】,可以用來動態監控程序。【top】的命令引數也是有很多的,Linux的大部分命令,引數都是很複雜的,不過我暫時只需要學習兩個。
  

引數1: -d 後面接數字代表按數字所表示的秒數為頻率更新top的輸出
引數2: -p p是pid的意思(程序id,詳細的英文是process identifiers),引數後面接程序標識,用來指定top所監控的程序。
注意: 在top裡面可以輸入指令,具體有好幾個指令,按?(問號)會輸出指令幫助,按下字母q退出top。

top

  由上圖可見,【top】的輸出很複雜,下面簡單說一說。
  

綠色框裡,第一行(top -),這一行顯示的資訊分別為:
當前時間(23:51:47);
開機到目前經歷時間(up 12 min);
當前系統使用者人數(2 users);
系統在 1, 5, 15 分鐘的平均負載(load average),這幾個數值越小,代表系統越閒。

第二行(Tasks):目前的程序總量(396 total),各處於什麼狀態(running, sleeping, stopped, zombie)

第三行(%cpus): 顯示的是CPU的負載(百分比),us是user(使用者程序佔比);sy是system佔比;ni是nice,意思是cpu喜歡的程序(優先順序比user高的);id即idle,空閒率;wa是IO-wait,一般是硬碟記憶體之間輸入輸出等待程序佔比 ;hi(hardware interrupts)硬體中斷;si(software interrupts)軟體中斷;st代表虛擬機器用掉的cpu佔比。如果是多核cpu可以按下數字【1】來切換不同的核。

第四五行表示目前記憶體和虛擬記憶體的使用情況,如果虛擬記憶體使用過多,代表電腦記憶體不足。

  上圖藍色框,是各程序的狀態標示欄目。

PID :程序 ID
USER:執行這個程序的使用者名稱;
PR : Priority 的簡寫,程序的優先執行順序,越小越早被執行;
NI : Nice 的簡寫,與 Priority 有關,也是越小越早被執行;
%CPU:CPU 的使用率;
%MEM:記憶體的使用率;
TIME+:CPU 使用時間的累加;

3.6 關機

關機有很多個指令,用【halt -p】就可以將機器關掉。