Linux 概述
詳細(xì)教程資料關(guān)注+后臺私信;資料;兩個字可以免費(fèi)視頻領(lǐng)取+文檔+各大廠面試題 資料內(nèi)容包括:C/C++,Linux,golang,Nginx,ZeroMQ,MySQL,Redis,fastdfs,MongoDB,ZK,流媒體,CDN,P2P,K8S,Docker,TCP/IP,協(xié)程,DPDK,嵌入式 等。
什么是LinuxC/C++Linux服務(wù)器開發(fā)/后臺架構(gòu)師【零聲教育】-學(xué)習(xí)視頻教程-騰訊課堂
Linux是一套免費(fèi)使用和自由傳播的類Unix操作系統(tǒng),是一個基于POSIX和Unix的多用戶、多任務(wù)、支持多線程和多CPU的操作系統(tǒng)。它能運(yùn)行主要的Unix工具軟件、應(yīng)用程序和網(wǎng)絡(luò)協(xié)議。它支持32位和64位硬件。Linux繼承了Unix以網(wǎng)絡(luò)為核心的設(shè)計(jì)思想,是一個性能穩(wěn)定的多用戶網(wǎng)絡(luò)操作系統(tǒng)。
Linux的基本組件是什么?
就像任何其他典型的操作系統(tǒng)一樣,Linux擁有所有這些組件:內(nèi)核,shell和GUI,系統(tǒng)實(shí)用程序和應(yīng)用程序。Linux比其他操作系統(tǒng)更具優(yōu)勢的是每個方面都附帶其他功能,所有代碼都可以免費(fèi)下載。
Linux 的體系結(jié)構(gòu)C/C++Linux服務(wù)器開發(fā)/后臺架構(gòu)師【零聲教育】-學(xué)習(xí)視頻教程-騰訊課堂
從大的方面講,Linux 體系結(jié)構(gòu)可以分為兩塊:
用戶空間(User Space) :用戶空間又包括用戶的應(yīng)用程序(User Applications)、C 庫(C Library) 。
內(nèi)核空間(Kernel Space) :內(nèi)核空間又包括系統(tǒng)調(diào)用接口(System Call Interface)、內(nèi)核(Kernel)、平臺架構(gòu)相關(guān)的代碼(Architecture-Dependent Kernel Code) 。
為什么 Linux 體系結(jié)構(gòu)要分為用戶空間和內(nèi)核空間的原因?
1、現(xiàn)代 CPU 實(shí)現(xiàn)了不同的工作模式,不同的工作模式下 CPU 可以執(zhí)行的指令和訪問的寄存器不同。
2、Linux 從 CPU 的角度出發(fā),為了保護(hù)內(nèi)核的安全,把系統(tǒng)分成了兩部分。
用戶空間和內(nèi)核空間是程序執(zhí)行的兩種不同的狀態(tài),我們可以通過兩種方式完成用戶空間到內(nèi)核空間的轉(zhuǎn)移:1)系統(tǒng)調(diào)用;2)硬件中斷。
BASH和DOS之間的基本區(qū)別是什么?
BASH和DOS控制臺之間的主要區(qū)別在于3個方面:
BASH命令區(qū)分大小寫,而DOS命令則不區(qū)分;
在BASH下,/ character是目錄分隔符,\作為轉(zhuǎn)義字符。在DOS下,/用作命令參數(shù)分隔符,\是目錄分隔符
DOS遵循命名文件中的約定,即8個字符的文件名后跟一個點(diǎn),擴(kuò)展名為3個字符。BASH沒有遵循這樣的慣例。
Linux 開機(jī)啟動過程?
詳細(xì)教程資料關(guān)注+后臺私信;資料;兩個字可以免費(fèi)視頻領(lǐng)取+文檔+各大廠面試題 資料內(nèi)容包括:C/C++,Linux,golang,Nginx,ZeroMQ,MySQL,Redis,fastdfs,MongoDB,ZK,流媒體,CDN,P2P,K8S,Docker,TCP/IP,協(xié)程,DPDK,嵌入式 等。
了解即可。
1、主機(jī)加電自檢,加載 BIOS 硬件信息。
2、讀取 MBR 的引導(dǎo)文件(GRUB、LILO)。
3、引導(dǎo) Linux 內(nèi)核。
4、運(yùn)行第一個進(jìn)程 init (進(jìn)程號永遠(yuǎn)為 1 )。
5、進(jìn)入相應(yīng)的運(yùn)行級別。
6、運(yùn)行終端,輸入用戶名和密碼。
Linux系統(tǒng)缺省的運(yùn)行級別?
關(guān)機(jī)。
單機(jī)用戶模式。
字符界面的多用戶模式(不支持網(wǎng)絡(luò))。
字符界面的多用戶模式。
未分配使用。
圖形界面的多用戶模式。
重啟。
Linux 使用的進(jìn)程間通信方式?
了解即可,不需要太深入。
1、管道(pipe)、流管道(s_pipe)、有名管道(FIFO)。
2、信號(signal) 。
3、消息隊(duì)列。
4、共享內(nèi)存。
5、信號量。
6、套接字(socket) 。
Linux 有哪些系統(tǒng)日志文件?
比較重要的是 /var/log/messages 日志文件。
該日志文件是許多進(jìn)程日志文件的匯總,從該文件可以看出任何入侵企圖或成功的入侵。
另外,如果胖友的系統(tǒng)里有 ELK 日志集中收集,它也會被收集進(jìn)去。
Linux系統(tǒng)安裝多個桌面環(huán)境有幫助嗎?
通常,一個桌面環(huán)境,如KDE或Gnome,足以在沒有問題的情況下運(yùn)行。盡管系統(tǒng)允許從一個環(huán)境切換到另一個環(huán)境,但這對用戶來說都是優(yōu)先考慮的問題。有些程序在一個環(huán)境中工作而在另一個環(huán)境中無法工作,因此它也可以被視為選擇使用哪個環(huán)境的一個因素。
什么是交換空間?
交換空間是Linux使用的一定空間,用于臨時保存一些并發(fā)運(yùn)行的程序。當(dāng)RAM沒有足夠的內(nèi)存來容納正在執(zhí)行的所有程序時,就會發(fā)生這種情況。
磁盤、目錄、文件
簡單 Linux 文件系統(tǒng)?
在 Linux 操作系統(tǒng)中,所有被操作系統(tǒng)管理的資源,例如網(wǎng)絡(luò)接口卡、磁盤驅(qū)動器、打印機(jī)、輸入輸出設(shè)備、普通文件或是目錄都被看作是一個文件。
也就是說在 Linux 系統(tǒng)中有一個重要的概念**:一切都是文件**。其實(shí)這是 Unix 哲學(xué)的一個體現(xiàn),而 Linux 是重寫 Unix 而來,所以這個概念也就傳承了下來。在 Unix 系統(tǒng)中,把一切資源都看作是文件,包括硬件設(shè)備。UNIX系統(tǒng)把每個硬件都看成是一個文件,通常稱為設(shè)備文件,這樣用戶就可以用讀寫文件的方式實(shí)現(xiàn)對硬件的訪問。
Linux 支持 5 種文件類型,如下圖所示:
Linux 的目錄結(jié)構(gòu)是怎樣的?
這個問題,一般人不會問。更多的是實(shí)際使用時,需要知道。
Linux 文件系統(tǒng)的結(jié)構(gòu)層次鮮明,就像一棵倒立的樹,最頂層是其根目錄:
常見目錄說明:
/bin: 存放二進(jìn)制可執(zhí)行文件(ls,cat,mkdir等),常用命令一般都在這里; /etc: 存放系統(tǒng)管理和配置文件; /home: 存放所有用戶文件的根目錄,是用戶主目錄的基點(diǎn),比如用戶user的主目錄就是/home/user,可以用~user表示;**/usr **: 用于存放系統(tǒng)應(yīng)用程序; /opt: 額外安裝的可選應(yīng)用程序包所放置的位置。一般情況下,我們可以把tomcat等都安裝到這里; /proc: 虛擬文件系統(tǒng)目錄,是系統(tǒng)內(nèi)存的映射。可直接訪問這個目錄來獲取系統(tǒng)信息; /root: 超級用戶(系統(tǒng)管理員)的主目錄(特權(quán)階級o); /sbin: 存放二進(jìn)制可執(zhí)行文件,只有root才能訪問。這里存放的是系統(tǒng)管理員使用的系統(tǒng)級別的管理命令和程序。如ifconfig等; /dev: 用于存放設(shè)備文件; /mnt: 系統(tǒng)管理員安裝臨時文件系統(tǒng)的安裝點(diǎn),系統(tǒng)提供這個目錄是讓用戶臨時掛載其他的文件系統(tǒng); /boot: 存放用于系統(tǒng)引導(dǎo)時使用的各種文件;**/lib **: 存放著和系統(tǒng)運(yùn)行相關(guān)的庫文件 ; /tmp: 用于存放各種臨時文件,是公用的臨時文件存儲點(diǎn); /var: 用于存放運(yùn)行時需要改變數(shù)據(jù)的文件,也是某些大文件的溢出區(qū),比方說各種服務(wù)的日志文件(系統(tǒng)啟動日志等。)等; /lost+found: 這個目錄平時是空的,系統(tǒng)非正常關(guān)機(jī)而留下無家可歸的文件(windows下叫什么.chk)就在這里。什么是 inode ?
一般來說,面試不會問 inode 。但是 inode 是一個重要概念,是理解 Unix/Linux 文件系統(tǒng)和硬盤儲存的基礎(chǔ)。
理解inode,要從文件儲存說起。
文件儲存在硬盤上,硬盤的最小存儲單位叫做"扇區(qū)"(Sector)。每個扇區(qū)儲存512字節(jié)(相當(dāng)于0.5KB)。
操作系統(tǒng)讀取硬盤的時候,不會一個個扇區(qū)地讀取,這樣效率太低,而是一次性連續(xù)讀取多個扇區(qū),即一次性讀取一個"塊"(block)。這種由多個扇區(qū)組成的"塊",是文件存取的最小單位。"塊"的大小,最常見的是4KB,即連續(xù)八個 sector組成一個 block。
文件數(shù)據(jù)都儲存在"塊"中,那么很顯然,我們還必須找到一個地方儲存文件的元信息,比如文件的創(chuàng)建者、文件的創(chuàng)建日期、文件的大小等等。這種儲存文件元信息的區(qū)域就叫做inode,中文譯名為"索引節(jié)點(diǎn)"。
每一個文件都有對應(yīng)的inode,里面包含了與該文件有關(guān)的一些信息。
簡述 Linux 文件系統(tǒng)通過 i 節(jié)點(diǎn)把文件的邏輯結(jié)構(gòu)和物理結(jié)構(gòu)轉(zhuǎn)換的工作過程?
如果看得一臉懵逼,也沒關(guān)系。一般來說,面試官不太會問這個題目。
Linux 通過 inode 節(jié)點(diǎn)表將文件的邏輯結(jié)構(gòu)和物理結(jié)構(gòu)進(jìn)行轉(zhuǎn)換。
inode 節(jié)點(diǎn)是一個 64 字節(jié)長的表,表中包含了文件的相關(guān)信息,其中有文件的大小、文件所有者、文件的存取許可方式以及文件的類型等重要信息。在 inode 節(jié)點(diǎn)表中最重要的內(nèi)容是磁盤地址表。在磁盤地址表中有 13 個塊號,文件將以塊號在磁盤地址表中出現(xiàn)的順序依次讀取相應(yīng)的塊。
Linux 文件系統(tǒng)通過把 inode 節(jié)點(diǎn)和文件名進(jìn)行連接,當(dāng)需要讀取該文件時,文件系統(tǒng)在當(dāng)前目錄表中查找該文件名對應(yīng)的項(xiàng),由此得到該文件相對應(yīng)的 inode 節(jié)點(diǎn)號,通過該 inode 節(jié)點(diǎn)的磁盤地址表把分散存放的文件物理塊連接成文件的邏輯結(jié)構(gòu)。
什么是硬鏈接和軟鏈接?
1)硬鏈接
由于 Linux 下的文件是通過索引節(jié)點(diǎn)(inode)來識別文件,硬鏈接可以認(rèn)為是一個指針,指向文件索引節(jié)點(diǎn)的指針,系統(tǒng)并不為它重新分配 inode 。每添加一個一個硬鏈接,文件的鏈接數(shù)就加 1 。
不足:1)不可以在不同文件系統(tǒng)的文件間建立鏈接;2)只有超級用戶才可以為目錄創(chuàng)建硬鏈接。
2)軟鏈接
軟鏈接克服了硬鏈接得不足,沒有任何文件系統(tǒng)的限制,任何用戶可以創(chuàng)建指向目錄的符號鏈接。因而現(xiàn)在更為廣泛使用,它具有更大的靈活性,甚至可以跨越不同機(jī)器、不同網(wǎng)絡(luò)對文件進(jìn)行鏈接。
不足:因?yàn)殒溄游募性募穆窂叫畔?,所以?dāng)原文件從一個目錄下移到其他目錄中,再訪問鏈接文件,系統(tǒng)就找不到了,而硬鏈接就沒有這個缺陷,你想怎么移就怎么移;還有它要系統(tǒng)分配額外的空間用于建立新的索引節(jié)點(diǎn)和保存原文件的路徑。
實(shí)際場景下,基本是使用軟鏈接??偨Y(jié)區(qū)別如下:
硬鏈接不可以跨分區(qū),軟件鏈可以跨分區(qū)。
硬鏈接指向一個 inode 節(jié)點(diǎn),而軟鏈接則是創(chuàng)建一個新的 inode 節(jié)點(diǎn)。
刪除硬鏈接文件,不會刪除原文件,刪除軟鏈接文件,會把原文件刪除。
一臺 Linux 系統(tǒng)初始化環(huán)境后需要做一些什么安全工作?
詳細(xì)教程資料關(guān)注+后臺私信;資料;兩個字可以免費(fèi)視頻領(lǐng)取+文檔+各大廠面試題 資料內(nèi)容包括:C/C++,Linux,golang,Nginx,ZeroMQ,MySQL,Redis,fastdfs,MongoDB,ZK,流媒體,CDN,P2P,K8S,Docker,TCP/IP,協(xié)程,DPDK,嵌入式 等。
1、添加普通用戶登陸,禁止進(jìn)入 root 用戶登陸,更改 SSH 端口號。
修改 SSH 端口不一定絕對哈。當(dāng)然,如果要暴露在外網(wǎng),建議改下。l
2、服務(wù)器使用密鑰登陸,禁止密碼登陸。
3、開啟防火墻,關(guān)閉 SElinux ,根據(jù)業(yè)務(wù)需求設(shè)置相應(yīng)的防火墻規(guī)則。
4、裝 fail2ban 這種防止 SSH 暴力破擊的軟件。
5、設(shè)置只允許公司辦公網(wǎng)出口 IP 能登陸服務(wù)器(看公司實(shí)際需要)
也可以安裝 VPN 等軟件,只允許連接 VPN 到服務(wù)器上。
6、修改歷史命令記錄的條數(shù)為 10 條。
7、只允許有需要的服務(wù)器可以訪問外網(wǎng),其它全部禁止。
8、做好軟件層面的防護(hù)。
8.1 設(shè)置 nginx_waf 模塊防止 SQL 注入。
8.2 把 Web 服務(wù)使用 www 用戶啟動,更改網(wǎng)站目錄的所有者和所屬組為 www