1. 程式人生 > >LINUX相關技術面試題(命令,vi編輯器,常見面試問題)

LINUX相關技術面試題(命令,vi編輯器,常見面試問題)

LINUX相關技術面試題

基礎命令:

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”
顯示如下:

[[email protected]

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

  1. 在你的Linux機器上跟蹤系統事件的守護程序名是什麼?
    答案:’syslogd’,它負責跟蹤系統資訊,並將跟蹤日誌儲存在特定的日誌檔案裡。

  2. 在/root分割槽執行’fsck’命令的最低要求是什麼?
    答案:/root分割槽必須掛載為只讀模式,而不是讀寫模式

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

  4. 在Linux中,怎樣實現日誌檔案的自動替換?
    答案:’logrotate’提供日誌自動替換功能。

  5. 怎樣知道Linux中是誰在安排工作?
    答案:使用’at’命令加上’-l’選項,就可以查出。

  6. 如何在不解壓tar包的前提下,檢視包裡的內容?
    答案:使用’tar -tvf’。選項‘t’(顯示內容),‘v’(詳細報告tar處理的檔案資訊),‘f’(使用檔案檔案或者裝置)

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

  8. 什麼是在程式中返回程式碼?
    答案:返回程式碼是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中單引號、雙引號及不加引號的簡單區別
單引號:所見即所得,即將單引號內的內容原樣輸出,或者描述為單引號裡面看到的是什麼就輸出什麼。
雙引號:把雙引號裡面的內容給輸出出來,如果內容中有命令、變數等,會先把,變來那個、命令解析出結果,然後輸出最終內容。
雙引號內的命令或者變數寫法’命令或變數’或$(命令或變數)
無引號:把內容輸出出來,可能不會鍵含有空格的字串,視為一個整體輸出,如果內容中有命令、變數等,會先把變數、命令解析出來,然後輸出最終內容,如果字串中帶有空格等特殊字元,則不能完整輸出,需要改加雙引號。一般連續的字串,數字,路徑等可以用,不過最好用雙引號,替代之。