48 个 Linux 面试问题和答案
你在準備 Linux 面試嗎?我們準備了一些常見的 Linux 面試問題及其答案。
如果您是初學者(具有一定的 Linux 知識或獲得認證)或具有專業的 Linux 管理經驗,那么下面的問答有助于您準備面試。
1.什么是Linux及基本組件?
Linux 是一個基于 Linux 內核的免費開源操作系統。它是廣泛使用的操作系統之一,尤其是在服務器世界和開發人員中。它的用途從托管網站和應用程序延伸到成為智能手機、平板電腦和電視等智能設備的核心操作系統。
Linux 由 4 個基本組件構成:
Kernel:這是Linux系統的核心。它負責與硬件組件交互并確保操作系統與硬件設備進行通信。
Shell:?Shell 是 Linux 用戶和內核之間的接口。在 shell 中,命令由用戶發出,然后由操作系統執行。
系統庫:這些是特殊程序或函數,它們負責實現操作系統的大部分功能,而不依賴于內核模塊的代碼訪問權限。
系統實用程序:這些是執行某些任務的特定程序。例如 LibreOffice、Brasero、Gparted。
2、什么是Linux內核?
Linux內核是Linux系統的核心。它將底層硬件與操作系統連接起來。
3、Linux和Unix有什么區別?
Linux 是衍生 Linux 的 UNIX 系統的克隆。Linux 是開源的并且可以免費使用,而 UNIX 是專有操作系統。
4. Linux 中的 inode 是什么?如何找到與文件關聯的inode?
inode(索引節點)是 Unix 風格文件系統中的一種數據結構,用于描述文件系統對象,例如文件或目錄。創建文件時,會為其分配一個名稱和一個 inode 編號,這是一個在文件系統中唯一的整數。
解釋
文件系統通常有兩部分:元數據或關于數據的“數據”和數據本身。元數據包含有關數據的信息。更準確地說,它包括諸如訪問控制列表 (ACL)、文件修改日期、文件所有者、文件權限、文件大小、設備 ID、文件的 uid 等信息。此類信息是文件系統,否則我們在存儲介質上只有一堆沒有多大意義的位。Inode 存儲此元數據信息,通常它們還存儲有關數據在存儲介質上的位置的信息。
在文件系統中,inode 大約占總磁盤空間的 1%,無論是整個存儲單元(硬盤、拇指驅動器等)還是存儲單元上的分區。inode 空間用于跟蹤存儲在硬盤上的文件。inode 條目僅指向這些結構,而不是存儲數據。每個條目的大小為 128 字節。在安裝操作系統或新文件系統以及進行初始結構化時,會為 Inode 分配空間。所以通過這種方式我們可以看到,在文件系統中,設置了最大 Inode 數,因此設置了最大文件數。現在,上述概念帶來了另一個有趣的事實。文件系統可以通過兩種方式耗盡空間:
- 沒有空間用于添加新數據
- 所有的 Inode 都被消耗掉了。
要獲取 inode 編號的列表,請使用ls -i命令。
ls -li
total 3336
57741 -rw-r--r-- 1 root root 3412144 Nov 20 17:26 coreutils-8.22-18.el7.x86_64.rpm
57725 -rw-r--r-- 1 root root?????? 0 Apr? 7 04:00 file
57736 -rw-r--r-- 1 root root?????? 0 Apr? 7 04:00 new-file
?
# ls -li new-file
57736 -rw-r--r-- 1 root root 0 Apr? 7 04:00 new-file
?
# find /root -inum 57736
/root/new-file
5.什么是Linux shell?如何檢查當前的shell?
Linux shell 是一個命令解釋器或接受命令并將其傳遞給操作系統執行的程序。要檢查您正在使用的 shell,請運行命令??echo $0
6. 用什么命令查找內存和交換使用情況?
使用free命令
7. 軟鏈接和硬鏈接的區別?
a)不能為目錄創建硬鏈接。只能為文件創建硬鏈接。
b)?符號鏈接或符號鏈接可以鏈接到目錄。
c)刪除硬鏈接指向的原始文件并不會刪除硬鏈接本身;硬鏈接仍然提供基礎文件的內容。
d)如果您刪除硬鏈接或符號鏈接本身,原始文件將保持不變。
e)刪除原始文件不會刪除附加的符號鏈接或符號鏈接,但沒有原始文件,符號鏈接是無用的
8.解釋Linux中的文件權限?
在 Linux 中,有 3 種主要類型的文件權限:讀、寫和執行。這些權限可以遞歸地分配給文件或目錄。作為一個多用戶系統,您可以將這些權限分配給 root 用戶、組,甚至是使用該系統的其他用戶。
Read:讀取權限授予使用打開和讀取文件的能力。
Write:寫入權限允許用戶打開和修改或編輯文件的內容并保存更改。
Execute:這允許用戶執行或運行可執行的文件或程序或 shell 腳本。
?
9. 如何在 Linux 中創建和刪除目錄?
要創建目錄,請使用 mkdir 命令,如圖所示;
mkdir directory_name
例如,要創建一個名為“data”的目錄,請運行以下命令:
mkdir data
要在 Linux 中刪除目錄,請使用rmorrmdir命令。
該rmdir命令用于刪除空目錄。
該rm命令主要與-R用于遞歸刪除目錄的標志一起使用。
10、如何在Linux中創建文件?
要創建文件,請使用 touch 命令。例如要創建一個文件 file1.doc 運行命令:
10
touch file1.doc
您還可以使用cat命令后跟重定向運算符或大于號>
后跟文件名。接下來,鍵入文件的內容,最后按CTRL + D退出文件。
cat > file1.doc
輸入文件內容并點擊CTRL + D
11. 如何在Linux中重命名文件和目錄?
要重命名文件,請使用 mv 命令。請注意,要使其正常工作,要重命名的文件的路徑必須相同。例如,要將/data/files目錄中的文件 file1.doc 重命名為 file2.doc,請執行以下命令:
mv /data/files/file1.doc /data/files/file2.doc
12、如何在Linux中復制文件和目錄?
要在 Linux 中復制文件,請使用 cp 命令。語法很簡單
cp? /source/of/the/file? /destination/of/the/file
13. 如何在Linux中列出和掛載設備?
要列出掛載點,請運行以下命令:
df? -aTh
要查找有關系統上安裝點的更多信息,請執行以下命令:
findmnt
此外,您可以使用下面的 cat 命令
cat /proc/self/mounts
此外,您可以使用 mount 命令,如圖所示
mount -l
14、如何在Linux中創建空文件?
要在 Linux 中創建一個空文件,請使用 touch 命令,如下所示:
touch new_file
15. 如何在 Linux 中調度任務?什么是 crontab 并解釋 crontab 中的字段?
cron 是一個守護進程,它在 Linux 中的特定日期和時間執行命令。您可以使用它來安排活動,既可以作為一次性事件,也可以作為重復任務。Crontab是用于安裝、卸載或列出用于驅動服務器中的 cron 守護程序的表的程序。每個用戶都可以有自己的 crontab,雖然這些是 /var/spool/cron/crontabs 中的文件,但它們并不打算直接編輯。以下是 crontab 的幾個命令行選項。
crontab -e 編輯您的 crontab 文件。
crontab -l 顯示你的 crontab 文件。
crontab -r 刪除你的 crontab 文件。
傳統的 cron 格式由空格分隔的六個字段組成:
<Minute> <Hour> <Day_of_the_Month> <Month_of_the_Year> <Day_of_the_Week> <command/program to execute>
格式解釋如下:
* * * * * *
| | | | | |
| | | | | +-- Year (range: 1900-3000)
| | | | +---- Day of the Week (range: 1-7, 1 standing for Monday)
| | | +------ Month of the Year (range: 1-12)
| | +-------- Day of the Month (range: 1-31)
| +---------- Hour (range: 0-23)
+------------ Minute (range: 0-59)
16. 你知道哪些基本的 Vim 命令?
a) 保存
要保存文件,請按ESC按鈕并按?:wq!?OR?:ZZ
b) 退出
要退出文件而不進行更改,請運行命令:q
c) 跳轉到文件中的特定行
按ESC再按j向下移動一行。
k按鍵盤上移一行
將光標移動到行首 按^
將光標移動到行尾 按$
將光標移動到文件的開頭1G
將光標移動到文件末尾G
將光標移動到文件中行號“n”的開頭nG
d) 復制文本
將光標移動到字符串或文本的開頭。接下來按鍵盤上的 v 并向前按光標以突出顯示文本。到達要復制的文本的末尾后,請按yyank 的縮寫來復制文本。
要將文本從當前位置復制到行尾 -y$
復制整行 -yy
要復制下面的 4 行 -4yy
d) 粘貼文本
要粘貼文本,只需按p鍵盤上的
d) 刪除文本
要刪除一行,請移至一行的開頭。按下ESC按鈕并按下dd
要刪除單個單詞,請將光標放在單詞前面并點擊dw
刪除從當前單詞到行尾的文本d$
要刪除下面運行的 3 行3dd
17. 如何將二進制文件添加到 $PATH 變量中?
$ export PATH=$PATH:/path/to/the/binary/file
18.解釋Grep命令和正則表達式?
Grep 命令是用于過濾結果或輸出的表達式。例如,要列出一個目錄并僅搜索帶有單詞“cron”的文件,請運行以下命令:
ls | grep cron
19、umask和ulimit有什么區別?
Umask代表“用戶文件創建掩碼”,它確定掩碼的設置,該掩碼控制在創建文件和目錄時為文件和目錄設置哪些文件權限。雖然 ulimit 是一個 linux 內置命令,它提供對 shell 可用資源和/或由它啟動的進程的控制。
您可以通過編輯 /etc/security/limits.conf 將用戶限制在特定范圍內,同時可以在 /etc/sysctl.conf 中更新系統范圍的設置
20. 解釋 ls 命令在 Linux 中的輸出?
ls 命令列出 Linux 中目錄的內容。它顯示目錄內的文件和子目錄。當與其他參數一起使用時,它可以列出文件權限,甚至顯示隱藏文件。
21.解釋Linux中top命令的輸出?
top 命令是一個監控實用程序,可讓用戶深入了解系統指標,例如正常運行時間、平均負載、%CPU 和 % 內存利用率。
22. Linux 中的進程狀態有哪些?
進程狀態,顧名思義,是指Linux進程所處的當前狀態。進程狀態有4種,分別是Running、Waiting、stopped和Zombie。
23. 如何在 Linux 中備份或歸檔文件(tar 命令)?
要備份目錄,只需運行下面的 tar 命令
$ tar -cvf tarball_name.tar /path/to/directory
例如,要在 /data/reports/ 路徑中創建文件 sales.txt 的 tar.gz 格式的存檔,請執行:
$ tar -cvf sales.tar.gz? /data/reports/sales.txt
您還可以歸檔整個目錄,如下所示:
$ tar -cvf repors.tar.gz? /data/reports/
24. 如何停止Linux中正在運行的進程?
要停止正在運行的進程,請使用 kill 命令,后跟進程的 PID。
例如,要停止 PID 為 3836 的進程,請運行命令
kill 3836
25.如何在linux中搜索文件?
要在 Linux 中搜索文件,請使用locate? orfind命令
26. 如何檢查某項服務是否在運行?
要檢查服務是否正在運行,請使用以下語法:
systemctl status service_name
例如,要檢查 Postfix 是否正在運行,請運行以下命令:
systemctl status postfix
27. 如何在重啟時啟動服務?
要在重新啟動運行時啟動服務,請使用以下語法:
systemctl enable service_name
例如,要在重新啟動時啟動 httpd Web 服務器,請運行
systemctl enable httpd
28. 如何啟動和停止服務?
要在 systemd 系統中啟動服務,請運行以下命令:
systemctl start service_name
例如,要啟動 ssh 服務,請運行以下命令:
systemctl start sshd
要停止服務,請運行:
systemctl stop service_name
要停止 ssh 運行:
systemctl stop sshd
29. 如何遠程登錄另一臺linux電腦?
您可以使用 SSH 協議或使用 VNC 服務登錄到遠程 Linux 計算機。
30.如何查看磁盤使用情況?
使用該df命令檢查硬盤驅動器上使用的空間和剩余空間/可用空間。
此外,使用該du命令檢查特定文件和目錄的使用情況。
31. 為什么要使用導出命令?
導出命令標記和導出環境變量。
32. 如何使用 bash 腳本從多個 Linux 服務器獲取版本?
#!/bin/bash
#we user variable serverlist to keep there path to file with server names
serverlist='server_list.txt'
#we write in variable all server list
servers=`cat $serverlist`
#we use variable result to keep there path to file with result
result='result.txt'
?
#this print header to file with resilt using \t\t to add 2 tab symbols
echo -e "Servername \t\t kernel version"> $result
#this get each line of serverlist one by one and write to server variable
for server in $servers
do
#this login to server by ssh and get uname -r
kernel=`ssh root@${server} "uname -r"`
#this write server name and kernel version separated by 2 tab to result file
echo -e "$server \t\t $kernel" >> $result
#end of for loop.
done
33. Linux 安裝的最低要求是什么?
隨著更新的 Linux 發行版每隔一周或一個月推出,沒有明確的最低要求。由于改進了 GUI 功能和架構,較舊版本將需要更高的最低要求。盡管如此,任何 Linux 發行版都應與具有以下最低要求的 PC 一起使用:
25 GB of hard disk space
2 GB RAM
2 Ghz dual core processor
A screen resolution of 1024x768
A CD/DVD ROM or USB port for inserting installation media
34.如何設置Linux文件/目錄權限?
要設置文件權限,請使用chmod命令后跟八進制值或符號值,然后是文件名或目錄名。
例如分配一個文件權限值為 664 運行
chmod 664 filename
要分配目錄權限,請使用-R遞歸分配權限的選項。
chmod -R 664 directory_name
35. 如何設置文件/目錄的所有權?
要設置文件所有者,請使用該chown命令。例如chown user:user filename
對于目錄,使用-R遞歸分配權限的選項。例如
chown -R user:user directory_name
36. 如何在Linux中創建用戶和組?
要創建用戶,請運行命令adduser user_name例如
adduser john
37、如何在Linux中查找內核/操作系統版本?
運行命令uname -a
38、如何查找接口IP地址?
ifconfig interface_name您可以通過運行命令或使用ip 命令(推薦)輕松找到 IP 接口。
例如
ifconfig eth0
ip addr show
39.什么是initrd鏡像?
初始 RAM 磁盤 (initrd) 是在真正的根文件系統可用之前安裝的初始根文件系統。initrd 綁定到內核并作為內核引導過程的一部分加載。然后內核將這個 initrd 掛載為兩階段引導過程的一部分,以加載模塊以使真實文件系統可用并獲得真實的根文件系統。因此 initrd 映像在linux 啟動過程中起著至關重要的作用。
40.解釋suid、sgid和sticky bit這幾個術語?
除了 Linux 中的基本文件權限外,可執行文件和目錄還有一些特殊權限。
SUID:如果設置了setuid位,當用戶執行文件時,進程將擁有與正在執行的文件的所有者相同的權限。
SGID:同上,但在執行時繼承文件的組權限,而不是用戶權限。類似地,當您在目錄中創建文件時,它將繼承目錄的組所有權。
粘滯位:粘滯位用于 linux 中的可執行文件,以便在初始執行后它們會在內存中保留更長時間,希望在不久的將來會需要它們。但主要是在文件夾上,這意味著在啟用 Stickybit 的文件夾中創建的文件或文件夾只能由所有者刪除。粘性位的一個很好的實現是 /tmp ,每個用戶都有寫權限,但只有擁有文件的用戶才能刪除它們。
41. linux 中的運行級別是什么,如何更改它們?
運行級別是 init 和整個系統的狀態,它定義了正在運行的系統服務,它們由數字標識。Linux 系統中有 7 個不同的運行級別(運行級別 0-6)用于不同的目的。下面給出描述。
0: Halt System (To shutdown the system)
1: Single user mode
2: Basic multi user mode without NFS
3: Full multi user mode (text based)
4: unused
5: Multi user mode with Graphical User Interface
6: Reboot System
要更改運行級別,請編輯文件“/etc/inittab”并更改 initdefault 條目 (id:5:initdefault:)。如果我們想即時更改運行級別,可以使用“init”命令來完成。
例如,當我們在命令行中輸入“init 3”時,這會將系統從當前運行級別移動到運行級別 3。可以通過輸入命令“who -r”列出當前級別
42.什么是SeLinux?
SELinux 是 Security-enhanced Linux 的縮寫。它是 Linux 內核的訪問控制實現和安全功能。它旨在保護服務器免受錯誤配置和/或受損守護程序的影響。它通過定義安全策略設置限制并指示服務器守護程序或程序可以訪問哪些文件以及可以采取哪些操作。
43. 選擇 5 個 Linux 命令,你的選擇是什么?
1) rsync 命令
rsync 命令可用于同步兩個目錄或目錄樹,無論它們是在同一臺計算機上還是在不同的計算機上,但它可以做的遠不止這些。rsync 創建或更新目標目錄,使其與源目錄相同。
rsync -aH sourcedir targetdir
-a 選項用于保留權限、所有權和符號(軟)鏈接的存檔模式。-H 用于保留硬鏈接。請注意,源目錄或目標目錄都可以位于遠程主機上。
2) sed 命令
當您需要選擇文件的特定行時,使用Sed 命令。Sed 是流編輯器的縮寫,是執行此操作的一種方法。您想合并多個具有標題的文件或進行批量查找和替換文件。
在匹配“正則表達式”的每一行上方插入一個空行
$ sed '/regex/{x;p;x;}'
將“scarlet”或“ruby”或“puce”更改為“red”
$ sed 's/scarlet/red/g;s/ruby/red/g;s/puce/red/g'
3) awk 命令
awk 是一種編程語言,可以輕松操作結構化數據并生成格式化報告。它主要用于圖案掃描和加工。它搜索一個或多個文件以查看它們是否包含與指定模式匹配的行,然后執行相關操作。這就像 sed 命令。如果您對awk 命令感興趣,那么您的生活將變得輕松。
打印特定字段
$ awk -F':' '{ print $1 }' /etc/group
$ date | awk '{print $2 " " $6}'
4) lsof 命令
lsof 是一個命令行實用程序,用于列出有關由各種進程打開的文件的信息。在 unix 中,一切都是文件:管道、套接字、目錄、設備等。因此,通過使用 lsof,您可以獲得有關任何已打開文件的信息。
列出打開特定文件的進程
# lsof /var/log/syslog
列出屬于用戶擁有的進程的所有打開文件
# lsof -u username
殺死屬于特定用戶的所有進程
# kill -9 `lsof -t -u username
列出所有網絡連接
# lsof -i
列出特定進程正在使用的所有網絡文件
# lsof -i -a -c ssh
列出正在偵聽特定端口的進程
# lsof -i :25
5) grep 命令
Grep 是用于搜索文本或給定文件中包含與給定字符串或單詞匹配的行的命令。默認情況下,grep 顯示匹配的行。
打印Firefox使用的網絡連接
# netstat -pltnu | grep firefox
在 /etc/passwd 文件中打印包含“root”的行
# cat /etc/passwd | grep root
44. 基于名稱的虛擬主機和基于IP的虛擬主機有什么區別?
虛擬主機用于在單個 apache 實例上托管多個域。您可以為服務器擁有的每個 IP 設置一個虛擬主機,或者相同的 IP 但不同的端口,或者相同的 IP、相同的端口但不同的主機名。后者稱為“基于名稱的虛擬主機”。
在基于 IP 的虛擬主機上,我們可以在同一臺服務器機器上運行多個網站,但每個網站都有自己的 IP 地址,而在基于名稱的虛擬主機中,我們在同一個 IP 地址上托管多個網站。但要成功,您必須在 DNS 數據庫中為您的 IP 地址放置多個 DNS 記錄。
45. 網絡綁定有什么優勢?
Network Bonding是一個 Linux 內核功能,允許將多個網絡接口聚合到單個虛擬鏈接中。這是在生產系統中實現冗余鏈路、容錯或負載平衡網絡的好方法。如果其中一個物理 NIC 關閉或拔出,它會自動將流量轉移到另一個 NIC 卡。類似地,綁定將增加接口吞吐量以處理在主動-主動模式下配置的流量。
46. /etc/passwd 和 /etc/shadow 文件有什么用?
/etc/shadow 文件以加密格式存儲實際密碼,并帶有一些與用戶密碼相關的附加屬性。主要保存賬齡參數。所有字段均以冒號 (:) 符號分隔。對于/etc/passwd 文件中列出的每個用戶,它每行包含一個條目。
47. 為什么設置密碼少ssh登錄?
為了進一步提高系統安全性,大多數組織轉而使用基于密鑰的身份驗證,而不是基于密碼的身份驗證。我們可以通過禁用標準密碼身份驗證來強制執行基于密鑰的身份驗證,這涉及公鑰私鑰對。公鑰添加在服務器配置文件中,而私鑰在客戶端保密。
48. 什么是 Linux 中的 swappiness?
swappiness 參數控制內核將進程移出物理內存并移至交換磁盤的趨勢。由于磁盤比 RAM 慢得多,如果進程過于激進地移出內存,這可能會導致系統和應用程序的響應時間變慢。
swappiness 的值可以在 0 到 100 之間
swappiness=0 告訴內核盡可能長時間地避免將進程交換出物理內存
swappiness=100 告訴內核積極地將進程交換出物理內存并將它們移動到交換緩存
?
?
總結
以上是生活随笔為你收集整理的48 个 Linux 面试问题和答案的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 可以买的一本书:3D计算机图形学(原书第
- 下一篇: NetTiers模板中各个选项的一些解释