## 一、什么是Linux
Linux是一套免費使用和自由傳播的類[Unix操作系統](https://so.csdn.net/so/search?q=Unix%E6%93%8D%E4%BD%9C%E7%B3%BB%E7%BB%9F&spm=1001.2101.3001.7020),是一個基于POSIX和Unix的多用戶、多任務、支持多線程和多CPU的操作系統。它能運行主要的Unix工具軟件、應用程序和網絡協議。它支持32位和64位硬件。Linux繼承了Unix以網絡為核心的設計思想,是一個性能穩定的多用戶網絡操作系統。
## 二、什么是 Linux 內核?
Linux 系統的核心是內核。內核控制著計算機系統上的所有硬件和軟件,在必要時分配硬件,并根據需要執行軟件。
1. 系統內存管理
2. 應用程序管理
3. 硬件設備管理
4. 文件系統管理
## 三、Linux 的體系結構
從大的方面講,Linux 體系結構可以分為兩塊:
* 用戶空間(User Space) :用戶空間又包括用戶的應用程序(User Applications)、C 庫(C Library) 。
* 內核空間(Kernel Space) :內核空間又包括系統調用接口(System Call Interface)、內核(Kernel)、平臺架構相關的代碼(Architecture-Dependent Kernel Code) 。
## 四、什么是root帳戶
root帳戶就像一個系統管理員帳戶,允許你完全控制系統。你可以在此處創建和維護用戶帳戶,為每個帳戶分配不同的權限。每次安裝Linux時都是默認帳戶。
## 五什么是LILO?
LILO是Linux的引導加載程序。它主要用于將[Linux操作系統](https://so.csdn.net/so/search?q=Linux%E6%93%8D%E4%BD%9C%E7%B3%BB%E7%BB%9F&spm=1001.2101.3001.7020)加載到主內存中,以便它可以開始運行。
## 六、什么是BASH?
BASH是Bourne Again SHell的縮寫。它由Steve Bourne編寫,作為原始Bourne Shell(由/ bin / sh表示)的替代品。它結合了原始版本的Bourne Shell的所有功能,以及其他功能,使其更容易使用。從那以后,**它已被改編為運行Linux的大多數系統的默認shell。**
## 七、Linux 常見目錄說明?
* /bin: 存放二進制可執行文件(ls,cat,mkdir等),常用命令一般都在這里;
* /etc: 存放系統管理和配置文件;
* /home: 存放所有用戶文件的根目錄,是用戶主目錄的基點,比如用戶user的主目錄就是/home/user,可以用~user表示;
* \*\*/usr \*\*: 用于存放系統應用程序;
* /opt: 額外安裝的可選應用程序包所放置的位置。一般情況下,我們可以把tomcat等都安裝到這里;
* /proc: 虛擬文件系統目錄,是系統內存的映射。可直接訪問這個目錄來獲取系統信息;
* /root: 超級用戶(系統管理員)的主目錄(特權階級o);
* /sbin: 存放二進制可執行文件,只有root才能訪問。這里存放的是系統管理員使用的系統級別的管理命令和程序。如ifconfig等;
* /dev: 用于存放設備文件;
* /mnt: 系統管理員安裝臨時文件系統的安裝點,系統提供這個目錄是讓用戶臨時掛載其他的文件系統;
* /boot: 存放用于系統引導時使用的各種文件;
* \*\*/lib \*\*: 存放著和系統運行相關的庫文件 ;
* /tmp: 用于存放各種臨時文件,是公用的臨時文件存儲點;
* /var: 用于存放運行時需要改變數據的文件,也是某些大文件的溢出區,比方說各種服務的日志文件(系統啟動日志等。)等;
* /lost+found: 這個目錄平時是空的,系統非正常關機而留下“無家可歸”的文件(windows下叫什么.chk)就在這里。
## 八、如何規劃一臺 Linux 主機,步驟是怎樣?
* 1、確定機器是做什么用的,比如是做 WEB 、DB、還是游戲服務器。不同的用途,機器的配置會有所不同。
* 2、確定好之后,就要定系統需要怎么安裝,默認安裝哪些系統、分區怎么做。
* 3、需要優化系統的哪些參數,需要創建哪些用戶等等的。
## 九、請問當用戶反饋網站訪問慢,你會如何處理?
注:有哪些方面的因素會導致網站網站訪問慢?
**1、服務器出口帶寬不夠用**
本身服務器購買的**出口帶寬比較小。一旦并發量大的話,就會造成分給每個用戶的出口帶寬就小,訪問速度自然就會慢。**跨運營商網絡導致帶寬縮減。例如,公司網站放在電信的網絡上,那么客戶這邊對接是長城寬帶或聯通,這也可能導致帶寬的縮減。
**2、服務器負載過大,導致響應不過來**
可以從兩個方面入手分析:
* 分析系統負載,使用**w 命令或者 uptime 命令查看系統負載**。如果負載很高,**則使用 top 命令查看 CPU ,MEM 等占用情況,要么是 CPU 繁忙,要么是內存不夠。**
* 如果這二者都正常,**再去使用 sar 命令分析網卡流量,分析是不是遭到了攻擊**。一旦分析出問題的原因,采取對應的措施解決,如決定要不要殺死一些進程,或者禁止一些訪問等。
**3、數據庫瓶頸**
如果慢查詢比較多。那么就要開發人員或 DBA 協助進行 SQL 語句的優化。
如果數據庫響應慢,考慮可以加一個數據庫緩存,**如 Redis 等。然后,也可以搭建 MySQL 主從,一臺 MySQL 服務器負責寫,其他幾臺從數據庫負責讀。**
**4、網站開發代碼沒有優化好**
例如 SQL 語句沒有優化,導致數據庫讀寫相當耗時。
5、CPU線上飚高的原因 :慢請求、慢SQL 、死鎖、死循環
## 十、針對網站訪問慢,怎么去排查?
1、首先要確定是**用戶端還是服務端的問題**。當接到用戶反饋訪問慢,那邊自己立即訪問網站看看,如果自己這邊訪問快,基本斷定是用戶端問題,就需要耐心跟客戶解釋,協助客戶解決問題。不要上來就看服務端的問題。一定要從源頭開始,逐步逐步往下。
2、如果訪問也慢,那么可以利用瀏覽器的調試功能,看看加載那一項數據消耗時間過多,**是圖片加載慢,還是某些數據加載慢**。
3、針對服務器負載情況。查看服務器硬件(網絡、CPU、內存)的消耗情況。如果是購買的云主機,比如阿里云,**可以登錄阿里云平臺提供各方面的監控,比如 CPU、內存、帶寬的使用情況。**
4、如果發現硬件資源消耗都不高,那么就需要通過查日志,比如看看 MySQL慢查詢的日志,看看是不是某條 SQL 語句查詢慢,導致網站訪問慢。
## 十一、解決網站訪問慢
1、如果是出口帶寬問題,那么久申請加大出口帶寬。
2、如果慢查詢比較多,那么就要開發人員或 DBA 協助進行 SQL 語句的優化。
3、如果數據庫響應慢,考慮可以加一個數據庫緩存,如 Redis 等等。然后也可以搭建MySQL 主從,一臺 MySQL 服務器負責寫,其他幾臺從數據庫負責讀。
4、申請購買 CDN 服務,加載用戶的訪問。
5、如果訪問還比較慢,那就需要從整體架構上進行優化咯。做到專角色專用,多臺服務器提供同一個服務。
## 十二、Linux 性能調優都有哪幾種方法?
1、Disabling daemons (關閉 daemons)。
2、Shutting down the GUI (關閉 GUI)。
3、Changing kernel parameters (改變內核參數)。
4、Kernel parameters (內核參數)。
5、Tuning the processor subsystem (處理器子系統調優)。
6、Tuning the memory subsystem (內存子系統調優)。
7、Tuning the file system (文件系統子系統調優)。
8、Tuning the network subsystem(網絡子系統調優)。