運維必須掌握的Linux面試題

來自公眾號:馬哥Linux運維
作者:馬哥企業(yè)教練團隊

1、解釋下什么是GPL,GNU,自由軟件?
GPL:(通用公共許可證):一種授權(quán),任何人有權(quán)取得、修改、重新發(fā)布自由軟件的權(quán)力。
GNU:(革奴計劃):目標是創(chuàng)建一套完全自由、開放的的操作系統(tǒng)。
自由軟件:是一種可以不受限制地自由使用、復制、研究、修改和分發(fā)的軟件。主要許可證有GPL和BSD許可證兩種。
2、linux系統(tǒng)里,buffer和cache如何區(qū)分?

buffer和cache都是內(nèi)存中的一塊區(qū)域,
當CPU需要寫數(shù)據(jù)到磁盤時,由于磁盤速度比較慢,所以CPU先把數(shù)據(jù)存進buffer,
然后CPU去執(zhí)行其他任務,buffer中的數(shù)據(jù)會定期寫入磁盤;

當CPU需要從磁盤讀入數(shù)據(jù)時,由于磁盤速度比較慢,
可以把即將用到的數(shù)據(jù)提前存入cache,CPU直接從Cache中拿數(shù)據(jù)要快的多。
3、描述Linux運行級別0-6的各自含義

0:關(guān)機模式
1:單用戶模式<==破解root密碼
2:無網(wǎng)絡支持的多用戶模式
3:有網(wǎng)絡支持的多用戶模式(文本模式,工作中最常用的模式)
4:保留,未使用
5:有網(wǎng)絡支持的X-windows支持多用戶模式(桌面)
6: 重新引導系統(tǒng),即重啟
4、描述Linux系統(tǒng)從開機到登陸界面的啟動過程

⑴開機BIOS自檢,加載硬盤。
⑵讀取MBR,MBR引導。
⑶grub引導菜單(Boot Loader)。
⑷加載內(nèi)核kernel。
⑸啟動init進程,依據(jù)inittab文件設定運行級別
⑹init進程,執(zhí)行rc.sysinit文件。
⑺啟動內(nèi)核模塊,執(zhí)行不同級別的腳本程序。
⑻執(zhí)行/etc/rc.d/rc.local
⑼啟動mingetty,進入系統(tǒng)登陸界面。
5、描述Linux下軟鏈接和硬鏈接的區(qū)別

在Linux系統(tǒng)中,鏈接分為兩種,一種是硬鏈接(Hard link),另一種稱為符號鏈接或軟鏈接(Symbolic Link)。
①默認不帶參數(shù)的情況下,ln創(chuàng)建的是硬鏈接,帶-s參數(shù)的ln命令創(chuàng)建的是軟鏈接。
②硬鏈接文件與源文件的inode節(jié)點號相同,而軟鏈接文件的inode節(jié)點號,與源文件不同,
③ln命令不能對目錄創(chuàng)建硬鏈接,但可以創(chuàng)建軟鏈接。對目錄的軟鏈接會經(jīng)常使用到。
④刪除軟鏈接文件,對源文件和硬鏈接文件無任何影響。
⑤刪除文件的硬鏈接文件,對源文件及軟鏈接文件無任何影響。
⑥刪除鏈接文件的源文件,對硬鏈接文件無影響,會導致其軟鏈接失效(紅底白字閃爍狀)。
⑦同時刪除源文件及其硬鏈接文件,整個文件才會被真正的刪除。
⑧很多硬件設備的快照功能,使用的就是類似硬鏈接的原理。
⑨軟鏈接可以跨文件系統(tǒng),硬鏈接不可以跨文件系統(tǒng)。
6、shell腳本中“$?”標記的用途是什么?

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

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

root@localhost:~# echo $?
2
如果結(jié)束狀態(tài)不是0,說明命令執(zhí)行失敗。
7、如何讓history命令顯示具體時間?

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

$ export HISTTIMEFORMAT

重新開機后會還原,可以寫/etc/profile
8、用shell統(tǒng)計ip訪問情況,要求分析nginx訪問日志,找出訪問頁面數(shù)量在前10位的IP數(shù)。以下是nginx的訪問日志節(jié)選
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實現(xiàn)輸出top10的IP列表。

awk '{print1}' 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端口的請求轉(zhuǎn)發(fā)到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、追蹤線程內(nèi)部,查看load過高原因。通過命令:jstack 15047

其他經(jīng)驗:
cpu load的飆升,一方面可能和full gc的次數(shù)增大有關(guān),一方面可能和死循環(huán)有關(guān)
11、描述/etc/fstab 文件中每個字段的含義?
(1)第一列:將被加載的文件系統(tǒng)名;
(2)第二列:該文件系統(tǒng)的安裝點;
(3)第三列:文件系統(tǒng)的類型;
(4)第四列:設置參數(shù);
(5)第五列:供備份程序確定上次備份距現(xiàn)在的天數(shù);
(6)第六列:在系統(tǒng)引導時檢測文件系統(tǒng)的順序。
12、 如何在打包時排除指定目錄?
$ tar --exclude=/home/dmtsai --exclude=.tar -zcvf myfile.tar.gz /home/ /etc

  1. 怎么生成隨機密碼?
    mkpasswd -l 8 -C 2 -c 2 -d 4 -s 0
    14、如何統(tǒng)計tcp狀態(tài)?
    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';

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容