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