1. 程式人生 > >面試常見的Linux命令及問題整理

面試常見的Linux命令及問題整理

常考的Linux命令

1、cd 
用於切換當前目錄,它的引數是要切換到的目錄的路徑,可以是絕對路徑,也可以是相對路徑。

cd /opt  :絕對路徑cd opt :相對路徑

2、ls 
檢視檔案與目錄的命令

ls -l (也可以直接 ll ) :列出長資料串,包含檔案的屬性與許可權資料等

ls -a :列出全部的檔案,連同隱藏檔案(開頭為.的檔案)一起列出來(常用)

3、grep 
文字搜尋

語法:grep 引數 查詢條件 檔名(注:是檔名,目錄名下查詢不行)

主要引數:

i:不區分大小寫(只適用於字母字元。)

l:查詢多檔案時只輸出包含匹配字元的 檔名。

n:顯示匹配行內容及行號。

比如我的/opt目錄下有檔案test1.txtgrep -i "teacher" test1.txt : 查詢包含teachergrep -l "teacher" test1.txt test2.txt : 在檔案test1/test2中查詢是否有“teacher”grep teacher *.txt : 顯示當前目錄下包含“teacher”且以.txt 結尾的檔案(grep命令支援正則表示式,如

grep '[a-z]\{7\}' *.txt)

ps -ef|grep java:查詢指定程序(這裡指定java程序)

ls -l|grep -i test:把ls -l的輸出中包含字母test(不區分大小寫)的內容輸出 (如果查詢的是目錄可以使用正則表示式,但是檔案不行)

4、find 
查詢

-mtime +n : 列出在n天之前(不含n天本身)被更改過的檔名;  -mtime -n : 列出在n天之內(含n天本身)被更改過的檔名;

find /root(路徑) -mtime 0  在當前目錄下查詢今天之內有改動的檔案  

find -name 檔名 :找匹配的檔名

在某一檔案中查詢日誌(比方方法login):可以vi開啟日誌檔案,然後“/login”,enter,按 n 鍵向下繼續搜尋;

5、mkdir 
建立指定的名稱的目錄

-m, --mode=模式,設定許可權<模式> (類似 chmod),而不是 rwxrwxrwx 減 umask

-p, --parents  可以是一個路徑名稱。此時若路徑中的某些目錄尚不存在,加上此選項後,系統將自動建立好那些尚不存在的目錄,即一次可以建立多個目錄; mkdir test1 : 建立一個空目錄mkdir -p test2/test22 :遞迴建立多個目錄 mkdir -m 777 test3 :建立許可權為777的目錄

6、cp 
複製檔案,還可以把多個檔案一次性地複製到一個目錄下

cp -a file1 file2 :連同檔案的所有特性把檔案file1複製成檔案file2  

cp file1 file2 file3 dir :把檔案file1、file2、file3複製到目錄dir  

7、mv 
移動檔案、目錄或更名

mv file1 file2 file3 dir : 把檔案file1、file2、file3移動到目錄dir  

mv file1 file2 : 把檔案file1重新命名為file2  

8、rm 
刪除檔案或目錄

-f :就是force的意思,忽略不存在的檔案,不會出現警告訊息  -i :互動模式,在刪除前會詢問使用者是否操作  -r :遞迴刪除,最常用於目錄刪除,它是一個非常危險的引數  rm -i file : 刪除檔案file,在刪除之前會詢問是否進行該操作  

rm -fr dir : 強制刪除目錄dir中的所有檔案  

9、ps 
列出系統中當前執行的程序

a 顯示所有使用者的所有程序(包括其它使用者)

-e 顯示所有程序,環境變數f 用樹形格式來顯示程序;

ps -ef|grep java : 找出所有java程序

10、kill 
終止指定的程序。需要先使用ps/pidof/pstree/top等工具獲取程序PID,然後使用kill命令來殺掉該程序。

kill -9 程序號 徹底殺死某個程序

11、tar 
對檔案進行打包,預設情況並不會壓縮,如果指定了相應的引數,它還會呼叫相應的壓縮程式(如gzip和bzip等)進行壓縮和解壓。 
語法:tar [主選項+輔選項] 檔案或者目錄 
使用該命令時,主選項是必須要有的,它告訴tar要做什麼事情,輔選項是輔助使用的,可以選用。 
   主選項:c 建立新的檔案檔案。如果使用者想備份一個目錄或是一些檔案,就要選擇這個選項。相當於打包。 
x 從檔案檔案中釋放檔案。相當於拆包。 
t 列出檔案檔案的內容,檢視已經備份了哪些檔案。 
**在引數的下達中, c/x/t 僅能存在一個!不可同時存在!因為不可能同時壓縮與解壓縮。 
 輔助選項:-z :是否同時具有 gzip 的屬性?亦即是否需要用 gzip 壓縮或解壓? 一般格式為xx.tar.gz或xx. tgz 
-j :是否同時具有 bzip2 的屬性?亦即是否需要用 bzip2 壓縮或解壓?一般格式為xx.tar.bz2 
-v :壓縮的過程中顯示檔案!這個常用 
-f :使用檔名,請留意,在 f 之後要立即接檔名喔!不要再加其他引數! 
-p :使用原檔案的原來屬性(屬性不會依據使用者而變) 
–exclude FILE:在壓縮的過程中,不要將 FILE 打包!

壓縮:tar -jcv -f filename.tar.bz2 filename

查詢:tar -jtv -f filename.tar.bz2  

解壓:tar -jxv -f filename.tar.bz2 (解壓成目錄為filename的目錄)

注:檔名並不定要以後綴tar.bz2結尾,這裡主要是為了說明使用的壓縮程式為bzip2

12、chmod 
改變檔案的許可權 
語法:chmod [options] mode files 
options:-R 可遞迴遍歷子目錄,把修改應到目錄下所有檔案和子目錄 
who:u 使用者 、 g 組 、o 其他 、a 所有使用者 
opcode:+ 增加許可權 、 - 刪除許可權 、= 重新分配許可權 
permission: r 讀 、w 寫 、 x 執行

我們多數用三位八進位制數字的形式來表示許可權,第一位指定屬主的許可權,第二位指定組許可權,第三位指定其他使用者的許可權,每位通過4(讀)、2(寫)、1(執行)三種數值的和來確定許可權。如6(4+2)代表有讀寫權,7(4+2+1)有讀、寫和執行的許可權

 chmod u+x file :給file的屬主增加執行許可權

 chmod 751 file :給file的屬主分配讀、寫、執行(7)的許可權,給file的所在組分配讀、執行(5)的許可權,給其他使用者分配執行(1)的許可權

 chmod u=rwx,g=rx,o=x file :上例的另一種形式

13、tail 
查閱正在改變的日誌檔案 
語法:tail[必要引數][選擇引數][檔案] 
-f 迴圈讀取 
-n<行數> 顯示行數

tail -f 20160921.logs :檢視正在改變的日誌檔案;

tail -3000 catalina.out:檢視倒數前3000行的資料;

tail -3000 catalina.out | grep 'AA':檢視倒數前3000行包含字母'AA'的資料;

ctrl+z 可退出 

14、檢視程序pid 

lsof -i:8080:根據埠檢視程序pid:

面試官常問的十個linux問題

1. 如何暫停一個正在執行的程序,把其放在後臺(不執行)?

答案:為了停止正在執行的程序,讓其在後臺執行,我們可以使用組合鍵 Ctrl+Z。

2. 什麼是安裝Linux所需的最小分割槽數量,以及如何檢視系統啟動資訊?

答案:單獨一個/root分割槽足以執行所有的系統任務,但是強烈建議安裝Linux時,需要至少三個分割槽:/root,/boot,/swap。一個IDE硬碟驅動器支援高達63個分割槽,SCSI硬碟驅動器支援超過15個分割槽。

為了檢查啟動資訊,我們可以使用cat或者dmesg命令,如下所示:

#cat /var/log/messages

或者

#dmesg

3. 在你的Linux機器上跟蹤系統事件的守護程序名是什麼?

答案:’syslogd’,它負責跟蹤系統資訊,並將跟蹤日誌儲存在特定的日誌檔案裡。

4. 在/root分割槽執行’fsck’命令的最低要求是什麼?

答案:/root分割槽必須掛載為只讀模式,而不是讀寫模式

5. 如何分層複製/home目錄到另一個目錄?

答案:Linux的’cpio’命令起到了效果。’cpio’可以分層地複製檔案和目錄層次結構到另一個位置。

6. 在Linux中,怎樣實現日誌檔案的自動替換?

答案:’logrotate’提供日誌自動替換功能。

7. 怎樣知道Linux中是誰在安排工作?

答案:使用’at’命令加上’-l’選項,就可以查出。

8. 如何在不解壓tar包的前提下,檢視包裡的內容?

答案:使用’tar -tvf’。選項‘t’(顯示內容),‘v’(詳細報告tar處理的檔案資訊),‘f’(使用檔案檔案或者裝置)

9. 什麼是頁面錯誤,它是怎麼發生的?

答案:當一個程式請求記憶體中不存在的資料時,就會產生頁面錯誤,導致的結果就是程式停止。

10. 什麼是在程式中返回程式碼?

答案:返回程式碼是shell的特性。返回程式碼顯示了程式的狀態,一個成功的程式執行後返回‘0’,&&可以用來決定那個應用程式先執行。