天天看點

Linux面試題

LINUX相關技術面試題

題目說明:

LINUX類的面試題适合傳統行業實施,運維以及大資料開發,運維等崗位,在以上提到的崗位面試中均會有所涉及,初級崗位大部分為基礎指令考核,難度不大,但需要準确與熟練, 會編寫SHELL腳本會成為此類崗位求職優勢。

基礎指令:

1.查找檔案

find / -name filename.txt

根據名稱查找/目錄下的filename.txt檔案。

2.檢視一個程式是否運作

ps –ef|grep tomcat

檢視所有有關tomcat的程序

3.終止線程

kill -9 19979

終止線程号位19979的線程

4.檢視檔案,包含隐藏檔案

ls -al

5.目前工作目錄

pwd

6.複制檔案包括其子檔案到自定目錄

cp -r sourceFolder targetFolder

7.建立目錄

mkdir newfolder

8.删除目錄(此目錄是空目錄)

rmdir deleteEmptyFolder

9.删除檔案包括其子檔案

rm -rf deleteFile

10.移動檔案

mv /temp/movefile /targetFolder

擴充重命名 mv oldNameFile newNameFile

11.切換使用者

su -username

12.修改檔案權限

chmod 777 file.java

//file.java的權限-rwxrwxrwx,r表示讀、w表示寫、x表示可執行

13.壓縮檔案

tar -czf test.tar.gz /test1 /test2

14.列出壓縮檔案清單

tar -tzf test.tar.gz

15.解壓檔案

tar -xvzf test.tar.gz

16.檢視檔案頭10行

head -n 10 example.txt

17.檢視檔案尾10行

tail -n 10 example.txt

18.檢視日志檔案

tail -f exmaple.log

//這個指令會自動顯示新增内容,螢幕隻顯示10行内容的(可設定)。

19.啟動Vi編輯器

vi

20.檢視系統目前時間

date

指令會輸出 周幾 幾月 幾日 時間 和 時間顯示格式 和年份

Sat Jan 20 04:39:49 CST 2018

date +”%Y-%m-%d”

顯示如下:

[root@ming xxx]# date +"%Y-%m-%d"

2018-01-20

21、cd

用于切換目前目錄,它的參數是要切換到的目錄的路徑,可以是絕對路徑,也可以是相對路徑。

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

22、ls

檢視檔案與目錄的指令

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

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

23、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(不區分大小寫)的内容輸出 (如果查詢的是目錄可以使用正規表達式,但是檔案不行)

24、find

查找

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

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

find -name 檔案名 :找比對的檔案名

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

25、mkdir

建立指定的名稱的目錄

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

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

26、cp

複制檔案,還可以把多個檔案一次性地複制到一個目錄下

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

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

27、mv

移動檔案、目錄或更名

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

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

28、rm

删除檔案或目錄

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

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

29、ps

列出系統中目前運作的程序

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

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

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

30、kill

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

kill -9 程序号 : 徹底殺死某個程序

31、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

32、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 :上例的另一種形式

33、tail

查閱正在改變的日志檔案

文法:tail[必要參數][選擇參數][檔案]

-f 循環讀取

-n<行數> 顯示行數

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

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

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

ctrl+z 可退出

34、檢視程序pid

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

35、顯示目錄和檔案的指令

  Ls:用于檢視所有檔案夾的指令。

  Dir:用于顯示指定檔案夾和目錄的指令   Tree: 以樹狀圖列出目錄内容

  Du:顯示目錄或檔案大小

35、修改目錄,檔案權限和屬主及數組指令

  Chmod:用于改變指定目錄或檔案的權限指令。

  Chown:用于改變檔案擁有屬性的指令。

  Chgrp:用于改變檔案群組的指令。

  Chattr:用于設定檔案具有不可删除和修改權限。

  Lsattr:用于顯示檔案或目錄的隐藏屬性。

36、建立和删除目錄的指令

  Mkdir:用于建立目錄

  Rmdir:用于删除空的目錄

  Rm -f:用于删除不為空的目錄

37、建立和删除,重命名,複制檔案的指令

 Touch:建立一個新的檔案

  Vi:建立一個新的檔案

  Rm:删除檔案或目錄

  Mv:重命名或移動檔案的指令

  Cp:複制指令

  Scp:用于将本地的檔案或目錄複制到遠端伺服器

  Wget:用于下載下傳ftp或http伺服器檔案到本地。

38、顯示檔案内容的指令

  Cat:用于顯示指定檔案的全部内容

  More:用分頁的形式顯示指定檔案的内容

  Less:用分頁的形式顯示指定檔案的内容,差別是more和less翻頁使用的操作鍵不同。

  Head:用于顯示檔案的前n行内容。

  Tail:用于顯示檔案的後n行内容。

  Tail -f:用于自動重新整理的顯示檔案後n行資料内容。

39、查找指令

  Find:查找指定目錄或檔案的指令。

 Whereis:查找指定的檔案源和二進制檔案和手冊等

  Which:用于查詢指令或别名的位置。

  Locate:快速查找系統資料庫中指定的内容。

  Grep:在指定的檔案或标準輸出,标準輸入内,查找滿足條件的内容。

40、關機和重新開機計算機的指令

  Shutdown:-r 關機後立即重新開機

            -k 并不真正的關機,而隻是發出警告資訊給所有使用者

            -h 關機後不重新啟動

  Poweroff:用于關機和關閉電源

  Init:改變系統運作級别

       0級用于關閉系統

       1 級用于單一使用者模式

      2級用來進行多使用者使用模式(但不帶網絡功能)

       3級用來進行多使用者使用模式(帶網絡全功能)

       4級用來進行使用者自定義使用模式

       5級表示進入x  windows時的模式

       6級用來重新開機系統

  Reboot: 用于計算機重新開機

  Halt:用于關閉計算機系統

41、壓縮和打包指令

  Tar:用于多個檔案或目錄進行打包,但不壓縮,同時也用指令進行解包

  Gzip:用于檔案進行壓縮和解壓縮指令,檔案擴充名為.gz結尾。

  Gunzip:用于對gzip壓縮文檔進行解壓縮。

  Bzip2:用于對檔案或目錄進行壓縮和解壓縮

  Bzcat:用于顯示壓縮檔案的内容。

  Compress/un compress: 壓縮/解壓縮.Z檔案

  Zcat:檢視z或gz結尾的壓縮檔案内容。

  Gzexe:壓縮可執行的檔案

  Unarg:解壓縮.arj檔案

  Zip/unzip:壓縮解壓縮.zip檔案

42、使用者操作指令

  Su:切換使用者指令

  Sudo:一系統管理者的身份執行指令

  Passwd:用于修改使用者的密碼

43、改變目錄和檢視目前目錄指令

  Cd:進入工作目錄

  Cd ..:會退到上一級指令

  Pwd:顯示目前使用者所在工作目錄位置

44、檔案連接配接指令

  Ln:為源檔案建立一個連接配接,并不将源檔案複制一份,即占用的空間很小。

      可以分為軟體連接配接和硬連結。

       軟連接配接:也稱為符号連接配接,即為檔案或目錄建立一個快捷方式。

硬連結:給一個檔案取多于一個名字,放在不同目錄中,友善使用者使用。

45、Ln指令參數如下:

  -f:在建立連接配接時,先将與目的對象同名的檔案或目錄删除。

  -d:允許系統管理者硬連結自己的目錄。

  -i:在删除與目的對象同名檔案或目錄時先詢問使用者。

  -n:在建立軟連接配接時,将目的對象視為一般的檔案。

  -s:建立軟連接配接,即符号連接配接。

  -v:在連接配接之前顯示檔案或目錄名。

  -b:将在連接配接時會被覆寫或删除的檔案進行備份。

46、幫助指令-----man

47、其他指令

  Who:顯示系統中有那些使用者在使用。

       -ami  顯示目前使用者

       -u:顯示使用者的動作/工作

       -s:使用簡短的格式來顯示

      -v:顯示程式版本

  Free:檢視目前系統的記憶體使用情況

  Uptime:顯示系統運作了多長時間

  Ps:顯示瞬間程序的動态

  Pstree:以樹狀方式顯示系統中所有的程序

  Date:顯示或設定系統的日期與時間。

  Last:顯示每月登陸系統的使用者資訊

  Kill: 殺死一些特定的程序

  Logout:退出系統

 Useradd/userdel:添加使用者/删除使用者

 Clear:清屏

  Passwd:設定使用者密碼

vi編輯器

  首先用vi指令打開一個檔案

末行模式指令:

  :n,m w path/filename 儲存指定範圍文檔( n表開始行,m表結束行)

  :q!    對檔案做過修改後,強制退出

  :q     沒有對檔案做過修改退出

 Wq或x  儲存退出

  dd   删除光标所在行

  : set number 顯示行号

  :n 跳轉到n行

  :s  替換字元串 :s/test/test2/g  /g全局替換 /也可以用%代替

  / 查找字元串

網絡通信常用的指令

  Arp:網絡位址顯示及控制

  ftp:檔案傳輸

  Lftp:檔案傳輸

  Mail:發送/接收電子郵件

  Mesg:允許或拒絕其他使用者向自己所用的終端發送資訊

  Mutt E-mail 管理程式

  Ncftp :檔案傳輸

  Netstat:顯示網絡連接配接.路由表和網絡接口資訊

  Pine:收發電子郵件,浏覽新聞討論區

 Ping:用于檢視網絡是否連接配接通暢

  Ssh:安全模式下遠端登陸

  Telnet:遠端登入

  Talk:與另一使用者對話

  Traceroute:顯示到達某一主機所經由的路徑及所使用的時間。

  Wget:從網路上自動下載下傳檔案

  Write:向其它使用者終端寫資訊    Rlogin:遠端登入

面試官常問的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’,&&可以用來決定那個應用程式先執行。

11.如何選擇Linux作業系統版本?

一般來講,桌面使用者首選Ubuntu;伺服器首選RHEL或CentOS,兩者中首選CentOS。

根據具體要求:

①安全性要求較高,則選擇Debian或者FreeBSD。

②需要使用資料庫進階服務和電子郵件網絡應用的使用者可以選擇SUSE。

③想要新技術新功能功能可以選擇Feddora,Feddora是RHEL和CentOS的一個測試版和預釋出版本。

④根據現有狀況,絕大多數網際網路公司選擇CentOS。現在比較常用的是6系列,現在市場占有大概一半左右。另外的原因是CentOS更側重伺服器領域,并且無版權限制。

12.請描述Linux系統優化的12個步驟。

⑴登入系統:不使用root登入,通過sudo授權管理,使用普通使用者登入。

⑵禁止SSH遠端:更改預設的遠端連接配接SSH服務及禁止root遠端連接配接。

⑶時間同步:定時自動更新伺服器時間。

⑷配置yum更新源,從國内更新下載下傳安裝rpm包。

⑸關閉selinux及iptables(iptables工作場景如有wan ip,一般要打開,高并發除外)

⑹調整檔案描述符數量,程序及檔案的打開都會消耗檔案描述符。

⑺定時自動清理/var/spool/clientmquene/目錄垃圾檔案,防止節點被占滿(c6.4預設沒有sendmail,是以可以不配。)

⑻精簡開機啟動服務(crond、sshd、network、rsyslog)

⑼Linux核心參數優化/etc/sysctl.conf,執行sysct -p生效。

更改字元集,支援中文,但是還是建議使用英文,防止亂碼問題出現。

⑾鎖定關鍵系統檔案(chattr +i /etc/passwd /etc/shadow /etc/group /etc/gshadow /etc/inittab 處理以上内容後,把chatter改名,就更安全了。)

⑿清空/etc/issue,去除系統及核心版本登陸前的螢幕顯示。

13.描述Linux運作級别0-6的各自含義

0:關機模式

1:單使用者模式<==破解root密碼

2:無網絡支援的多使用者模式

3:有網絡支援的多使用者模式(文本模式,工作中最常用的模式)

4:保留,未使用

5:有網絡支援的X-windows支援多使用者模式(桌面)

6: 重新開機系統,即重新開機

14.描述Linux系統從開機到登陸界面的啟動過程

⑴開機BIOS自檢,加載硬碟。

⑵讀取MBR,MBR引導。

⑶grub引導菜單(Boot Loader)。

⑷加載核心kernel。

⑸啟動init程序,依據inittab檔案設定運作級别

⑹init程序,執行rc.sysinit檔案。

⑺啟動核心子產品,執行不同級别的腳本程式。

⑻執行/etc/rc.d/rc.local

⑼啟動mingetty,進入系統登陸界面。

15.如果一台辦公室内主機無法上網(打不開網站),請給出你的排查步驟?

①首先确定實體鍊路是否聯通正常。

②檢視本機IP,路由,DNS的設定情況是否達标。

③telnet檢查伺服器的WEB有沒有開啟以及防火牆是否阻攔。

④ping一下網關,進行最基礎的檢查,通了,表示能夠到達伺服器。

⑤測試到網關或路由器的通常情況,先測網關,然後再測路由器一級一級的測試。

⑥測試ping公網ip的通常情況(記住幾個外部IP),

⑦測試DNS的通暢。ping出對應IP。

⑧通過以上檢查後,還在網管的路由器上進行檢查。

16.描述Linux shell中單引号、雙引号及不加引号的簡單差別

單引号:所見即所得,即将單引号内的内容原樣輸出,或者描述為單引号裡面看到的是什麼就輸出什麼。

雙引号:把雙引号裡面的内容給輸出出來,如果内容中有指令、變量等,會先把,變來那個、指令解析出結果,然後輸出最終内容。

雙引号内的指令或者變量寫法’指令或變量’或$(指令或變量)

無引号:把内容輸出出來,可能不會鍵含有空格的字元串,視為一個整體輸出,如果内容中有指令、變量等,會先把變量、指令解析出來,然後輸出最終内容,如果字元串中帶有空格等特殊字元,則不能完整輸出,需要改加雙引号。一般連續的字元串,數字,路徑等可以用,不過最好用雙引号,替代之。