小咖在這里給大家準(zhǔn)備了50道Linux面試題,或者是說(shuō)日常知識(shí)點(diǎn),不管是前端或者后端,我覺(jué)得都是必備的,或者學(xué)會(huì)了不會(huì)吃虧的。建議收藏。
1.什么是Linux?
是一套免費(fèi)使用和自由傳播的類UNIX操作系統(tǒng),其內(nèi)核由林納斯·本納第克特·托瓦茲于1991年第一次釋出,它主要受到Minix和Unix思想的啟發(fā),是一個(gè)基于POSIX和Unix的多用戶、多任務(wù)、支持多線程和多CPU的操作系統(tǒng)。它能運(yùn)行主要的Unix工具軟件、應(yīng)用程序和網(wǎng)絡(luò)協(xié)議。它支持32位和64位硬件。
2.Linux內(nèi)核主要負(fù)責(zé)哪些功能
- 系統(tǒng)內(nèi)存管理
- 軟件程序管理
- 硬件設(shè)備管理
- 文件系統(tǒng)管理
3.交互方式
控制臺(tái)終端、圖形化終端
4.啟動(dòng)shell
GNU bash shell能提供對(duì)linux 系統(tǒng)的交互式訪問(wèn)。作為普通程序運(yùn)行,通常在用戶登陸終端時(shí)啟動(dòng)。登錄時(shí)系統(tǒng)啟動(dòng)的shell依賴與用戶賬戶的配置。
5.bash手冊(cè)
大多數(shù)linux發(fā)行版自帶以查找shell命令及其他GNU工具信息的在線手冊(cè)。man命令用來(lái)訪問(wèn)linux系統(tǒng)上的手冊(cè)頁(yè)面。當(dāng)用man命令查看手冊(cè),使用分頁(yè)的程序來(lái)現(xiàn)實(shí)的。
6.登陸后你在的位置?
一般登陸后,你的位置位于自己的主目錄中。
7.絕對(duì)文件路徑?相對(duì)文件路徑?快捷方式?
絕對(duì)文件路徑:描述了在虛擬目錄結(jié)構(gòu)中該目錄的確切位置,以虛擬目錄跟目錄開(kāi)始,相當(dāng)于目錄全名。
以正斜線(/)開(kāi)始,比如 /usr/local。
相對(duì)文件路徑:允許用戶執(zhí)行一個(gè)基于當(dāng)前位置的目標(biāo)文件路徑。
比如:當(dāng)前在/usr/local
? local ls
Caskroom Frameworks bin go lib sbin var
Cellar Homebrew etc include opt share
? local cd go
快捷方式(在相對(duì)路徑中使用):
單點(diǎn)符(.) : 表示當(dāng)前目錄;
雙點(diǎn)符(..) : 表示當(dāng)前目錄的父目錄。
8.迷路,我的當(dāng)前位置在哪?
pwd 顯示當(dāng)前目錄
[root@iz2ze76ybn73dvwmdij06zz local]# pwd
/usr/local
9.如何切換目錄?
語(yǔ)法: cd destination
destination : 相對(duì)文件路徑或絕對(duì)文件路徑
可以跳到存在的任意目錄。
10.如何查看目錄中的文件?區(qū)分哪些是文件哪些是目錄?遞歸查?
ls 命令會(huì)用最基本的形式顯示當(dāng)前目錄下的文件和目錄:
? local ls
Caskroom Frameworks bin go lib sbin var
Cellar Homebrew etc include opt share
可以看出默認(rèn)是按照字母序展示的
一般來(lái)說(shuō),ls命令回顯示不同的顏色區(qū)分不同的文件類型,如果沒(méi)有安裝顏色插件可以用ls -F來(lái)區(qū)分哪些是目錄(目錄帶/),哪些是文件(文件不帶/)
ls -R 遞歸展示出目錄下以及子目錄的文件,目錄越多輸出越多
11.創(chuàng)建文件?創(chuàng)建目錄?批量創(chuàng)建?
創(chuàng)建文件:touch 文件名
批量創(chuàng)建文件: touch 文件名 文件名 …
? test touch a
? test ls
a
? test touch b c
? test ls
a b c
創(chuàng)建目錄:mkdir 目錄名
批量創(chuàng)建目錄: 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.刪除文件?強(qiáng)制刪除?遞歸刪除?
語(yǔ)法: rm destination
-i 詢問(wèn)是否刪除,-r 遞歸刪除,-f 強(qiáng)制刪除。
rm不能刪除有文件的目錄,需要遞歸刪除。
? xktest rm jdk
rm: jdk: is a directory
? xktest rm -r jdk
? xktest ls
rm -i 詢問(wèn)刪除,建議大家平時(shí)刪除多用 -i,確定一下再刪除。
? xktest touch tomcat
? xktest rm -I tomcat
remove tomcat? n
rm -rf 會(huì)直接刪除,沒(méi)有警告信息,使用必須謹(jǐn)慎**。
13.制表符自動(dòng)補(bǔ)全?
有的時(shí)候文件的名字很長(zhǎng),很容易拼出錯(cuò)即使拼寫(xiě)對(duì)了也很浪費(fèi)時(shí)間。
? xktest ls java*
javaxiaokaxiu
比如操作javaxiaokaxiu這個(gè)文件時(shí),輸入到j(luò)ava的時(shí)候,然后按制表鍵(tab)就會(huì)補(bǔ)全成javaxiaokaxiu,是不是方便多了。
14.復(fù)制文件
語(yǔ)法: cp source target
如果target不存在則直接創(chuàng)建,如果存在,默認(rèn)不會(huì)提醒你是否需要覆蓋,需要加-i就會(huì)詢問(wèn)你是否覆蓋,n否y是。
? xktest cp a c
? xktest cp -i a c
overwrite c? (y/n [n]) y
? xktest ls
a c
15.重新命名文件?移動(dòng)文件?
語(yǔ)法 : mv soucre target
重命名:
? xktest ls
? xktest touch java
? xktest ls
java
? xktest mv java java1.8
? xktest ls
java1.8
移動(dòng)文件:
新建jdk目錄把java1.8文件移動(dòng)到j(luò)dk目錄下。
? xktest ls
java1.8
? xktest mkdir jdk
? xktest mv java1.8 jdk
? xktest ls -R
jdk
./jdk:
java1.8
16.什么是鏈接文件?
如過(guò)需要在系統(tǒng)上維護(hù)同一文件的兩份或者多份副本,除了保存多分單獨(dú)的物理文件副本之外。還可以采用保存一份物理文件副本和多個(gè)虛擬副本的方法,這種虛擬的副本就叫做鏈接。
17.查看文件類型?字符編碼?
語(yǔ)法: file destination
? apache file tomcat
tomcat: ASCII text
可以看出,file命令可以顯示文件的類型text以及字符編碼ASCII
18.查看整個(gè)文件?按照有文本顯示行號(hào)?無(wú)文本顯示行號(hào)?
語(yǔ)法 : cat destination
-n 顯示行號(hào),-b 有文本的顯示行號(hào)。 (默認(rèn)是不顯示行號(hào)的)
? 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
19.查看部分文件
語(yǔ)法 : tail destination
默認(rèn)情況會(huì)展示文件的末尾10行。 -n 行數(shù),顯示最后n行。
? apache tail -n 2 tomcat
restart
end
語(yǔ)法: head destination
默認(rèn)情況會(huì)展示文件的開(kāi)頭10行。 -n 行數(shù),顯示開(kāi)頭n行。
? apache head -n 2 tomcat
text
text
20.數(shù)據(jù)排序?對(duì)數(shù)字進(jìn)行排序?對(duì)月份排序?
默認(rèn)情況下,文件的數(shù)據(jù)展示是按照原順序展示的。sort命令可以對(duì)文本文件中的數(shù)據(jù)進(jìn)行排序。sort默認(rèn)會(huì)把數(shù)據(jù)當(dāng)成字符處理。
語(yǔ)法: sort destination
sort -n 所以排序數(shù)字時(shí)需要用-n,它的含義是說(shuō)當(dāng)前排序是的數(shù)字。
sort -M 比如月份Jan、Feb、Mar,如果希望它按照月份排序,加入-M就會(huì)按照月份的大小來(lái)排序。
21.查找匹配數(shù)據(jù)?反向搜?
語(yǔ)法: grep [options] pattern [file]
該命令會(huì)查找匹配執(zhí)行模式的字符串的行,并輸出。
? apache grep start tomcat
start
restart
-v 反向搜
? apache grep -v start tomcat
text
text
stop
end
-n 顯示行號(hào)
-c 顯示匹配的行數(shù)
22.壓縮工具有哪些?
23.如何壓縮文件?如何解壓文件?
比如以.gz的格式舉例。
壓縮語(yǔ)法: gzip destination
? apache gzip tomcat
? apache ls
tomcat.gz
解壓語(yǔ)法: gunzip destination
? apache gunzip tomcat.gz
? apache ls
tomcat
24.Linux廣泛使用的歸檔數(shù)據(jù)方法?
雖然zip命令能壓縮和解壓?jiǎn)蝹€(gè)文件,但是更多的時(shí)候廣泛使用tar命令來(lái)做歸檔。
語(yǔ)法: tar function [options] obj1 obj2
? apache tar -cvf service.tar service1 service2 // 創(chuàng)建規(guī)定文件service.tar
a service1
a service2
? apache tar -tf service.tar //查看文件中的目錄內(nèi)容
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 查看當(dāng)前可用別名
[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' 創(chuàng)建別名
27.什么是環(huán)境變量?
bash shell用一個(gè)叫作環(huán)境變量(environment variable)的特性來(lái)存儲(chǔ)有關(guān)shell會(huì)話和工作環(huán)境的信息。這項(xiàng)特性允許你在內(nèi)存中存儲(chǔ)數(shù)據(jù),以便程序或shell中運(yùn)行的腳本能夠輕松訪問(wèn)到它們。這也是存儲(chǔ)持久數(shù)據(jù)的一種簡(jiǎn)便方法。
在bash shell中,環(huán)境變量分為兩類:
全局變量:對(duì)于 shell會(huì)話和所有生成的子shell都是可見(jiàn)的。
局部變量: 只對(duì)創(chuàng)建他們的shell可見(jiàn)。
28.儲(chǔ)存用戶的文件是?包括哪些信息?
/etc/passwd存儲(chǔ)來(lái)一些用戶有關(guān)的信息。
[root@iz2ze76ybn73dvwmdij06zz ~]# cat /etc/passwd
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
文件信息包括如下內(nèi)容。
- 登錄用戶名
- 用戶密碼
- 用戶賬戶的UID(數(shù)字形式)
- 用戶賬戶的組ID(GID)(數(shù)字形式)
- 用戶賬戶的文本描述(稱為備注字段)
- 用戶HOME目錄的位置
- 用戶的默認(rèn)shell
29.賬戶默認(rèn)信息?添加賬戶?刪除用戶?
[root@iz2ze76ybn73dvwmdij06zz ~]# useradd -D//查看系統(tǒng)默認(rèn)創(chuàng)建用戶信息
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.查看組信息?如何創(chuàng)建組?刪除組?
[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 //創(chuàng)建組
[root@iz2ze76ybn73dvwmdij06zz ~]# groupdel java //創(chuàng)建組
31.文件描述符?每個(gè)描述符的含義?
[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
1、文件類型:
- -代表文件
- d代表目錄
- l代表鏈接
- c代表字符型設(shè)備
- b代表塊設(shè)備
- n代表網(wǎng)絡(luò)設(shè)備
2、訪問(wèn)權(quán)限符號(hào):
- r代表對(duì)象是可讀的
- w代表對(duì)象是可寫(xiě)的
- x代表對(duì)象是可執(zhí)行的
若沒(méi)有某種權(quán)限,在該權(quán)限位會(huì)出現(xiàn)單破折線。
3、這3組權(quán)限分別對(duì)應(yīng)對(duì)象的3個(gè)安全級(jí)別:
- 對(duì)象的屬主
- 對(duì)象的屬組
- 系統(tǒng)其他用戶
31.修改權(quán)限?
chmod options mode file
比如給文件附加可以執(zhí)行權(quán)限:
[root@xiaoka ~]# chmod +x filename
32.如何執(zhí)行可以執(zhí)行文件?
[root@xiaoka ~]# sh sleep.sh
hello,xiaoka
[root@xiaoka ~]# ./sleep.sh
hello,xiaoka
33.列出已經(jīng)安裝的包?安裝軟件?更新軟件?卸載?
列出已經(jīng)安裝的包: yum list installed
安裝軟件: yum install package_name
更新軟件: yum update package_name
卸載軟件:yum remove package_name //只刪除軟件包保留數(shù)據(jù)文件和配置文件
如果不希望保留數(shù)據(jù)文件和配置文件
可以執(zhí)行:yum erase package_name
34.源碼安裝通常的路子?
tar -zxvf xx.gz //解包
cd xx
./configure
make
make install
35.vim編輯器幾種操作模式?基本操作?
操作模式:
- 普通模式
- 插入模式
基礎(chǔ)操作:
- h:左移一個(gè)字符。
- j:下移一行(文本中的下一行)。
- k:上移一行(文本中的上一行)。
- l:右移一個(gè)字符。
vim提供了一些能夠提高移動(dòng)速度的命令:
- PageDown(或Ctrl+F):下翻一屏
- PageUp(或Ctrl+B):上翻一屏。
- G:移到緩沖區(qū)的最后一行。
- num G:移動(dòng)到緩沖區(qū)中的第num行。
- gg:移到緩沖區(qū)的第一行。
退出vim:
- q:如果未修改緩沖區(qū)數(shù)據(jù),退出。
- q!:取消所有對(duì)緩沖區(qū)數(shù)據(jù)的修改并退出。
- w filename:將文件保存到另一個(gè)文件中。
- wq:將緩沖區(qū)數(shù)據(jù)保存到文件中并退出。
36.查看設(shè)備還有多少磁盤(pán)空間?
df 可以查看所有已掛在磁盤(pán)的使用情況。
-m 用兆字節(jié),G代替g字節(jié)
[root@iz2ze76ybn73dvwmdij06zz ~]# df
文件系統(tǒng) 1K-塊 已用 可用 已用% 掛載點(diǎn)
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
快速判斷某個(gè)特定目錄是否有超大文件?
默認(rèn)情況,du會(huì)顯示當(dāng)前目錄的所有文件、目錄、子目錄的磁盤(pán)使用情況。
[root@iz2ze76ybn73dvwmdij06zz src]# du
4 ./debug
4 ./kernels
12
37.默認(rèn)進(jìn)程信息顯示?
ps它能輸出運(yùn)行在系統(tǒng)上的所有程序的許多信息。
默認(rèn)情況下ps值顯示運(yùn)行在當(dāng)前控制臺(tái)下的當(dāng)前用戶的進(jìn)程。
[root@iz2ze76ybn73dvwmdij06zz ~]# ps
PID TTY TIME CMD
10102 pts/0 00:00:00 bash
10131 pts/0 00:00:00 ps
38.實(shí)時(shí)監(jiān)測(cè)進(jìn)程
與ps相比,top可以實(shí)時(shí)監(jiān)控進(jìn)程信息。
平均負(fù)載有3個(gè)值:最近1分鐘的、最近5分鐘的和最近15分鐘的平均負(fù)載。值越大說(shuō)明系統(tǒng) 的負(fù)載越高。由于進(jìn)程短期的突發(fā)性活動(dòng),出現(xiàn)最近1分鐘的高負(fù)載值也很常見(jiàn),但如果近15分 鐘內(nèi)的平均負(fù)載都很高,就說(shuō)明系統(tǒng)可能有問(wèn)題。
39.如何中斷一個(gè)進(jìn)程?
在一個(gè)終端中, Ctrl + c
通過(guò)這個(gè)命令許多(不是全部)命令行程序都可以被中斷。
40.如何把一個(gè)進(jìn)程放到后臺(tái)運(yùn)行?
[root@iz2ze76ybn73dvwmdij06zz ~]# ./sleep.sh &
此時(shí),進(jìn)程并不能被Ctrl + c 中斷。
41.如何停止一個(gè)進(jìn)程?
kill命令被用來(lái)給程序發(fā)送信號(hào)。如果沒(méi)有指定信號(hào),默認(rèn)發(fā)送TERM(終止)信號(hào)。
語(yǔ)法 : kill [-signal] PID …
42.驗(yàn)證網(wǎng)絡(luò)可鏈接命令是什么?什么原理?
ping。這個(gè) ping 命令發(fā)送一個(gè)特殊的網(wǎng)絡(luò)數(shù)據(jù)包(叫做 IMCP ECHO REQUEST)到一臺(tái)指定的主機(jī)。大多數(shù)接收這個(gè)包的網(wǎng)絡(luò)設(shè)備將會(huì)回復(fù)它,來(lái)允許網(wǎng)絡(luò)連接驗(yàn)證。
一旦啟動(dòng),ping會(huì)持續(xù)在特定時(shí)間(默認(rèn)1秒)發(fā)送數(shù)據(jù)包。
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
參數(shù)說(shuō)明:
- -t (tcp) 僅顯示tcp相關(guān)選項(xiàng)
- -u (udp)僅顯示udp相關(guān)選項(xiàng)
- -n 拒絕顯示別名,能顯示數(shù)字的全部轉(zhuǎn)化為數(shù)字
- -l 僅列出在Listen(監(jiān)聽(tīng))的服務(wù)狀態(tài)
- -p 顯示建立相關(guān)鏈接的程序名
44.如何查找匹配的文件?基于文件屬性?
find 程序能基于各種各樣的屬性,搜索一個(gè)給 定目錄(以及它的子目錄),來(lái)查找文件。
find 命令的最簡(jiǎn)單使用是,搜索一個(gè)或多個(gè)目錄。
普通查找,按照name查找:
[root@iz2ze76ybn73dvwmdij06zz ~]# find -name xiaoka
./xiaoka
文件類型查找:
比如,輸出我們的家目錄文件數(shù)量
[root@iz2ze76ybn73dvwmdij06zz ~]# find ~|wc -l
17130
根據(jù)文件類型查:
[root@iz2ze76ybn73dvwmdij06zz ~]# find ~ -type d | wc -l
7340
find支持的類型: b 塊設(shè)備文件、 c 字符設(shè)備文件、d 目錄、f 普通文件、l 符號(hào)鏈接
45.如何查看當(dāng)前主機(jī)名?如何修改?如何重啟后生效?
[root@iz2ze76ybn73dvwmdij06zz ~]# hostname//查看當(dāng)前主機(jī)名
iz2ze76ybn73dvwmdij06zz
[root@iz2ze76ybn73dvwmdij06zz ~]# hostname xiaoka//修改當(dāng)前主機(jī)名
[root@iz2ze76ybn73dvwmdij06zz ~]# hostname
xiaoka
大家知道一般來(lái)講命令重啟就會(huì)失效,目前基本上用的centos7的比較多,兩種方式可以支持重啟生效。
一、命令
[root@iz2ze76ybn73dvwmdij06zz ~]# hostnamectl set-hostname xiaoka
[root@iz2ze76ybn73dvwmdij06zz ~]# hostname
xiaoka
[root@xiaoka ~]#
二、修改配置文件:/etc/hostname
[root@xiaoka ~]# vim /etc/hostname
46.如何寫(xiě)一條規(guī)則,拒絕某個(gè)ip訪問(wèn)本機(jī)8080端口?
iptables -I INPUT -s ip -p tcp —dport 8080 -j REJECT
47.哪個(gè)文件包含了主機(jī)名和ip的映射關(guān)系?
/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中內(nèi)容:
? 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行倒數(shù)第3個(gè)字段?
? 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.”
參考:
《鳥(niǎo)哥Linux私房菜》
《快樂(lè)的命令行》
《Linux命令行與shell腳本編程大全(第3版)》
《Linux從入門(mén)到精通》
百度百科
? 公眾號(hào):《馬里奧玩Python》
新人博主求3連??????。
文章持續(xù)更新中,??。另外 博主整理 + 原創(chuàng) 15萬(wàn)字面試題,包括17個(gè)專題。歡迎大家關(guān)注“Java小咖秀”回復(fù)“面試”即可獲得Java小咖秀面試筆記.pdf