當前位置: 妍妍網 > 碼農

【附最難筆試題】應聘運維崗應知必會的面試題,你知道多少?

2024-07-11碼農

關註上方 浩道Linux ,回復 資料 ,即可獲取海量 L inux Python 網路通訊、網路安全 等學習資料!

前言

大家好,這裏是 浩道Linux ,主要給大家分享 L inux P ython 網路通訊、網路安全等 相關的IT知識平台。

最近不少小夥伴私聊我咨詢換工作的事,他們已經開始籌備秋招了,這裏浩道也針對Linux運維崗搜集一些面試題給大家練練手。看看大家對於這份應知必會的運維崗面試題,都知道多少了?文末還附上了被大家公認最難的筆試題!看看大家掌握程度怎麽樣了!

文章來源:相關資源綜合自網路

下面是一名運維人員求職數十家公司總結的 Linux運維面試題,給大家參考下~

1、現在給你三百台伺服器,你怎麽對他們進行管理?

管理3百台伺服器的方式:
1)設定彈板機,使用統一帳號登入,便於安全與登入的考量。
2)使用 salt、ansiable、puppet 進行系統的統一排程與配置的統一管理。
3)建立簡單的伺服器的系統、配置、套用的 cmdb 資訊管理。便於查閱每台伺服器上的各種資訊記錄。

2、簡述 raid0 raid1 raid5 三種工作模式的工作原理及特點

RAID,可以把硬碟整合成一個大磁盤,還可以在大磁盤上再分區,放數據
還有一個大功能,多塊盤放在一起可以有冗余(備份)
RAID整合方式有很多,常用的:0 1 5 10

RAID 0,可以是一塊盤和 N 個盤組合

  • 優點 讀寫快,是 RAID 中最好的

  • 缺點 沒有冗余,一塊壞了數據就全沒有了

  • RAID 1,只能2塊盤,盤的大小可以不一樣,以小的為準。

  • 10G+10G只有10G,另一個做備份。 它有100%的冗余,

  • 缺點: 浪費資源,成本高

  • RAID 5 ,3塊盤,容量計算10 *(n-1),損失一塊盤

    特點,讀寫效能一般,讀還好一點,寫不好

  • 冗余從好到壞: RAID1 RAID10 RAID 5 RAID0

  • 效能從好到壞: RAID0 RAID10 RAID5 RAID1

  • 成本從低到高: RAID0 RAID5 RAID1 RAID10

  • 單台伺服器:很重要盤不多,系統槽,RAID1
    資料庫伺服器:主庫:RAID10 從庫 RAID5\RAID0(為了維護成本,RAID10)
    WEB伺服器,如果沒有太多的數據的話,RAID5,RAID0(單盤)
    有多台,監控、套用伺服器,RAID0 RAID5

    我們會根據數據的儲存和存取的需求,去匹配對應的RAID級別

    3、LVS、Nginx、HAproxy 有什麽區別?工作中你怎麽選擇?

  • LVS 是基於四層的轉發

  • HAproxy 是基於四層和七層的轉發,是專業的代理伺服器

  • Nginx 是WEB伺服器,緩存伺服器,又是反向代理伺服器,可以做七層的轉發

  • 區別:LVS由於是基於四層的轉發所以只能做埠的轉發,而基於 URL 的、基於目錄的這種轉發LVS就做不了。

    工作選擇:

  • HAproxy 和 Nginx 由於可以做七層的轉發,所以 URL 和目錄的轉發都可以做

  • 在很大並行量的時候我們就要選擇LVS,像中小型公司的話並行量沒那麽大

  • 選擇 HAproxy 或者 Nginx 足已,由於 HAproxy 由是專業的代理伺服器

  • 配置簡單,所以中小型企業推薦使用 HAproxy

  • 4、Squid、Varinsh 和 Nginx 有什麽區別,工作中你怎麽選擇?

    Squid、Varinsh 和 Nginx 都是代理伺服器

    什麽是代理伺服器:

    能當替使用者去存取公網,並且能把存取到的數據緩存到伺服器本地,等使用者下次再存取相同的資源的時候,代理伺服器直接從本地回應給使用者,當本地沒有的時候,我代替你去存取公網,我接收你的請求,我先在我自已的本地緩存找,如果我本地緩存有,我直接從我原生的緩存裏回復你;如果我在我本地沒有找到你要存取的緩存的數據,那麽代理伺服器就會代替你去存取公網。

    區別:

    1)Nginx 本來是反向代理/web伺服器,用了外掛程式可以做做這個副業,但是本身不支持特性挺多,只能緩存靜態檔
    2)從這些功能上。varnish 和 squid 是專業的 cache 服務,而 nginx 這些是第三方模組完成
    3)varnish 本身的技術上優勢要高於 squid,它采用了視覺化頁面緩存技術

    在記憶體的利用上,Varnish 比 Squid 具有優勢,效能要比 Squid 高。還有強大的透過 Varnish 管理埠,可以使用正規表式快速、批次地清除部份緩存。它是記憶體緩存,速度一流,但是記憶體緩存也限制了其容量,緩存頁面和圖片一般是挺好的

    4)squid 的優勢在於完整的龐大的 cache 技術資料,和很多的套用生產環境

    工作中選擇:

    要做 cache 服務的話,我們肯定是要選擇專業的cache服務,優先選擇squid或者varnish。

    5、Tomcat和Resin有什麽區別,工作中你怎麽選擇?

  • 區別 Tomcat 使用者數多,可參考文件多,Resin使用者數少,可考慮文件少

  • 最主要區別則是 Tomcat 是標準的 java 容器,不過效能方面比 resin 的要差一些。但穩定性和 java 程式的相容性,應該是比 resin 的要好

    工作中選擇:現在大公司都是用 resin,追求效能;而中小型公司都是用 Tomcat,追求穩定和程式的相容

    6、什麽是中介軟體?什麽是jdk?

    中介軟體介紹:

    中介軟體是一種獨立的系統軟體或服務程式,分布式套用軟體借助這種軟體在不同的技術之間共享資源。中介軟體位元於客戶機/伺服器的作業系統之上,管理電腦資源和網路通訊,是連線兩個獨立應用程式或獨立系統的軟體。

    相連線的系統,即使它們具有不同的介面,但透過中介軟體相互之間仍能交換資訊。執行中介軟體的一個關鍵途徑是資訊傳遞,透過中介軟體,應用程式可以工作於多平台或OS環境。

    jdk:jdk是Java的開發工具包
    它是一種用於構建在 Java 平台上釋出的應用程式、applet 和元件的開發環境

    7、講述一下Tomcat8005、8009、8080三個埠的含義?

    8005 - 關閉時使用
    8009 - 為AJP埠,即容器使用,如Apache能透過AJP協定存取Tomcat的8009埠
    8080 - 一般套用使用

    8、什麽叫CDN?

  • 即內容分發網路

  • 其目的是透過在現有的 Internet 中增加一層新的網路架構,將網站的內容釋出到最接近使用者的網路邊緣,使使用者可就近取得所需的內容,提高使用者存取網站的速度

  • 9、什麽叫網站灰度釋出?

    灰度釋出是指在黑與白之間,能夠平滑過渡的一種釋出方式。

    AB test 就是一種灰度釋出方式,讓一部使用者繼續用A,一部份使用者開始用B,如果使用者對B沒有什麽反對意見,那麽逐步擴大範圍,把所有使用者都遷移到B上面來,灰度釋出可以保證整體系統的穩定,在初始灰度的時候就可以發現、調整問題,以保證其影響度。

    10、簡述 DNS 進行網域名稱解析的過程?

    使用者要存取 www.baidu.com,會先找本機的 host 檔,再找本地設定的 DNS 伺服器,如果也沒有的話,就去網路中找根伺服器,根伺服器反饋結果,說只能提供一級網域名稱伺服器.cn,就去找一級網域名稱伺服器,一級網域名稱伺服器說只能提供二級網域名稱伺服器.com.cn,就去找二級網域名稱伺服器。

    二級域伺服器只能提供三級網域名稱伺服器.baidu.com.cn,就去找三級網域名稱伺服器,三級網域名稱伺服器正好有這個網站www.baidu.com,然後發給請求的伺服器,保存一份之後,再發給客戶端。

    11、RabbitMQ 是什麽東西?

    RabbitMQ 也就是訊息佇列中介軟體,訊息中介軟體是在訊息的傳息過程中保存訊息的容器,訊息中介軟體再將訊息從它的源中到它的目標中標時充當中間人的作用。佇列的主要目的是提供路由並保證訊息的傳遞;如果發送訊息時接收者不可用,訊息佇列不會保留訊息,直到可以成功地傳遞為止,當然,訊息佇列保存訊息也是有期限地。

    12、講述一下LVS三種模式的工作過程?

    LVS 有三種負載均衡的模式,分別是 VS/NAT(nat 模式)、VS/DR(路由模式)、VS/TUN(隧道模式)

    一、NAT模式(VS-NAT)

    原理:就是把客戶端發來的封包的IP頭的目的地址,在負載均衡器上換成其中一台RS的IP地址

    並行至此 RS 來處理,RS處理完後把數據交給負載均衡器,負載均衡器再把封包原IP地址改為自己的IP

    將目的地址改為客戶端IP地址即可期間,無論是進來的流量,還是出去的流量,都必須經過負載均衡器

  • 優點 集群中的物理伺服器可以使用任何支持TCP/IP作業系統,只有負載均衡器需要一個合法的IP地址

  • 缺點 擴充套件性有限。當伺服器節點(普通PC伺服器)增長過多時,負載均衡器將成為整個系統的瓶頸

  • 因為所有的請求包和應答包的流向都經過負載均衡器。當伺服器節點過多時

    大量的封包都交匯在負載均衡器那,速度就會變慢!

    二、IP隧道模式(VS-TUN)

    原理:首先要知道,互聯網上的大多Internet服務的請求包很短小,而應答包通常很大

    那麽隧道模式就是,把客戶端發來的封包,封裝一個新的IP頭標記(僅目的IP)發給RS

    RS收到後,先把封包的頭解開,還原封包,處理後,直接返回給客戶端,不需要再經過

    負載均衡器。註意,由於RS需要對負載均衡器發過來的封包進行還原,所以說必須支持

    IPTUNNEL協定,所以,在RS的內核中,必須編譯支持IPTUNNEL這個選項

  • 優點 :負載均衡器只負責將請求包分發給後端節點伺服器,而RS將應答包直接發給使用者。所以,減少了負載均衡器的大量數據流動,負載均衡器不再是系統的瓶頸,就能處理很巨大的請求量。這種方式,一台負載均衡器能夠為很多RS進行分發。而且跑在公網上就能進行不同地域的分發。

  • 缺點 :隧道模式的RS節點需要合法IP,這種方式需要所有的伺服器支持」IP Tunneling」(IP Encapsulation)協定,伺服器可能只局限在部份 Linux 系統上

  • 三、直接路由模式(VS-DR)

    原理:負載均衡器和RS都使用同一個IP對外服務但只有DR對ARP請求進行響應

    所有RS對本身這個IP的ARP請求保持靜默也就是說,閘道器會把對這個服務IP的請求全部定向給DR

    而DR收到封包後根據排程演算法,找出對應的RS,把目的MAC地址改為RS的MAC(因為IP一致)

    並將請求分發給這台RS這時RS收到這個封包,處理完成之後,由於IP一致,可以直接將數據返給客戶

    則等於直接從客戶端收到這個封包無異,處理後直接返回給客戶端

    由於負載均衡器要對二層包頭進行改換,所以負載均衡器和RS之間必須在一個廣播域

    也可以簡單的理解為在同一台交換機上

    優點 :和TUN(隧道模式)一樣,負載均衡器也只是分發請求,應答包透過單獨的路由方法返回給客戶端

    與VS-TUN相比,VS-DR這種實作方式不需要隧道結構,因此可以使用大多數作業系統做為物理伺服器。

    缺點 :(不能說缺點,只能說是不足)要求負載均衡器的網卡必須與物理網卡在一個物理段上。

    13、MySQL 的 innodb 如何定位鎖問題,MySQL 如何減少主從復制延遲?

    MySQL 的 innodb 如何定位鎖問題:

    在使用 show engine innodb status檢查引擎狀態時,發現了死結問題

    在5.5中,information_schema 庫中增加了三個關於鎖的表(MEMORY引擎)

    innodb_trx ## 當前執行的所有事務innodb_locks ## 當前出現的鎖innodb_lock_waits ## 鎖等待的對應關系

    MySQL 如何減少主從復制延遲:

    如果延遲比較大,就先確認以下幾個因素:

    1. 從庫硬體比主庫差,導致復制延遲

    2. 主從復制單執行緒,如果主庫寫並行太大,來不及傳送到從庫,就會導致延遲。 更高版本的mysql可以支持多執行緒復制

    3. 慢SQL語句過多

    4. 網路延遲

    5. master負載; 主庫讀寫壓力大,導致復制延遲,架構的前端要加buffer及緩存層

    6. slave負載; 一般的做法是,使用多台 slave 來分攤讀請求,再從這些 slave 中取一台專用的伺服器。只作為備份用,不進行其他任何操作.另外, 2個可以減少延遲的參數:–slave-net-timeout=seconds 單位為秒 預設設定為 3600秒

    #參數含義:當slave從主資料庫讀取log數據失敗後,等待多久重新建立連線並獲取數據–master-connect-retry=seconds 單位為秒 預設設定為 60秒#參數含義:當重新建立主從連線時,如果連線建立失敗,間隔多久後重試通常配置以上2個參數可以減少網路問題導致的主從數據同步延遲

    MySQL 資料庫主從同步延遲解決方案

    最簡單的減少slave同步延時的方案就是在架構上做最佳化,盡量讓主庫的DDL快速執行

    還有就是主庫是寫,對數據安全性較高,比如sync_binlog=1,innodb_flush_log_at_trx_commit= 1 之類的設定,而slave則不需要這麽高的數據安全,完全可以講sync_binlog設定為0或者關閉binlog

    innodb_flushlog也可以設定為0來提高sql的執行效率。另外就是使用比主庫更好的硬體裝置作為slave

    14、如何重設 MySQL Root 密碼?

    一、 在已知MYSQL資料庫的ROOT使用者密碼的情況下,修改密碼的方法:

    1、 在SHELL環境下,使用 mysqladmin 命令設定:

    mysqladmin –u root –p password 「新密碼」 回車後要求輸入舊密碼

    2、 在mysql>環境中,使用update命令,直接更新 MySQL 庫 user 表的數據:

    Update mysql.user set password=password(‘新密碼’) where user=’root’;flush privileges;註意:mysql語句要以分號」;」結束

    3、在mysql>環境中,使用 grant 命令,修改 root 使用者的授權許可權。

    grant all on *.* to root@’localhost’ identified by ‘新密碼’;

    二、 如查忘記了mysql資料庫的ROOT使用者的密碼,又如何做呢?方法如下:

    1、 關閉當前執行的mysqld服務程式:service mysqld stop(要先將mysqld添加為系統服務)

    2、 使用mysqld_safe指令碼以安全模式(不載入授權表)啟動mysqld 服務

    /usr/local/mysql/bin/mysqld_safe --skip-grant-table &

    3、 使用空密碼的root使用者登入資料庫,重新設定ROOT使用者的密碼

    #mysql -u rootMysql> Update mysql.user set password=password(‘新密碼’) where user=’root’;Mysql> flush privileges;

    15、lvs/nginx/haproxy 優缺點

  • Nginx 的優點是:

  • 1、工作在網路的7層之上,可以針對http套用做一些分流的策略,比如針對網域名稱、目錄結構, 它的正則規則比HAProxy更為強大和靈活,這也是它目前廣泛流行的主要原因之一,Nginx單憑這點可利用的場合就遠多於LVS了。

    2、Nginx 對網路穩定性的依賴非常小,理論上能ping通就就能進行負載功能,這個也是它的優勢之一, 相反 LVS 對網路穩定性依賴比較大,這點本人深有體會;

    3、Nginx 安裝和配置比較簡單,測試起來比較方便,它基本能把錯誤用日誌打印出來, LVS 的配置、測試就要花比較長的時間了,LVS對網路依賴比較大。

    4、可以承擔高負載壓力且穩定,在硬體不差的情況下一般能支撐幾萬次的並行量,負載度比LVS相對小些。

    5、Nginx可以透過埠檢測到伺服器內部的故障,比如根據伺服器處理網頁返回的狀態碼、超時等等,並且會把返回錯誤的請求重新送出到另一個節點,不過其中缺點就是不支持url來檢測。 比如使用者正在上傳一個檔,而處理該上傳的節點剛好在上傳過程中出現故障,Nginx會把上傳切到另一台伺服器重新處理,而LVS就直接斷掉了。如果是上傳一個很大的檔或者很重要的檔的話,使用者可能會因此而不滿。

    6、Nginx 不僅僅是一款優秀的負載均衡器/反向代理軟體,它同時也是功能強大的Web套用伺服器, LNMP 也是近幾年非常流行的web架構,在高流量的環境中穩定性也很好。

    7、Nginx現在作為Web反向加速緩存越來越成熟了,速度比傳統的Squid伺服器更快,可考慮用其作為反向代理加速器

    8、Nginx可作為中層反向代理使用,這一層面Nginx基本上無對手,唯一可以對比Nginx的就只有lighttpd了。 不過lighttpd目前還沒有做到Nginx完全的功能,配置也不那麽清晰易讀,社群資料也遠遠沒Nginx活躍

    9、Nginx也可作為靜態網頁和圖片伺服器,這方面的效能也無對手。還有Nginx社群非常活躍,第三方模組也很多

  • Nginx 的缺點是:

  • 1、Nginx僅能支持http、https和Email協定,這樣就在適用範圍上面小些,這個是它的缺點

    2、對後端伺服器的健康檢查,只支持透過埠來檢測,不支持透過url來檢測, 不支持Session的直接保持,但能透過ip_hash來解決。

    LVS:使用Linux內核集群實作一個高效能、高可用的負載均衡伺服器

    它具有很好的可伸縮性(Scalability)、可靠性(Reliability)和可管理性(Manageability)

  • LVS的優點是:

  • 1、抗負載能力強、是工作在網路4層之上僅作分發之用,沒有流量的產生,這個特點也決定了它在負載均衡軟體裏的效能最強的,對記憶體和cpu資源消耗比較低。

    2、配置性比較低,這是一個缺點也是一個優點,因為沒有可太多配置的東西,所以並不需要太多接觸,大大減少了人為出錯的機率

    3、工作穩定,因為其本身抗負載能力很強,自身有完整的雙機熱備方案,如LVS+Keepalived,不過我們在計畫實施中用得最多的還是LVS/DR+Keepalived

    4、無流量,LVS只分發請求,而流量並不從它本身出去,這點保證了均衡器IO的效能不會收到大流量的影響。

    5、套用範圍較廣,因為LVS工作在4層,所以它幾乎可對所有套用做負載均衡,包括http、資料庫、線上聊天室等

  • LVS的缺點是:

  • 1、軟體本身不支持正規表式處理,不能做動靜分離

    而現在許多網站在這方面都有較強的需求,這個是Nginx/HAProxy+Keepalived的優勢所在

    2、如果是網站套用比較龐大的話,LVS/DR+Keepalived 實施起來就比較復雜了

    特別後面有Windows Server的機器的話,如果實施及配置還有維護過程就比較復雜了

    相對而言,Nginx/HAProxy+Keepalived 就簡單多了。

  • HAProxy的特點是:

  • 1、HAProxy也是支持虛擬主機的。

    2、HAProxy 的優點能夠補充 Nginx的 一些缺點,比如支持 Session 的保持,Cookie 的引導

    同時支持透過獲取指定的url來檢測後端伺服器的狀態

    3、HAProxy跟LVS類似,本身就只是一款負載均衡軟體

    單純從效率上來講HAProxy會比Nginx有更出色的負載均衡速度,在並行處理上也是優於Nginx的

    4、HAProxy支持TCP協定的負載均衡轉發,可以對MySQL讀進行負載均衡

    對後端的 MySQL 節點進行檢測和負載均衡,大家可以用 LVS+Keepalived 對 MySQL 主從做負載均衡

    5、HAProxy負載均衡策略非常多,HAProxy的負載均衡演算法現在具體有如下8種:

    ①roundrobin,表示簡單的輪詢,這個不多說,這個是負載均衡基本都具備的;

    ② static-rr,表示根據權重,建議關註;

    ③leastconn,表示最少連線者先處理,建議關註;

    ④ source,表示根據請求源IP,這個跟Nginx的IP_hash機制類似

    我們用其作為解決session問題的一種方法,建議關註;

    ⑤ri,表示根據請求的URI;

    ⑥rl_param,表示根據請求的URl參數’balance url_param’ requires an URL parameter name;

    ⑦hdr(name),表示根據HTTP請求頭來釘選每一次HTTP請求;

    ⑧rdp-cookie(name),表示根據據cookie(name)來釘選並哈希每一次TCP請求。

    16、mysql數據備份工具

  • mysqldump工具

  • mysqldump是mysql內建的備份工具,目錄在bin目錄下面:/usr/local/mysql/bin/mysqldump

    支持基於innodb的熱備份,但是由於是邏輯備份,所以速度不是很快,適合備份數據比較小的場景

    Mysqldump完全備份+二進制日誌可以實作基於時間點的恢復。

  • 基於 LVM 快照備份

  • 在物理備份中,有基於檔案系統的物理備份(LVM的快照),也可以直接用tar之類的命令對整個資料庫目錄

    進行打包備份,但是這些只能進行泠備份,不同的儲存引擎備份的也不一樣,myisam自動備份到表級別

    而innodb不開啟獨立表空間的話只能備份整個資料庫。

  • tar包備份

  • percona提供的xtrabackup工具

    支持innodb的物理熱備份,支持完全備份,增量備份,而且速度非常快,支持innodb儲存引起的數據在不同

    資料庫之間遷移,支持復制模式下的從機備份恢復備份恢復,為了讓xtrabackup支持更多的功能擴充套件

    可以設立獨立表空間,開啟 innodb_file_per_table功能,啟用之後可以支持單獨的表備份

    17、keepalive的工作原理和如何做到健康檢查

    keepalived是以VRRP協定為實作基礎的,VRRP全稱Virtual Router Redundancy Protocol,即虛擬路由冗余協定。

    虛擬路由冗余協定,可以認為是實作路由器高可用的協定,即將N台提供相同功能的路由器組成一個路由器組

    這個組裏面有一個master和多個backup,master上面有一個對外提供服務的vip(該路由器所在區域網路內

    其他機器的預設路由為該vip),master會發組播,當backup收不到vrrp包時就認為master宕掉了

    這時就需要根據VRRP的優先級來選舉一個backup當master。這樣就可以保證路由器的高可用了

    keepalived主要有三個模組,分別是core、check和vrrp。core模組為keepalived的核心,負責主行程的啟動、維護

    及全域配置檔的載入和解析。check負責健康檢查,包括常見的各種檢查方式,vrrp模組是來實作VRRP協定的

    Keepalived健康檢查方式配置:

    HTTP_GET|SSL_GETHTTP_GET | SSL_GET{url {path /# HTTP/SSL 檢查的url可以是多個digest <STRING> # HTTP/SSL 檢查後的摘要資訊用工具genhash生成status_code 200# HTTP/SSL 檢查返回的狀態碼}connect_port 80 # 連線埠bindto<IPADD>connect_timeout 3 # 連線超時時間nb_get_retry 3 # 重連次數delay_before_retry 2 #連線間隔時間}

    18、統計ip存取情況,要求分析nginx存取日誌,找出存取頁面數量在前十位的ip

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

    19、使用 tcpdump 監聽主機為192.168.1.1,tcp埠為80的數據,同時將輸出結果保存輸出到 tcpdump.log

    tcpdump 'host 192.168.1.1 and port 80' > tcpdump.log

    20、如何將本地80 埠的請求轉發到8080 埠,當前主機IP 為192.168.2.1

    iptables -A PREROUTING -d 192.168.2.1 -p tcp -m tcp -dport 80 -j DNAT-to-destination 192.168.2.1:8080

    21、你對現在運維工程師的理解和以及對其工作的認識

    運維工程師在公司當中責任重大,需要保證時刻為公司及客戶提供最高、最快、最穩定、最安全的服務

    運維工程師的一個小小的失誤,很有可能會對公司及客戶造成重大損失

    因此運維工程師的工作需要嚴謹及富有創新精神

    22、即時抓取並顯示當前系統中tcp 80埠的網路數據資訊,請寫出完整操作命令

    tcpdump -nn tcp port 80

    23、伺服器開不了機怎麽解決一步步的排查

    A、造成伺服器故障的原因可能有以下幾點:

    B、如何排查伺服器故障的處理步驟如下:

    24、Linux 系統中病毒怎麽解決

    1)最簡單有效的方法就是重裝系統
    2)要查的話就是找到病毒檔然後刪除

    中毒之後一般機器 CPU、記憶體使用率會比較高

    機器向外發包等異常情況,排查方法簡單介紹下

    top 命令找到 CPU 使用率最高的行程

    一般病毒檔命名都比較亂,可以用 ps aux 找到病毒檔位置

    rm -f 命令刪除病毒檔

    檢查計劃任務、開機啟動項和病毒檔目錄有無其他可以檔等

    3)由於即使刪除病毒檔不排除有潛伏病毒,所以最好是把機器備份數據之後重裝一下

    25、發現一個病毒檔你刪了他又自動建立怎麽解決

    公司的內網某台linux伺服器流量莫名其妙的劇增,用 iftop 檢視有連線外網的情況

    針對這種情況一般重點檢視 netstat 連線的外網 ip 和埠。

    用 lsof -p pid 可以檢視到具體是那些行程,哪些檔

    經查勘發現/root下有相關的配置conf.n hhe兩個可疑檔,rm -rf後不到一分鐘就自動生成了

    由此推斷是某個母行程產生的這些檔。所以找到母行程就是找到罪魁禍首

    查殺病毒最好斷掉外網存取,還好是內網伺服器,可以透過內網存取

    斷了內網,病毒就失去外聯的能力,殺掉它就容易的多

    怎麽找到呢,找了半天也沒有看到蛛絲馬跡,沒辦法只有ps axu一個個排查

    方法是檢視可以的使用者和和系統相似而又不是的冒牌貨,果然,看到了如下行程可疑

    看不到圖片就是/usr/bin/.sshd

    於是我殺掉所有.sshd相關的行程,然後直接刪掉.sshd這個可執行檔

    然後才刪掉了文章開頭提到的自動復活的檔

    總結一下,遇到這種問題,如果不是太嚴重,盡量不要重裝系統

    一般就是先斷外網,然後利用iftop,ps,netstat,chattr,lsof,pstree這些工具順藤摸瓜

    一般都能找到元兇。但是如果遇到諸如此類的問題

    /boot/efi/EFI/redhat/grub.efi: Heuristics.Broken.Executable FOUND,個人覺得就要重裝系統了

    26、說說TCP/IP的七層模型

  • 套用層 (Application):

  • 網路服務與終端使用者的一個介面。

    協定有:HTTP FTP TFTP SMTP SNMP DNS TELNET HTTPS POP3 DHCP

  • 表示層(Presentation Layer):

  • 數據的表示、安全、壓縮。(在五層模型裏面已經合並到了套用層)

    格式有,JPEG、 ASCll 、DECOIC、加密格式等

  • 會話層(Session Layer):

  • 建立、管理、終止會話。(在五層模型裏面已經合並到了套用層)

    對應主機行程,指本地主機與遠端主機正在進行的會話

  • 傳輸層 (Transport):

  • 定義傳輸數據的協定埠號,以及流控和差錯校驗。

    協定有:TCP UDP,封包一旦離開網卡即進入網路傳輸層

  • 網路層 (Network):

  • 進行邏輯地址尋址,實作不同網路之間的路徑選擇。

    協定有:ICMP IGMP IP(IPV4 IPV6) ARP RARP

  • 數據鏈路層 (Link):

  • 建立邏輯連線、進行硬體地址尋址、差錯校驗等功能。(由底層網路定義協定)

    將位元組合成字節進而組合成幀,用MAC地址存取介質,錯誤發現但不能糾正

  • 實體層(Physical Layer):

  • 是電腦網路OSI模型中最低的一層

    實體層規定:為傳輸數據所需要的物理鏈路建立、維持、拆除

    而提供具有機械的,電子的,功能的和規範的特性

    簡單的說,實體層確保原始的數據可在各種物理媒體上傳輸。區域網路與廣域網路皆屬第1、2層

    實體層是OSI的第一層,它雖然處於最底層,卻是整個開放系統的基礎

    實體層為裝置之間的資料通訊提供傳輸媒體及互連裝置,為數據傳輸提供可靠的環境

    如果您想要用盡量少的詞來記住這個第一層,那就是「訊號和介質」。

    27、你常用的 Nginx 模組,用來做什麽

    rewrite模組,實作重寫功能access模組:來源控制ssl模組:安全加密ngx_http_gzip_module:網路傳輸壓縮模組ngx_http_proxy_module 模組實作代理ngx_http_upstream_module模組實作定義後端伺服器列表ngx_cache_purge實作緩存清除功能

    28、請列出你了解的web伺服器負載架構

    Nginx
    Haproxy
    Keepalived
    LVS

    29、檢視http的並行請求數與其TCP連線狀態

    netstat -n | awk '/^tcp/ {++S[$NF]} END {for(a in S) print a, S[a]}'

    還有ulimit -n 檢視linux系統開啟最大的檔描述符,這裏預設1024

    不修改這裏web伺服器修改再大也沒用,若要用就修改很幾個辦法,這裏說其中一個:

    修改/etc/security/limits.conf

    * soft nofile 10240* hard nofile 10240

    重新開機後生效

    30、用tcpdump嗅探80埠的存取看看誰最高

    tcpdump -i eth0 -tnn dst port 80 -c 1000 | awk -F"." '{print $1"."$2"."$3"."$4}'| sort | uniq -c | sort -nr |head -20

    31、寫一個指令碼,實作判斷192.168.1.0/24網路裏,當前線上的IP有哪些,能ping通則認為線上

    #!/bin/bashfor ip in `seq 1 255`do{ping -c 1 192.168.1.$ip > /dev/null 2>&1if [ $? -eq 0 ]; thenecho 192.168.1.$ip UPelseecho 192.168.1.$ip DOWNfi}&donewait

    32、已知 apache 服務的存取日誌按天記錄在伺服器本地目錄/app/logs 下,由於磁盤空間緊張現在要求只能保留最近 7 天的存取日誌!請問如何解決?請給出解決辦法或配置或處理命令

    建立檔指令碼:

    #!/bin/bashfor n in `seq 14`do date -s "11/0$n/14"touch access_www_`(date +%F)`.logdone

    解決方法:

    # pwd/application/logs# ll-rw-r--r--. 1 root root 0 Jan 1 00:00 access_www_2015-01-01.log-rw-r--r--. 1 root root 0 Jan 2 00:00 access_www_2015-01-02.log-rw-r--r--. 1 root root 0 Jan 3 00:00 access_www_2015-01-03.log-rw-r--r--. 1 root root 0 Jan 4 00:00 access_www_2015-01-04.log-rw-r--r--. 1 root root 0 Jan 5 00:00 access_www_2015-01-05.log-rw-r--r--. 1 root root 0 Jan 6 00:00 access_www_2015-01-06.log-rw-r--r--. 1 root root 0 Jan 7 00:00 access_www_2015-01-07.log-rw-r--r--. 1 root root 0 Jan 8 00:00 access_www_2015-01-08.log-rw-r--r--. 1 root root 0 Jan 9 00:00 access_www_2015-01-09.log-rw-r--r--. 1 root root 0 Jan 10 00:00 access_www_2015-01-10.log-rw-r--r--. 1 root root 0 Jan 11 00:00 access_www_2015-01-11.log-rw-r--r--. 1 root root 0 Jan 12 00:00 access_www_2015-01-12.log-rw-r--r--. 1 root root 0 Jan 13 00:00 access_www_2015-01-13.log-rw-r--r--. 1 root root 0 Jan 14 00:00 access_www_2015-01-14.log# find /application/logs/ -type f -mtime +7 -name "*.log"|xargs rm –f ##也可以使用-exec rm -f {} \;進行刪除# ll-rw-r--r--. 1 root root 0 Jan 7 00:00 access_www_2015-01-07.log-rw-r--r--. 1 root root 0 Jan 8 00:00 access_www_2015-01-08.log-rw-r--r--. 1 root root 0 Jan 9 00:00 access_www_2015-01-09.log-rw-r--r--. 1 root root 0 Jan 10 00:00 access_www_2015-01-10.log-rw-r--r--. 1 root root 0 Jan 11 00:00 access_www_2015-01-11.log-rw-r--r--. 1 root root 0 Jan 12 00:00 access_www_2015-01-12.log-rw-r--r--. 1 root root 0 Jan 13 00:00 access_www_2015-01-13.log-rw-r--r--. 1 root root 0 Jan 14 00:00 access_www_2015-01-14.log

    33、如何最佳化 Linux系統(可以不說太具體)?

    不用root,添加普通使用者,透過sudo授權管理
    更改預設的遠端連線SSH伺服端口及禁止root使用者遠端連線
    定時自動更新伺服器時間
    配置國內yum源
    關閉selinux及iptables(iptables工作場景如果有外網IP一定要開啟,高並行除外)
    調整檔描述符的數量
    精簡開機啟動服務(crond rsyslog network sshd)
    內核參數最佳化(/etc/sysctl.conf)
    更改字元集,支持中文,但建議還是用英文字元集,防止亂碼
    釘選關鍵系統檔
    清空/etc/issue,去除系統及內核版本登入前的螢幕顯示

    34、請執行命令取出 linux 中 eth0 的 IP 地址(請用 cut,有能力者也可分別用 awk,sed 命令答)

    cut方法1:

    # ifconfig eth0|sed -n '2p'|cut -d ":" -f2|cut -d " " -f1192.168.20.130

    awk方法2:

    # ifconfig eth0|awk 'NR==2'|awk -F ":" '{print $2}'|awk '{print $1}'192.168.20.130

    awk多分隔符方法3:

    # ifconfig eth0|awk 'NR==2'|awk -F "[: ]+" '{print $4}'192.168.20.130

    sed方法4:

    # ifconfig eth0|sed -n '/inet addr/p'|sed -r 's#^.*ddr:(.*)Bc.*$#\1#g'192.168.20.130

    35、每天晚上 12 點,打包站點目錄/var/www/html 備份到/data 目錄下(最好每次備份按時間生成不同的備份包)

    # cat a.sh #/bin/bashcd /var/www/ && /bin/tar zcf /data/html-`date +%m-%d%H`.tar.gz html/# crontab –e00 00 * * * /bin/sh /root/a.sh

    最難的筆試題,你能夠拿幾分,一起看看!

    更多精彩

    關註公眾號 浩道Linux

    浩道Linux ,專註於 Linux系統 的相關知識、 網路通訊 網路安全 Python相關 知識以及涵蓋IT行業相關技能的學習, 理論與實戰結合,真正讓你在學習工作中真正去用到所學。同時也會分享一些面試經驗,助你找到高薪offer,讓我們一起去學習,一起去進步,一起去漲薪!期待您的加入~~~ 關註回復「資料」可 免費獲取學習資料 (含有電子書籍、視訊等)。

    喜歡的話,記得 點「贊」 「在看」