1. 程式人生 > 實用技巧 >運維必須掌握的Linux面試題

運維必須掌握的Linux面試題

1、解釋下什麼是GPL,GNU,自由軟體?

GPL:(通用公共許可證):一種授權,任何人有權取得、修改、重新發布自由軟體的權力。
GNU:(革奴計劃):目標是建立一套完全自由、開放的的作業系統。
自由軟體:是一種可以不受限制地自由使用、複製、研究、修改和分發的軟體。主要許可證有GPL和BSD許可證兩種。

2、linux系統裡,buffer和cache如何區分?

buffer和cache都是記憶體中的一塊區域,
當CPU需要寫資料到磁碟時,由於磁碟速度比較慢,所以CPU先把資料存進buffer,
然後CPU去執行其他任務,buffer中的資料會定期寫入磁碟;

當CPU需要從磁碟讀入資料時,由於磁碟速度比較慢,
可以把即將用到的資料提前存入cache,CPU直接從Cache中拿資料要快的多。

3、描述Linux執行級別0-6的各自含義

0:關機模式
1:單使用者模式<==破解root密碼
2:無網路支援的多使用者模式
3:有網路支援的多使用者模式(文字模式,工作中最常用的模式)
4:保留,未使用
5:有網路支援的X-windows支援多使用者模式(桌面)
6: 重新引導系統,即重啟

4、描述Linux系統從開機到登陸介面的啟動過程

⑴開機BIOS自檢,載入硬碟。
⑵讀取MBR,MBR引導。
⑶grub引導選單(Boot Loader)。
⑷載入核心kernel。
⑸啟動init程序,依據inittab檔案設定執行級別
⑹init程序,執行rc.sysinit檔案。
⑺啟動核心模組,執行不同級別的指令碼程式。
⑻執行/etc/rc.d/rc.local
⑼啟動mingetty,進入系統登陸介面。

5、描述Linux下軟連結和硬連結的區別

在Linux系統中,連結分為兩種,一種是硬連結(Hard link),另一種稱為符號連結或軟連結(Symbolic Link)。
①預設不帶引數的情況下,ln建立的是硬連結,帶-s引數的ln命令建立的是軟連結。
②硬連結檔案與原始檔的inode節點號相同,而軟連結檔案的inode節點號,與原始檔不同,
③ln命令不能對目錄建立硬連結,但可以建立軟連結。對目錄的軟連結會經常使用到。
④刪除軟連結檔案,對原始檔和硬連結檔案無任何影響。
⑤刪除檔案的硬連結檔案,對原始檔及軟連結檔案無任何影響。
⑥刪除連結檔案的原始檔,對硬連結檔案無影響,會導致其軟連結失效(紅底白字閃爍狀)。
⑦同時刪除原始檔及其硬連結檔案,整個檔案才會被真正的刪除。
⑧很多硬體裝置的快照功能,使用的就是類似硬連結的原理。
⑨軟連結可以跨檔案系統,硬連結不可以跨檔案系統。

6、shell指令碼中“$?”標記的用途是什麼?

在寫一個shell指令碼時,如果你想要檢查前一命令是否執行成功,在if條件中使用“$?”可以來檢查前一命令的結束狀態。簡單的例子如下:
root@localhost:~# ls /usr/bin/
root@localhost:~# echo $?
0

如果結束狀態是0,說明前一個命令執行成功。
root@localhost:~# ls /usr/bin/share
ls: cannot access /usr/bin/share: No such file or directory

root@localhost:~# echo $?
2
如果結束狀態不是0,說明命令執行失敗。

7、如何讓history命令顯示具體時間?

$ HISTTIMEFORMAT="%Y-%m-%d %H:%M:%S"

$ export HISTTIMEFORMAT

重新開機後會還原,可以寫/etc/profile

8、用shell統計ip訪問情況,要求分析nginx訪問日誌,找出訪問頁面數量在前10位的IP數。以下是nginx的訪問日誌節選

202.101.129.218- - [26/Mar/2006:23:59:55 +0800] "GET /online/stat_inst.php?pid=d065HTTP/1.1" 302 20-"-" "-" "Mozilla/4.0(compatible; MSIE 6.0; Windows NT 5.1)"

# 請寫shell實現輸出top10的IP列表。

$ awk '{print $1}' access.log |sort|uniq -c |head -n 10

31 202.101.129.218
21 123.93.29.11
11 13.92.19.31

9、將本地的80埠的請求轉發到8080埠,本機地址10.0.0.254,寫出命令

$ iptables -t nat -A PREROUTING -d 10.0.0.254 -p tcp --dprot 80 -j DNAT --to-destination 10.0.0.254:8080

10、Load過高的可能性有哪些?

排查思路:
1. 首先排查哪些程序cpu佔用率高。通過命令 ps ux
2、假如通過第一步看到一個JAVA程序佔有資源比較高,檢視對應java程序的每個執行緒的CPU佔用率。通過命令:ps -Lp 15047
3、追蹤執行緒內部,檢視load過高原因。通過命令:jstack 15047

其他經驗:
cpu load的飆升,一方面可能和full gc的次數增大有關,一方面可能和死迴圈有關

11、描述/etc/fstab 檔案中每個欄位的含義?

(1)第一列:將被載入的檔案系統名;
(2)第二列:該檔案系統的安裝點;
(3)第三列:檔案系統的型別;
(4)第四列:設定引數;
(5)第五列:供備份程式確定上次備份距現在的天數;
(6)第六列:在系統引導時檢測檔案系統的順序。

12、 如何在打包時排除指定目錄?

$ tar --exclude=/home/dmtsai --exclude=*.tar -zcvf myfile.tar.gz /home/* /etc

13、怎麼生成隨機密碼?

mkpasswd -l 8  -C 2 -c 2 -d 4 -s 0

14、如何統計tcp狀態?

netstat -an | grep '^tcp' | awk '{++s[$NF]} END{for(i in s) print i "\t"s[i]}'

15、mysql 忘記 root 密碼怎麼辦

$ mysqld_safe --user=mysql --skip-grant-tables --skip-networking & use mysql;
mysql> update user set password=password('123123') where user='root';

更多文章和資料 ↓↓↓
阿里雲K8s實戰手冊 K8s
阿里雲CDN排坑指南 CDN
ECS運維指南 ECS
DevOps實踐手冊 DevOps
Hadoop大資料實戰手冊 Hadoop