面試常見的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命令支援正則表示式,如
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’,&&可以用來決定那個應用程式先執行。