一套Linux面試模擬題及答案_第1頁
一套Linux面試模擬題及答案_第2頁
一套Linux面試模擬題及答案_第3頁
一套Linux面試模擬題及答案_第4頁
一套Linux面試模擬題及答案_第5頁
已閱讀5頁,還剩16頁未讀 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

一套Linux面試模擬題及答案1.如何查看當前系統(tǒng)內核版本?可使用`uname-r`命令直接輸出內核版本信息,例如執(zhí)行后返回"5.4.0-150-generic"表示當前內核版本為5.4.0。若需更詳細的內核編譯信息,可查看`/proc/version`文件內容,該文件包含內核版本、編譯器版本及編譯時間等信息。2.簡述硬鏈接與軟鏈接的區(qū)別,如何創(chuàng)建這兩種鏈接?硬鏈接通過inode號指向原文件,與原文件共享數(shù)據(jù)塊,刪除原文件不影響硬鏈接的訪問,且硬鏈接無法跨文件系統(tǒng)創(chuàng)建。軟鏈接(符號鏈接)本質是一個特殊文件,存儲原文件的路徑,刪除原文件后軟鏈接會失效,可跨文件系統(tǒng)創(chuàng)建。創(chuàng)建硬鏈接使用`ln原文件硬鏈接名`,如`ln/data/file1/data/link1`;創(chuàng)建軟鏈接使用`ln-s原文件軟鏈接名`,如`ln-s/data/file1/data/link2`。3.如何統(tǒng)計/var/log目錄下所有以"error"開頭、擴展名為.log的文件中,包含"CRITICAL"關鍵字的行數(shù)?可通過組合`find`、`grep`和`wc`命令實現(xiàn):`find/var/log-name"error.log"-execgrep"CRITICAL"{}\;|wc-l`其中`find`命令篩選目標文件,`-exec`參數(shù)對每個文件執(zhí)行`grep"CRITICAL"`查找含有關鍵字的行,最后通過`wc-l`統(tǒng)計總行數(shù)。若需顯示具體文件名及行數(shù),可將`grep`改為`grep-c`并調整命令:`find/var/log-name"error.log"-execgrep-c"CRITICAL"{}\;`。4.系統(tǒng)突然無法登錄,通過控制臺發(fā)現(xiàn)啟動時卡在"StartingApacheWebServer...",可能的原因及排查步驟?可能原因包括Apache配置文件語法錯誤、80/443端口被其他進程占用、Apache服務依賴的PHP/數(shù)據(jù)庫服務未啟動、磁盤空間不足導致無法寫入日志等。排查步驟:(1)切換到單用戶模式(如開機時按E鍵修改grub參數(shù)為`systemd.unit=rescue.target`),手動啟動Apache并查看錯誤日志:`systemctlstartapache2`(或httpd,依發(fā)行版而定),通過`journalctl-uapache2`查看詳細錯誤;(2)檢查配置文件語法:`apache2ctlconfigtest`(或`httpd-t`),若提示"SyntaxOK"則配置正常,否則定位具體錯誤行;(3)使用`ss-tanlp|grep:80`或`netstat-anp|grep:80`檢查端口占用情況,殺死沖突進程;(4)檢查`/var/log/apache2/error.log`(或對應路徑)是否有磁盤空間不足的報錯,通過`df-h`確認根分區(qū)剩余空間。5.如何將用戶"testuser"添加到組"developers"中?若需同時創(chuàng)建用戶家目錄(默認路徑)并設置其默認shell為/bin/bash,應使用什么命令?添加用戶到現(xiàn)有組使用`usermod-aGdeveloperstestuser`(-a表示追加,避免覆蓋原有組)。創(chuàng)建用戶并指定家目錄及shell的命令為:`useradd-m-s/bin/bashtestuser`(-m自動創(chuàng)建家目錄,-s指定shell)。若家目錄需自定義路徑(如/home/test),可使用`useradd-m-d/home/test-s/bin/bashtestuser`。6.簡述Linux文件權限的三位八進制表示法(如644)對應的具體權限,如何將文件"app.log"的權限修改為所有者讀寫、組用戶只讀、其他用戶無權限?三位八進制分別對應所有者(u)、組(g)、其他用戶(o)的權限,每一位由r(讀,4)、w(寫,2)、x(執(zhí)行,1)的數(shù)值和組成。例如644表示u=rw(4+2=6),g=r(4),o=r(4)?不,644實際是u=rw(6),g=r(4),o=r(4)?錯誤,正確應為644:u=rw(6),g=r(4),o=r(4)?不,644的第三位是其他用戶權限,應為o=r(4)。正確的對應是:6(u:rw)、4(g:r)、4(o:r)。目標權限要求所有者讀寫(u=rw=6)、組只讀(g=r=4)、其他無權限(o==0),因此目標權限為640。修改命令為`chmod640app.log`,或使用符號模式`chmodu=rw,g=r,o=app.log`。7.如何監(jiān)控某個進程(如MySQL)的CPU和內存使用情況,要求實時更新且顯示進程子線程?可使用`top`命令,啟動后按"P"鍵按CPU使用率排序,按"M"鍵按內存使用率排序。若需查看子線程,在`top`界面輸入"H"(切換線程顯示模式),此時會列出所有線程。更推薦使用`htop`(需先安裝),其交互界面更友好,支持鼠標操作,默認顯示線程(可通過配置關閉),且能直觀展示CPU、內存、交換空間的使用情況。此外,`ps-mp<PID>-oTHREAD,tid,time`可查看指定進程(PID)的所有線程信息。8.系統(tǒng)根分區(qū)(/)空間不足,如何快速定位大文件或目錄?可通過以下步驟排查:(1)使用`df-h`確認根分區(qū)使用情況,確定是/分區(qū)空間不足;(2)進入根目錄`cd/`,使用`du-sh`查看各一級目錄的大致占用空間,找到占用最大的目錄(如/var、/home等);(3)進入目標目錄(如/var),再次執(zhí)行`du-sh`縮小范圍,例如發(fā)現(xiàn)/var/log占用較大;(4)進入/var/log后,使用`du-h--max-depth=1`查看子目錄占用,或使用`ls-lht`按文件大小排序,找到大日志文件(如nginx.access.log.1.gz);(5)若需更精確分析,可使用`ncdu`(需安裝)交互式工具,直觀展示目錄樹狀結構及文件大小。9.編寫一個Shell腳本,實現(xiàn)以下功能:接收一個目錄路徑作為參數(shù),統(tǒng)計該目錄下(含子目錄)所有普通文件(非目錄、符號鏈接等)的數(shù)量,并輸出結果。腳本示例:```bash!/bin/bash檢查參數(shù)是否存在if[$-ne1];thenecho"錯誤:請?zhí)峁┮粋€目錄路徑作為參數(shù)"exit1fitarget_dir="$1"檢查路徑是否存在且為目錄if[!-d"$target_dir"];thenecho"錯誤:$target_dir不是有效的目錄"exit1fi使用find命令查找普通文件并統(tǒng)計數(shù)量file_count=$(find"$target_dir"-typef|wc-l)echo"目錄$target_dir下共有$file_count個普通文件"```說明:`find"$target_dir"-typef`會遞歸查找目標目錄下所有類型為普通文件(-typef)的文件,輸出每行一個文件路徑;`wc-l`統(tǒng)計行數(shù)即文件數(shù)量。10.如何臨時禁用SELinux?如何永久關閉SELinux?臨時禁用(無需重啟):執(zhí)行`setenforce0`,此時SELinux狀態(tài)變?yōu)镻ermissive(僅記錄警告不強制限制)??赏ㄟ^`getenforce`查看當前狀態(tài)。永久關閉:編輯`/etc/selinux/config`文件,將`SELINUX=enforcing`修改為`SELINUX=disabled`,保存后重啟系統(tǒng)生效。注意:修改配置文件后需重啟才能徹底關閉,僅`setenforce0`是臨時生效。11.簡述crontab任務的時間格式,編寫一個每周一至周五(工作日)的早上8點30分執(zhí)行"/usr/local/backup.sh"腳本的定時任務。crontab時間格式為五個字段,依次表示分鐘(0-59)、小時(0-23)、日期(1-31)、月份(1-12)、星期(0-6,0=周日),字段間用空格分隔,支持通配符()、范圍(-)、間隔(/)。目標任務的時間字段為:3081-5(1-5表示周一至周五),完整crontab條目為:`3081-5/usr/local/backup.sh`若需將輸出重定向到日志文件,可添加`>>/var/log/backup.log2>&1`。12.如何查看當前系統(tǒng)開放的TCP端口及對應的監(jiān)聽進程?可使用`ss`命令(更高效)或`netstat`命令:(1)`ss-tanlp`:-t表示TCP,-a表示所有狀態(tài),-n表示顯示數(shù)字地址/端口,-l表示監(jiān)聽狀態(tài),-p表示顯示進程信息。輸出示例中"LISTEN"狀態(tài)的行即為監(jiān)聽端口,如`:80`對應HTTP服務。(2)`netstat-tanlp`:參數(shù)含義與ss類似,適用于未安裝ss的舊系統(tǒng)。若需篩選特定端口(如80),可添加`grep:80`,例如`ss-tanlp|grep:80`。13.系統(tǒng)啟動時提示"FailedtostartLVM2metadatadaemon",可能的原因及解決方法?可能原因:LVM元數(shù)據(jù)損壞、邏輯卷配置錯誤、lvm2服務相關文件丟失或權限錯誤。解決步驟:(1)檢查LVM相關服務狀態(tài):`systemctlstatuslvm2-lvmetad.service`,查看錯誤日志;(2)嘗試重新啟動服務:`systemctlrestartlvm2-lvmetad.service`;(3)若失敗,檢查LVM元數(shù)據(jù)是否損壞:使用`vgs`、`pvs`、`lvs`命令查看卷組、物理卷、邏輯卷狀態(tài),若提示"unabletoreadmetadata",可能需要修復元數(shù)據(jù)(如`vgcfgrestore`恢復卷組配置);(4)檢查`/etc/lvm/lvm.conf`配置文件是否有語法錯誤,可使用`lvmconfig--check`驗證;(5)若服務文件丟失,重新安裝lvm2包:`yumreinstalllvm2`(RHEL系)或`aptreinstalllvm2`(Debian系)。14.如何將一個3TB的磁盤格式化為ext4文件系統(tǒng)?若該磁盤為新磁盤,需要先做什么操作?步驟如下:(1)分區(qū):3TB磁盤若使用MBR分區(qū)表最多支持2TB,因此需使用GPT分區(qū)表。使用`parted`工具分區(qū):`parted/dev/sdb`(假設磁盤為sdb)`mklabelgpt`(創(chuàng)建GPT標簽)`mkpartprimaryext40%100%`(創(chuàng)建主分區(qū),占滿整個磁盤)`quit`退出parted。(2)格式化分區(qū):`mkfs.ext4/dev/sdb1`(sdb1為分區(qū)名)。注意:若磁盤已存在分區(qū),需先刪除原有分區(qū)(`parted`的`rm`命令)或使用`fdisk`(但fdisk不支持GPT,大磁盤必須用parted或gdisk)。15.簡述環(huán)境變量`PATH`的作用,如何臨時設置一個環(huán)境變量?如何永久生效?`PATH`變量定義了系統(tǒng)查找可執(zhí)行文件的路徑列表,多個路徑用冒號分隔。當用戶執(zhí)行命令(如`ls`)時,系統(tǒng)會按`PATH`中的順序搜索對應名稱的可執(zhí)行文件。臨時設置:在終端輸入`exportVAR_NAME=value`,僅當前終端會話有效。例如`exportMY_PATH=/usr/local/bin:$PATH`將/usr/local/bin添加到PATH前端。永久生效(用戶級別):編輯用戶家目錄下的`.bashrc`或`.bash_profile`文件,添加`exportVAR_NAME=value`,保存后執(zhí)行`source~/.bashrc`使其立即生效。全局生效(所有用戶):編輯`/etc/profile`或`/etc/bash.bashrc`(依發(fā)行版),添加環(huán)境變量定義,重啟或`source`后生效。16.如何排查SSH連接超時問題?假設服務器能ping通但無法SSH登錄。排查步驟:(1)檢查SSH服務是否運行:`systemctlstatussshd`(RHEL系)或`systemctlstatusssh`(Debian系),若未運行則啟動服務;(2)查看SSH日志:`journalctl-usshd`(或`/var/log/auth.log`),檢查是否有認證失敗、連接被拒絕的記錄(如"Connectionclosedby...");(3)檢查防火墻規(guī)則:使用`firewall-cmd--list-ports`(RHEL系)或`iptables-L-n`查看是否開放了22端口(SSH默認端口),若未開放則添加規(guī)則(如`firewall-cmd--add-port=22/tcp--permanent`);(4)檢查SSH配置文件`/etc/ssh/sshd_config`,確認`Port22`未被注釋,`PermitRootLogin`(是否允許root登錄)、`AllowUsers`(允許的用戶列表)等參數(shù)配置正確,修改后需`systemctlreloadsshd`生效;(5)若使用密鑰登錄,檢查客戶端公鑰是否已添加到服務器的`~/.ssh/authorized_keys`文件,權限是否正確(.ssh目錄權限700,authorized_keys權限600);(6)檢查服務器是否啟用了TCPwrappers(`/etc/hosts.allow`和`/etc/hosts.deny`),是否有規(guī)則阻止了當前IP的連接。17.編寫一個Shell腳本,實現(xiàn)以下功能:遍歷當前目錄下所有擴展名為".txt"的文件,將每個文件的前5行復制到對應的".bak"文件中(如file.txt提供file.txt.bak)。腳本示例:```bash!/bin/bash遍歷當前目錄下所有.txt文件forfilein.txt;do檢查文件是否存在(避免無匹配時的通配符擴展)if[-f"$file"];then提取前5行并輸出到.bak文件head-n5"$file">"${file}.bak"echo"已創(chuàng)建備份:${file}.bak"fidone```說明:`forfilein.txt`遍歷當前目錄下所有.txt文件,`-f`判斷是否為普通文件(避免處理目錄),`head-n5`提取前5行,`"${file}.bak"`構造備份文件名(如file.txt提供file.txt.bak)。18.如何查看系統(tǒng)最近7天的登錄日志?如何定位某個用戶(如"admin")的登錄記錄?系統(tǒng)登錄日志通常存儲在`/var/log/auth.log`(Debian系)或`/var/log/secure`(RHEL系)。查看最近7天的日志可使用`grep`結合日期范圍,或使用`journalctl`(支持時間過濾)。方法一(使用journalctl):`journalctl-usshd--since"7daysago"--nor`(篩選sshd服務最近7天的日志)。方法二(直接查看日志文件):`grep"sshd"/var/log/auth.log|grep-E"$(date-d'7daysago'+'%b%d')|$(date+'%b%d')"--color`(通過日期字符串篩選,需注意日志中的日期格式為"月日"如"Oct05")。定位用戶"admin"的登錄記錄:`grep"admin"/var/log/auth.log|grep"Accepted"`("Accepted"表示登錄成功,"Failed"表示失?。騚journalctl-usshd-tsshd|grep"admin"|grep"Accepted"`。19.簡述Linux進程的五種狀態(tài)(如R、S、D、Z、T),如何識別僵尸進程(ZombieProcess)并清理?進程狀態(tài):R(Running/Runnable):運行中或在運行隊列中等待;S(Sleeping):可中斷睡眠(等待事件完成,如IO);D(DiskSleep):不可中斷睡眠(通常等待磁盤IO,無法被信號終止);Z(Zombie):僵尸進程(已終止但父進程未回收其資源);T(Stopped):暫停(被SIGSTOP信號停止,或調試中)。識別僵尸進程:使用`psaux`查看,狀態(tài)列為Z的進程即為僵尸進程。例如輸出中"Z+"表示僵尸進程(+表示在前臺進程組)。清理方法:僵尸進程的父進程若存活,可發(fā)送SIGCHLD信號通知其回收(通常父進程會自動處理);若父進程已死亡(變成孤兒進程),其init進程(PID1)會接管并回收。若父進程持續(xù)不回收(如編寫錯誤的程序),需終止父進程:找到父進程PID(`ps-oppid=<僵尸進程PID>`),執(zhí)行`kill<父進程PID>`,父進程終止后init會回收僵尸進程。20.如何將一個邏輯卷(LV)的大小從20GB擴展至30GB?假設卷組(VG)有足夠的空閑空間。擴展步驟(以ext4文件系統(tǒng)為例):(1)確認卷組空閑空間:`vgs`查看VG的FreePE大小,需確保至少有10GB可用(根據(jù)PE大小計算,如PE=4MB,需2560個PE);(2)擴展邏輯卷:`lvextend-L+10G/dev/vg_name/lv_name`(將LV增大10G,總大小變?yōu)?0G)或`lvextend-L30G/dev/vg_name/lv_name`(直接設置為30G);(3)檢查文件系統(tǒng)是否支持在線擴展(ext4支持),執(zhí)行`resize2fs/dev/vg_name/lv_name`調整文件系統(tǒng)大?。唬?)驗證擴展結果:`df-h`查看LV掛載點的可用空間是否增加。注意:若文件系統(tǒng)為XFS,擴展命令為`xfs_growfs/掛載點`(需先掛載),且XFS不支持縮小操作。21.如何限制用戶"devuser"的CPU使用率不超過30%?可使用cgroups(ControlGroups)實現(xiàn)資源限制。步驟如下:(1)安裝cgroup工具(如cgroup-tools):`aptinstallcgroup-tools`(Debian系)或`yuminstalllibcgroup`(RHEL系);(2)創(chuàng)建cgroup目錄(或使用systemd的cgroup管理):`cgcreate-gcpu:devuser_group`(創(chuàng)建名為devuser_group的cpu子系統(tǒng)cgroup);(3)設置CPU限制:`cgset-rcpu.cfs_quota_us=30000devuser_group`(cpu.cfs_period_us默認100000微秒,30000表示30%的CPU時間);(4)將用戶的進程加入cgroup:`cgclassify-gcpu:devuser_group$(pgrep-udevuser)`(將devuser的所有進程加入cgroup);(5)若需開機自動生效,可編輯`/etc/cgconfig.conf`配置文件,或使用systemd的.slice文件(如創(chuàng)建`devuser.slice`并設置CPUQuota=30%)。22.簡述NFS客戶端掛載NFS共享目錄的命令及常用參數(shù),如何實現(xiàn)開機自動掛載?掛載命令:`mount-tnfs服務器IP:共享路徑本地掛載點[選項]`。常用參數(shù):`-orw`:讀寫權限(默認);`-oro`:只讀;`-ohard`:硬掛載(掛載失敗時持續(xù)重試);`-osoft`:軟掛載(超時后返回錯誤);`-onoatime`:不更新文件訪問時間(提升性能);`-overs=4`:指定NFS版本(如NFSv4)。示例:`mount-tnfs-overs=4,noatime00:/data/share/mnt/nfs`。開機自動掛載:編輯`/etc/fstab`文件,添加一行:`00:/data/share/mnt/nfsnfsvers=4,noatime00`保存后使用`mount-a`驗證是否可成功掛載。23.如何查看系統(tǒng)中所有已安裝的RPM包?如何查找包含"httpd"關鍵字的已安裝包?查看所有已安裝RPM包:`rpm-qa`(輸出所有包名),或`rpm-qa|less`分頁查看。查找含"httpd"的包:`rpm-qa|grephttpd`。若需更精確(如包名精確匹配),使用`rpm-qhttpd`(僅當httpd已安裝時返回包信息,否則提示未安裝)。若需查看包的詳細信息(如版本、依賴),使用`rpm-qihttpd`(i表示信息);查看包安裝的文件列表使用`rpm-

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論