Linux面試題:50道一次分享給你,至少要答上一半!

小編在這裏給你們準備了50道Linux面試題,或者是說平常知識點,不論是前端或者後端,我以爲都是必備的,或者學會了不會吃虧的。建議收藏。前端

1.什麼是Linux?

是一套無償使用和自由傳播的類UNIX操做系統,其內核由林納斯·本納第克特·託瓦茲於1991年第一次釋出,它主要受到Minix和Unix思想的啓發,是一個基於POSIX和Unix的多用戶、多任務、支持多線程和多CPU的操做系統。它能運行主要的Unix工具軟件、應用程序和網絡協議。它支持32位和64位硬件。java

2.Linux內核主要負責哪些功能

  • 系統內存管理
  • 軟件程序管理
  • 硬件設備管理
  • 文件系統管理

3.交互方式

控制檯終端、圖形化終端linux

4.啓動shell

GNU bash shell能提供對linux 系統的交互式訪問。做爲普通程序運行,一般在用戶登錄終端時啓動。登陸時系統啓動的shell依賴與用戶帳戶的配置。web

5.bash手冊

大多數linux發行版自帶以查找shell命令及其餘GNU工具信息的在線手冊。man命令用來訪問linux系統上的手冊頁面。當用man命令查看手冊,使用分頁的程序來現實的。面試

6.登錄後你在的位置?

通常登錄後,你的位置位於本身的主目錄中。shell

7.絕對文件路徑?相對文件路徑?快捷方式?

絕對文件路徑:描述了在虛擬目錄結構中該目錄的確切位置,以虛擬目錄跟目錄開始,至關於目錄全名。apache

以正斜線(/)開始,好比 /usr/local。編程

相對文件路徑:容許用戶執行一個基於當前位置的目標文件路徑。vim

好比:當前在/usr/local後端

➜  local ls
Caskroom Frameworks bin go lib sbin var Cellar Homebrew etc include opt share ➜ local cd go 複製代碼

快捷方式(在相對路徑中使用):

單點符(.) : 表示當前目錄; 雙點符(..) : 表示當前目錄的父目錄。

8.迷路,個人當前位置在哪?

pwd 顯示當前目錄

[root@iz2ze76ybn73dvwmdij06zz local]# pwd
/usr/local 複製代碼

9.如何切換目錄?

語法: cd destination

destination : 相對文件路徑或絕對文件路徑

能夠跳到存在的任意目錄。

10.如何查看目錄中的文件?區分哪些是文件哪些是目錄?遞歸查?

ls 命令會用最基本的形式顯示當前目錄下的文件和目錄:

➜  local ls
Caskroom Frameworks bin go lib sbin var Cellar Homebrew etc include opt share 複製代碼

能夠看出默認是按照字母序展現的

通常來講,ls命令回顯示不一樣的顏色區分不一樣的文件類型,若是沒有安裝顏色插件能夠用ls -F來區分哪些是目錄(目錄帶/),哪些是文件(文件不帶/)

ls -R 遞歸展現出目錄下以及子目錄的文件,目錄越多輸出越多

11.建立文件?建立目錄?批量建立?

建立文件:touch 文件名

批量建立文件: touch 文件名 文件名 …

➜  test touch a
➜  test ls
a
➜  test touch b c
➜  test ls
a b c
複製代碼

建立目錄:mkdir 目錄名

批量建立目錄: mkdir 目錄名 目錄名 …

➜  test mkdir aa
➜  test mkdir bb cc
➜  test ls
a  aa b  bb c  cc
➜  test ls -F
a   aa/ b   bb/ c   cc/
複製代碼

12.刪除文件?強制刪除?遞歸刪除?

語法: rm destination

-i 詢問是否刪除,-r 遞歸刪除,-f 強制刪除。

rm不能刪除有文件的目錄,須要遞歸刪除。

➜  xktest rm jdk
rm: jdk: is a directory
➜  xktest rm -r jdk
➜  xktest ls
複製代碼

rm -i 詢問刪除,建議你們平時刪除多用 -i,肯定一下再刪除。

➜  xktest touch tomcat
➜  xktest rm -i tomcat
remove tomcat? n
複製代碼

rm -rf 會直接刪除,沒有警告信息,使用必須謹慎**。

13.製表符自動補全?

有的時候文件的名字很長,很容易拼出錯即便拼寫對了也很浪費時間。

➜  xktest ls java*
javaxiaokaxiu
複製代碼

好比操做javaxiaokaxiu這個文件時,輸入到java的時候,而後按製表鍵(tab)就會補全成javaxiaokaxiu,是否是方便多了。

14.複製文件

語法: cp source target

若是target不存在則直接建立,若是存在,默認不會提醒你是否須要覆蓋,須要加-i就會詢問你是否覆蓋,n否y是。

➜  xktest cp a c
➜  xktest cp -i a c
overwrite c? (y/n [n]) y
➜  xktest ls
a c
複製代碼

15.從新命名文件?移動文件?

語法 : mv soucre target

重命名:

➜  xktest ls
➜  xktest touch java
➜  xktest ls
java
➜  xktest mv java java1.8
➜  xktest ls
java1.8
複製代碼

移動文件:

新建jdk目錄把java1.8文件移動到jdk目錄下。

➜ xktest ls java1.8 ➜ xktest mkdir jdk ➜ xktest mv java1.8 jdk ➜ xktest ls -R jdk 複製代碼./jdk: java1.8 複製代碼

16.什麼是連接文件?

如過須要在系統上維護同一文件的兩份或者多份副本,除了保存多分單獨的物理文件副本以外。還能夠採用保存一份物理文件副本和多個虛擬副本的方法,這種虛擬的副本就叫作連接。

17.查看文件類型?字符編碼?

語法: file destination

➜  apache file tomcat
tomcat: ASCII text
複製代碼

能夠看出,file命令能夠顯示文件的類型text以及字符編碼ASCII

18.查看整個文件?按照有文本顯示行號?無文本顯示行號?

語法 : cat destination

-n 顯示行號,-b 有文本的顯示行號。 (默認是不顯示行號的)

➜ apache cat -n tomcat 1 text 2 text 3 4 start 5 stop 6 restart 7 end ➜ apache cat -b tomcat 1 text 2 text
 3	start
 4	stop
 5	restart
 6	end
複製代碼
複製代碼3 start 4 stop 5 restart 6 end 複製代碼複製代碼

19.查看部分文件

語法 : tail destination

默認狀況會展現文件的末尾10行。 -n 行數,顯示最後n行。

➜  apache tail -n 2 tomcat
restart
end
複製代碼

語法: head destination

默認狀況會展現文件的開頭10行。 -n 行數,顯示開頭n行。

➜  apache head -n 2 tomcat
text
text
複製代碼

20.數據排序?對數字進行排序?對月份排序?

默認狀況下,文件的數據展現是按照原順序展現的。sort命令能夠對文本文件中的數據進行排序。sort默認會把數據當成字符處理。

語法: sort destination

sort -n 因此排序數字時須要用-n,它的含義是說當前排序是的數字。

sort -M 好比月份Jan、Feb、Mar,若是但願它按照月份排序,加入-M就會按照月份的大小來排序。

21.查找匹配數據?反向搜?

語法: grep [options] pattern [file]

該命令會查找匹配執行模式的字符串的行,並輸出。

➜  apache grep start tomcat
start
restart
複製代碼

-v 反向搜

➜ apache grep -v start tomcat text text 複製代碼stop end 複製代碼

-n 顯示行號

-c 顯示匹配的行數

22.壓縮工具備哪些?

image-20200421122324314
image-20200421122324314

23.如何壓縮文件?如何解壓文件?

好比以.gz的格式舉例。

壓縮語法: gzip destination

➜  apache gzip tomcat
➜  apache ls
tomcat.gz
複製代碼

解壓語法: gunzip destination

➜  apache gunzip tomcat.gz
➜  apache ls
tomcat
複製代碼

24.Linux普遍使用的歸檔數據方法?

雖然zip命令能壓縮和解壓單個文件,可是更多的時候普遍使用tar命令來作歸檔。

語法: tar function [options] obj1 obj2

image-20200421122932671
image-20200421122932671
➜  apache tar -cvf service.tar service1 service2 // 建立規定文件service.tar
a service1
a service2
➜  apache tar -tf service.tar //查看文件中的目錄內容
service1
service2
➜  apache tar zxvf service.tar //解壓
x service1
x service2
複製代碼

25.如何查看命令歷史記錄?

history 命令能夠展現你用的命令的歷史記錄。

4463  touch service1 service2
 4464  ls
 4465  tar -cvf service.tar service1 service2
 4466  tar -tf service.tar
 4467  tar zxvf service
 4468  tar zxvf service.t
 4469  tar zxvf service.tar
 4470  ls
 4471  tar -zxvf  service.tar
 4472  ls
複製代碼

26.查看已有別名?創建屬於本身的別名?

alias -p 查看當前可用別名

[root@iz2ze76ybn73dvwmdij06zz ~]# alias -p
alias cp='cp -i'
alias egrep='egrep —color=auto'
alias fgrep='fgrep —color=auto'
alias grep='grep —color=auto'
alias l.='ls -d .* —color=auto'
alias ll='ls -l —color=auto'
複製代碼

alias li = 'ls -li' 建立別名

27.什麼是環境變量?

bash shell用一個叫做環境變量(environment variable)的特性來存儲有關shell會話和工做環境的信息。這項特性容許你在內存中存儲數據,以便程序或shell中運行的腳本可以輕鬆訪問到它們。這也是存儲持久數據的一種簡便方法。

在bash shell中,環境變量分爲兩類:

全局變量:對於 shell會話和全部生成的子shell都是可見的。 局部變量: 只對建立他們的shell可見。

28.儲存用戶的文件是?包括哪些信息?

/etc/passwd存儲來一些用戶有關的信息。

[root@iz2ze76ybn73dvwmdij06zz ~]# cat /etc/passwd
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
複製代碼

文件信息包括以下內容。

  • 登陸用戶名
  • 用戶密碼
  • 用戶帳戶的UID(數字形式)
  • 用戶帳戶的組ID(GID)(數字形式)
  • 用戶帳戶的文本描述(稱爲備註字段)
  • 用戶HOME目錄的位置
  • 用戶的默認shell

29.帳戶默認信息?添加帳戶?刪除用戶?

[root@iz2ze76ybn73dvwmdij06zz ~]# useradd -D//查看系統默認建立用戶信息 GROUP=100 HOME=/home INACTIVE=-1 EXPIRE= SHELL=/bin/bash SKEL=/etc/skel CREATE_MAIL_SPOOL=yes [root@iz2ze76ybn73dvwmdij06zz ~]# useradd xiaoka//添加用戶 複製代碼[root@iz2ze76ybn73dvwmdij06zz /]# userdel xiaoka//刪除用戶 複製代碼

30.查看組信息?如何建立組?刪除組?

[root@iz2ze76ybn73dvwmdij06zz ~]# cat /etc/group
root:x:0:
bin:x:1:
daemon:x:2:
sys:x:3:
adm:x:4:
tty:x:5:
disk:x:6:
[root@iz2ze76ybn73dvwmdij06zz ~]# groupadd java //建立組
[root@iz2ze76ybn73dvwmdij06zz ~]# groupdel java //建立組
複製代碼

31.文件描述符?每一個描述符的含義?

[root@iz2ze76ybn73dvwmdij06zz xiaoka]# ls -l
總用量 0
-rw-r—r— 1 root root 0 4月  21 13:17 a
-rw-r—r— 1 root root 0 4月  21 13:17 b
-rw-r—r— 1 root root 0 4月  21 13:17 c
-rw-r—r— 1 root root 0 4月  21 13:17 d
-rw-r—r— 1 root root 0 4月  21 13:17 e
複製代碼

一、文件類型:

  • -表明文件
  • d表明目錄
  • l表明連接
  • c表明字符型設備
  • b表明塊設備
  • n表明網絡設備

二、訪問權限符號:

  • r表明對象是可讀的
  • w表明對象是可寫的
  • x表明對象是可執行的

若沒有某種權限,在該權限位會出現單破折線。

三、這3組權限分別對應對象的3個安全級別:

  • 對象的屬主
  • 對象的屬組
  • 系統其餘用戶

31.修改權限?

chmod options mode file

好比給文件附加能夠執行權限:

[root@xiaoka ~]# chmod +x filename
複製代碼

32.如何執行能夠執行文件?

[root@xiaoka ~]# sh sleep.sh
hello,xiaoka
[root@xiaoka ~]# ./sleep.sh
hello,xiaoka
複製代碼

33.列出已經安裝的包?安裝軟件?更新軟件?卸載?

列出已經安裝的包: yum list installed

安裝軟件: yum install package_name

更新軟件: yum update package_name

卸載軟件:yum remove package_name //只刪除軟件包保留數據文件和配置文件

若是不但願保留數據文件和配置文件

能夠執行:yum erase package_name

34.源碼安裝一般的路子?

tar -zxvf xx.gz //解包
 cd xx
 ./configure
 make
 make install
複製代碼

35.vim編輯器幾種操做模式?基本操做?

操做模式:

  • 普通模式
  • 插入模式

基礎操做:

  • h:左移一個字符。
  • j:下移一行(文本中的下一行)。
  • k:上移一行(文本中的上一行)。
  • l:右移一個字符。

vim提供了一些可以提升移動速度的命令:

  • PageDown(或Ctrl+F):下翻一屏
  • PageUp(或Ctrl+B):上翻一屏。
  • G:移到緩衝區的最後一行。
  • num G:移動到緩衝區中的第num行。
  • gg:移到緩衝區的第一行。

退出vim:

  • q:若是未修改緩衝區數據,退出。
  • q!:取消全部對緩衝區數據的修改並退出。
  • w filename:將文件保存到另外一個文件中。
  • wq:將緩衝區數據保存到文件中並退出。

36.查看設備還有多少磁盤空間?

df 能夠查看全部已掛在磁盤的使用狀況。

-m 用兆字節,G代替g字節

[root@iz2ze76ybn73dvwmdij06zz ~]# df
文件系統          1K-塊    已用     可用 已用% 掛載點
devtmpfs        1931568       0  1931568    0% /dev
tmpfs           1940960       0  1940960    0% /dev/shm
tmpfs           1940960     720  1940240    1% /run
tmpfs           1940960       0  1940960    0% /sys/fs/cgroup
/dev/vda1      41152812 9068544 30180560   24% /
tmpfs            388192       0   388192    0% /run/user/0
複製代碼
快速判斷某個特定目錄是否有超大文件?

默認狀況,du會顯示當前目錄的全部文件、目錄、子目錄的磁盤使用狀況。

[root@iz2ze76ybn73dvwmdij06zz src]# du
4	./debug
4	./kernels
12
複製代碼

37.默認進程信息顯示?

ps它能輸出運行在系統上的全部程序的許多信息。

默認狀況下ps值顯示運行在當前控制檯下的當前用戶的進程。

[root@iz2ze76ybn73dvwmdij06zz ~]# ps
  PID TTY          TIME CMD
10102 pts/0    00:00:00 bash
10131 pts/0    00:00:00 ps
複製代碼

38.實時監測進程

與ps相比,top能夠實時監控進程信息。

image-20200421114633852
image-20200421114633852

平均負載有3個值:最近1分鐘的、最近5分鐘的和最近15分鐘的平均負載。值越大說明系統 的負載越高。因爲進程短時間的突發性活動,出現最近1分鐘的高負載值也很常見,但若是近15分 鍾內的平均負載都很高,就說明系統可能有問題。

39.如何中斷一個進程?

在一個終端中, Ctrl + c

經過這個命令許多(不是所有)命令行程序均可以被中斷。

40.如何把一個進程放到後臺運行?

[root@iz2ze76ybn73dvwmdij06zz ~]# ./sleep.sh &
複製代碼

此時,進程並不能被Ctrl + c 中斷。

41.如何中止一個進程?

kill命令被用來給程序發送信號。若是沒有指定信號,默認發送TERM(終止)信號。

語法 : kill [-signal] PID …

image-20200421141556974
image-20200421141556974

42.驗證網絡可連接命令是什麼?什麼原理?

ping。這個 ping 命令發送一個特殊的網絡數據包(叫作 IMCP ECHO REQUEST)到一臺指定的主機。大多數接收這個包的網絡設備將會回覆它,來容許網絡鏈接驗證。

image-20200421142307602
image-20200421142307602

一旦啓動,ping會持續在特定時間(默認1秒)發送數據包。

43.查看某端口是否被佔用?

netstat -ntulp|grep 8080

[root@iz2ze76ybn73dvwmdij06zz ~]# netstat -ntulp|grep 8080
tcp        0      0 0.0.0.0:8080            0.0.0.0:*               LISTEN      4517/java
複製代碼

參數說明:

  • -t (tcp) 僅顯示tcp相關選項
  • -u (udp)僅顯示udp相關選項
  • -n 拒絕顯示別名,能顯示數字的所有轉化爲數字
  • -l 僅列出在Listen(監聽)的服務狀態
  • -p 顯示創建相關連接的程序名

44.如何查找匹配的文件?基於文件屬性?

find 程序能基於各類各樣的屬性,搜索一個給 定目錄(以及它的子目錄),來查找文件。

find 命令的最簡單使用是,搜索一個或多個目錄。

普通查找,按照name查找:

[root@iz2ze76ybn73dvwmdij06zz ~]# find -name xiaoka
./xiaoka
複製代碼

文件類型查找:

好比,輸出咱們的家目錄文件數量

[root@iz2ze76ybn73dvwmdij06zz ~]# find ~|wc -l
17130
複製代碼

根據文件類型查:

[root@iz2ze76ybn73dvwmdij06zz ~]#  find ~ -type d | wc -l
7340
複製代碼

find支持的類型: b 塊設備文件、 c 字符設備文件、d 目錄、f 普通文件、l 符號連接

45.如何查看當前主機名?如何修改?如何重啓後生效?

[root@iz2ze76ybn73dvwmdij06zz ~]# hostname//查看當前主機名
iz2ze76ybn73dvwmdij06zz
[root@iz2ze76ybn73dvwmdij06zz ~]# hostname xiaoka//修改當前主機名
[root@iz2ze76ybn73dvwmdij06zz ~]# hostname
xiaoka
複製代碼

你們知道通常來說命令重啓就會失效,目前基本上用的centos7的比較多,兩種方式能夠支持重啓生效。

1、命令

[root@iz2ze76ybn73dvwmdij06zz ~]# hostnamectl set-hostname xiaoka
[root@iz2ze76ybn73dvwmdij06zz ~]# hostname
xiaoka
[root@xiaoka ~]#
複製代碼

2、修改配置文件:/etc/hostname

[root@xiaoka ~]# vim /etc/hostname
複製代碼

46.如何寫一條規則,拒絕某個ip訪問本機8080端口?

iptables -I INPUT -s ip -p tcp —dport 8080 -j REJECT
複製代碼

47.哪一個文件包含了主機名和ip的映射關係?

/etc/hosts

48.如何用sed只打印第5行?刪除第一行?替換字符串?

只打印第5行:

➜  apache sed -n "5p" tomcat
stop
複製代碼

刪除第一行:

[root@xiaoka ~]# cat story
Long ago a lion and a bear saw a kid.
They sprang upon it at the same time.
The lion said to the bear, 「I caught this kid first, and so this is mine.」
[root@xiaoka ~]# cat story
They sprang upon it at the same time.
The lion said to the bear, 「I caught this kid first, and so this is mine.」
複製代碼

替換字符串:

➜  apache cat story
Long ago a lion and a bear saw a kid.
They sprang upon it at the same time.
The lion said to the bear, 「I caught this kid first, and so this is mine.」
➜  apache sed 's#this#that#g' story
Long ago a lion and a bear saw a kid.
They sprang upon it at the same time.
The lion said to the bear, 「I caught that kid first, and so that is mine.」
複製代碼

49.打印文件第一行到第三行?

​ 文件tomcat中內容:

➜  apache cat tomcat
text21
text22
text23
start
stop
restart
end
複製代碼
➜ apache head -3 tomcat
text21
text22
text23
➜ apache sed -n '1,3p' tomcat
text21
text22
text23
➜ apache awk 'NR>=1&&NR<=3' tomcat
text21
text22
text23
複製代碼

50.如何用awk查看第2行倒數第3個字段?

➜  apache awk 'NR==3{print $(NF-2)}' story
this
➜  apache cat story
Long ago a lion and a bear saw a kid.
They sprang upon it at the same time.
The lion said to the bear, 「I caught this kid first, and so this is mine.」
複製代碼

參考:

  • 《鳥哥Linux私房菜》

  • 《快樂的命令行》

  • 《Linux命令行與shell腳本編程大全(第3版)》

  • 《Linux從入門到精通》

  • 百度百科

  • ​ 公衆號:《馬里奧玩Python》

相關文章
相關標籤/搜索