基礎測試
1. 筆試部分
(1) 超級用戶(管理員用戶)提示符是 #,普通用戶提示符是 $。
(2) 如何快速返回上一次所在的目錄?cd –
(3) GNU、GPL是什么?
1. GPL中文名為通用公共許可,保證任何人有共享和修改自由軟件的自由,
任何人有權取得、修改和重新發布自由軟件源代碼的權利,但都必須同時給出具體更改的源代碼。
2. GNU is not unix 這個項目的目標是建立一套完全自由的和可移植的類 UNIX 操作系統。
(4)linux關機重啟的命令有哪些 ?
1. 關機 : shutdown -h now | init 0 | poweroff
2. 重啟 : shutdown -r now | init 6 | reboot
(5)linux系統中包含了域名與IP地址的映射關系的文件是哪個? /etc/hosts
(6)在Linux系統中,用來存放系統需要的配置文件目錄是? /etc
(7)請問執行完以下命令,當前目錄全路徑是 /application/nginx/html/blog/
[root@iZ23eyxc0p2Z conf]# pwd
/application/nginx/conf
[root@iZ23eyxc0p2Z conf]# cd …/html/blog/
[root@iZ23eyxc0p2Z blog]#
(8)什么是絕對路徑,什么是相對路徑?
一切從根開始的路徑為絕對路徑
一切不是以根開始的路徑為相對路徑
(9)請用一條命令完成創建目錄/oldboy/test/,即創建/oldboy目錄及/oldboy/test/目錄mkdir -p /oldboy/test/
(10)使用rpm命令查看是否安裝tree命令rpm -q tree
(11)安裝httpd這個服務yum install httpd -y
(12)查看httpd這個軟件包里面的內容。
rpm -ql httpd
(13)查看httpd這個軟件包里面的內容。
rpm -ql http
(14)刪除系統中sl這個命令
rpm -e sl
yum remove sl
(15)將你的光驅設備掛在到/data目錄上mount /dev/cdrom /data
(16)查看當前目錄(只一層目錄)下txt結尾及log結尾的文件ls *txt *log
(17)查找/etc/目錄下,所有.conf后綴的文件,並將其屬性信息顯示出來。
find /etc/ -type f -name "*.conf" | xargs ls -ali
(18)把/data 目錄復制到 /tmp 目錄下並改名為data_20180120 (20180120為當天時間)
cp -r /data /tmp/data_$(date +%F)
(19)當用戶使用rm命令刪除文件或目錄時候只提示 “rm command is not allowed to use”
alias rm='echo rm command is not allowed to use'
/etc/profile
(20)Linux系統有幾個運行級別,都有什么,是什么意思?
Init 0 關機
Init 1 單用戶模式 救援模式
Init 2 多用戶模式無NFS
Init 3 完全多用戶模式
Init 4 保留
Init 5 圖形化
Init 6 重啟
(21)簡述buffer和cache
Buffer 寫緩沖 數據→內存→磁盤
Cache 讀緩存 讀取 ←內存← 磁盤
(22)設定開機時自動掛載文件系統的文件是 /etc/fstab
(23)tar zcfP yum.tar.gz /var/cache/yum 解壓:
tar xfP yum.tar.gz
(24)把mysql-5.6.34.tar.gz 壓縮包直接解壓到/application目錄下
tar xf mysql-5.6.34.tar.gz -C /application
(25)如何查看是否開啟22 端口,及查看sshd 進程是否存在?
telnet ip 22
netstat –lntup|grep 22
(26)將/data 目錄下所有7 天以前,以log結尾並且大於1M 的文件移動到/tmp 目錄下(三種方法)
find /data -type f -mtime +7 -name "*log" -size +1M |xargs -i mv {} /tmp
find /data -type f -mtime +7 -name "*log" -size +1M |xargs mv -t /tmp
find /data -type f -mtime +7 -name "*log" -size +1M -exec mv {} /tmp \;
mv `find /data -type f -mtime +7 -name "*log" -size +1M` /tmp
(26) 開機流程
第一步:開啟開機按鈕,計算機加載BIOS自檢。
第二步:讀取MBR信息。MBR全稱為Master Boot Record(MBR里面存放了系統 預啟動信息、分區表信息及分區標志等。)
第三步:加載Grub菜單(Boot Loader,引導加載程序)。(為最終調用操作 系統內核做好准備)
第四步:加載kernel內核以及驅動程序。
第五步:啟動init進程,讀取inittab文件。(init進程對應進程號永遠是1 相當於是所有Linux進程的祖先。)
第六步:init進程執行rc.sysinit初始化系統。
第七步:init進程加載內核相關模塊。
第八步:init進程執行對應運行級別下的腳本。
第九步:加載/etc/rc.local(開機自啟動)
第十步:啟動mingetty,進入登錄前的狀態。
(27) linux 下面ping www.baidu.com 出現unknown host 錯誤如何排查?
3.主機無法訪問外網
a 檢查配置地址是否正確
b 檢查是否能訪問網關 ping 網關
c 檢查是否可以訪問外網IP地址 223.5.5.5 114.114.114.114
ping通:無法打開頁面,DNS有問題
ping不通:路由配置問題
(28) 三種方法取IP地址
hostname -I | awk '{print $1}'
ifconfig eth0 | awk 'NR==2{print $2}'
ifconfig eth0 | grep 'inet '|awk '{print $2}'
ifconfig eth0|sed -rn 's#^.*inet (.*) net.*$#\1#gp'
ifconfig eth0|sed -n '2p'|sed 's#^.*inet ##g'|sed 's# net.*$##g'
awk -F "=" '$1~/IPADDR/{print $2}' /etc/sysconfig/network-scripts/ifcfg-eth0
(29)把nginx.conf.default文件中的空行和帶#的行去掉,其余內容放入nginx.conf文件
egrep -v "^$|#" nginx.conf.default > nginx.conf
(30)添加一個用戶mysql,禁止登陸並且不創建家目錄
useradd mysql -M -s /sbin/nologin
或者 ``useradd -r mysql -s /sbin/nologin (-r 創建的用戶uid<1000)
(31)讓系統中某個服務開機自動運行有哪些方法?systemctl enable httpd
(32)把 mysql安裝目錄/application/mysql-5.6.34及其下面的內容授權給mysql用戶和mysql組chown -R mysql.mysql /application/mysql-5.6.34
(33)寫一個定時任務,每天晚上12點將/var/log/nginx目錄下7天以前大於1G的日志文件移動到/data/201705xx(以前一天日期命名的)目錄中
#第一步: 編寫腳本文件
vim /server/scripts/backup.sh
#!/bin/bash
Dir=$(date +%Y%m%d -d -1day)
mkdir -p /data/$Dir
find /var/log/nginx -type f -size +1k -mtime +7|xargs mv -i {} /data/$Dir
#第二步: 編寫定時任務0 0 * * * /bin/sh /server/scripts/backup.sh &>/dev/null
(34)根據access.log日志文件對用戶IP地址進行去重處理並顯示重復數量
awk '{print $1}' access.log |sort |uniq -c
(35)刪除每行開頭的所有空白字符
sed --ir ‘s#^\s+##g’ filename
(36)不打開文件把文件的第10到20行注釋
sed -i '10,20s/^/#/g' filename
(37)系統新添加一塊3TB磁盤,要正常使用它需要做哪些操作,寫出詳細步驟
gdisk
gdisk -l #查看磁盤分區
gdisk /dev/sdx #分區
n 添加分區(p主分區 e擴展分區 l邏輯分區) p打印分區 d刪除分區 w保存退出 q不保存退出
mkfs.xfs /dev/sdx #格式化分區
mount /dev/sdx /mnt #掛載分區
df -h #查看掛載分區信息
(38)創建linux分區時,一定要創建哪兩個分區? / /boot或swap
(39)查看當前系統每個IP的連接數
netstat -ant |grep -v "::" |awk -F "[ :]+" '{print $6}' |sort |uniq -c
(40)如何查看主機的路由表規則信息route -n
(41)找出系統中大於50k 且小於100k 的文件,把文件中的oldboy刪除
sed -i 's#oldboy##g' | find / -type f -size +50k -size -100k
(42)局域網的網絡地址192.168.1.0/24, 局域網絡連接其他網絡的網關地址是192.168.1.1 主機192.168.1.20訪問172.16.1.0/24網絡時,其路由設置為
route add -net 223.5.5.0/24 gw 10.0.0.254 dev eth0
ip route add 172.16.1.0/24 via 192.168.1.1 dev eth0
(43)不顯示test.txt文件中的空行或以#開頭的行(3種方法)
egrep -v "^$|^#" test.txt
sed -r '/^$|^#/d' test.txt
awk '!/^$|^#/' test.txt
sed -n '/^$|^#/!p' test.txt
(44)調試系統服務時,希望能實時查看系統日志/var/log/messages的更新如何做?tail -f /var/log/messages
(45)寫出至少10個vim快捷鍵及含義
gg 將光標移動到文件第一行
G 將光標移動到文件最后一行
dd 刪除光標所在的行
yy 復制光標所在的當前行
p 粘貼當前光標下一行
x 刪除后一個字符
r 替換光標后一個字符
u 撤銷此次編輯
:wq 保存退出(或:x危險少用)
:q! 強制退出
:/name\c 模糊查找 n下翻
:%s###g 替換
i 進入編輯模式
ctrl + v 塊模式 批量注釋
shift + v 行模式
(46)寫出至少5個Linux快捷鍵及含義
Ctrl + l 清屏
ctrl + d 退登錄
ctrl + a #光標移動至行首
ctrl + e #光標移動行尾
ctrl + w #刪除光標前的單詞
ctrl + 光標 #按單詞間移動
47)請給出如下格式的date命令 年月日_小時_周幾
date +%Y%m%d_%H_%w
(48)用戶信息文件etc/passwd由 ‘:’ 為分割符, 分為7個字段,其中每個字段分別代表的含義是
第1列 第2列 第3列 第4列 第5列 第6列 第7列
root :x :0 :0 :root :/root :/bin/bash
用戶名 :賬號密碼 :用戶UID :用戶GID :用戶說明 用戶說明注釋信息 :用戶家目錄信息:shell命令解釋器
(49)調換/etc/passwd第一列和最后一列內容(不用修改文件內容)
awk -F ":" '{print $NF,$2,$3,$4,$5,$6,$10,OFS=":"}' /etc/passwd
#OFS 輸出域分隔符
(50)只查詢/etc/passwd 文件中的第 5 到15行(請用三種方法實現)
sed -n '5,15p' /etc/passwd
awk 'NR==5,NR==15' /etc/passwd
head -15 /etc/passwd|tail -11
(51)查詢/etc/passwd文件內容包含root關鍵字的行(要求三種方法)
grep ‘root‘ /etc/passwd
sed -n '/root/p' /etc/passwd
awk '/root/' /etc/passwd
(52)編輯/etc/passwd文件,把所有的字符串/sbin/nologin替換成/bin/bash(請使用sed命令)
sed 's#/sbin/nologin#/bin/bash#g' /etc/passwd
(53)打印配置文件/etc/passwd內容的行號及內容,該如何做?(兩種方法)
cat -n /etc/passwd
grep -n . /etc/passwd
(54)添加一個UID是888的虛擬用戶mysql寫出命令
useradd -u 888 -r mysql
useradd -u 888 -s /sbin/nologin -M mysql
(55)給文件oldboy.txt設置權限為600chmod 600 oldboy.txt
(56)命令ls –l顯示文件詳細屬性包含了什么具體信息
-rw-r--r-- 1 root root 50 Nov 12 12:40 1.txt
文件類型 權限 硬鏈接數 用戶 組 文件大小 修改時間
給oldboy用戶授權以root用戶執行ls,touch,vim三個命令,給出授權的語句
visudo
oldboy ALL=(ALL) /usr/bin/ls,/usr/bin/touch,/usr/bin/vim
(57)Linux服務器無法上網了,寫出常見原因(至少3條)
物理鏈路不通
服務器路由表配置錯誤
network服務沒啟動
防火牆沒關
(58)oldboy用戶無法在/etc/目錄創建或刪除文件,什么原因?
oldboy``用戶對``/etc/``目錄沒有寫權限
(59)批量添加stu01…stu10 10個用戶並設置密碼為123456
echo stu{01..10}|xargs -n1|sed -r 's#.*#useradd & \&\& echo 123456 |passwd --stdin &#g'|bash
(60)闡述軟硬鏈接的區別?
如何創建
默認不帶參數情況下``,ln``命令創建的是硬鏈接,加參數``-s``的``ln``命令創建的是軟連接
軟鏈接,硬鏈接的區別:
1.1 具有相同Inode節點號的多個文件互為硬鏈接文件,本質上是相同文件的不同文件名。只有刪除了源文件及與源文件對應的所有硬鏈接文件,文件實體才會被刪除。
1.2 而軟鏈接文件則相當於Windows下面的快捷方式(Inode節點號與源文件不同)
2)答特點,具體又可分為以下幾點來說明。
a)不能對目錄創建硬鏈接,但可以創建軟鏈接,對目錄的軟鏈接會經常用到。
b)軟鏈接可以跨文件系統,硬鏈接不可以跨文件系統。
c)刪除軟鏈接文件,對源文件及硬鏈接文件無任何影響。
d)刪除文件的硬鏈接文件,對源文件及軟鏈接文件無任何影響。
e)刪除鏈接文件的源文件,對硬鏈接文件無影響,會導致其軟鏈接失效(紅底白字閃爍狀)。
f)同時刪除源文件及其硬鏈接文件,整個文件才會被“真正”的刪除
61)
inode 索引節點 包含了文件的所有屬性和磁盤的索引位置指針
block: block是真正存儲數據的地方。block是文件系統中的最小存儲單位,扇區是磁盤中的最小存儲單位。
1.block是用來存儲實際數據用的,例如:照片、視頻等普通文件數據。
2.inode就是用來存儲這些數據屬性信息的,inode包含的屬性信息還包含指向文件實體的指針
但是,inode唯獨不包含文件名
(62)闡述普通用戶如何獲取root用戶的能力(至少3種方法)
- 利用su -命令切換用戶獲取root用戶權限
- 利用sudo方式獲取root命令權限
- 直接修改文件權限信息,獲取root能力
- 利用suid獲取root用戶能力
(63)重新向:
&> 標准輸出與錯誤輸出合並重定向
&>> 追加 標准輸出與錯誤輸出合並重定向
< << 標准輸入重定向 追加
> >> 標准輸出重定向 追加
2> 2>> 標准錯誤輸出重定向 追加
(64)tcp協議定義
tcp傳輸控制協議是一種面向連接的、可靠的、基於字節流的傳輸層通信協議,
TCP在適應支持多網絡應用的分層協議層次結構。
連接到不同但互連的計算機通信網絡的主計算機中的成對進程之間依靠TCP提供可靠的通信服務
(65)網絡協議概念
網絡協議為計算機網絡中進行數據交換而建立的規則、標准或約定的集合。
端口:端口便是計算機與外部通信的途徑
IP地址:是IP協議提供的一種統一的地址格式,它為互聯網上的每一個網絡和每一台主機分配一個邏輯地址,以此來屏蔽物理地址的差異。
進程的定義
運行的程序。觸發任何一個事件時,系統都會將他定義成為一個進程,並且給予這個進程一個 ID ,稱為 PID,同時依據啟發這個進程的用戶與相關屬性關系,給予這個 PID 一組有效的權限設定。
(66)七層網絡模型:
四層網絡模型:
對比:
(67)三次握手
客戶端向服務端發送建立的請求的信息
SYW=1 seq=10000
服務端確認收到並回復信息
SYN=1 seq=20000
ACK=1 ack=10001
客戶端收到回復服務端信息
ACK=1 ack=20001
雙方建立連接成功
四次揮手
客戶端想和服務端斷開連接發送請求信息
FIN=1,seq=25368
服務端回復客戶端請求並發送回復信息
ACK=1 ack=25369
服務端向客戶端發送可以斷開的請求信息
FIN=1 seq=10568
客戶端回復請求可以斷開
ACK=1 ack=10659
四次揮手結束,成功斷開
2. 重點錯誤糾正
date命令:
%H : 小時(00-23)
%M : 分鍾(00-59)
%S : 秒(00-60)
%T : 直接顯示時間 (24 小時制)
==========================================================
%Y : 完整年份 (0000-9999)
%m : 月份 (01-12)
%d : 日 (01-31)
%F :直接顯示完整年月日
==========================================================
特殊符號:
符號 | 作用 |
---|---|
* | 匹配任意(0個或多個)字符,包括空字符串常用 |
? | 只匹配任意一個字符,有且只有一個,幾乎不用 |
[abcd] | 匹配其中任意一個字符 |
[a-z] | 匹配其中任意一個字符 [1-9] |
[!abcd] | 匹配其中的單個字符 取反 正則: [^abcd] |
~ | 用戶家目錄 |
. | 代表當前目錄 |
單引號('') | 所見即所得,被''的內容不會發生變化 |
雙引號("") | 會解析變量或命令,在輸出,和不加引號相同"" 表示一個整體 |
反引號(``) | 引用命令,可以解析命令,相當於$() |
> | 標准輸出 |
2> | 標准錯誤輸出 |
; | 表示一個命令的結束 |
# | 注釋 |
$ | 1.字符串前加$ ,代表字符串變量內容 2. 普通用戶提示符 |
\ | 逃脫符 |
{} | 1.生成序列2.變量中表示分割作用 |
^ | 以..開頭的行 |
---|---|
$ | 以..結尾的行 |
. | 任意一個字符 |
* | 前一個字符出現0次或0次以上 |
.* | 表示所有字符 貪婪性 |
[abc] | 表示一個整體,匹配a或b或c |
[^abc] | 表示一個整體,匹配除了a,除了b,除了c,除了abc 都匹配 |
^.* | 任意開頭 |
.*$ | 任意結尾 |
ERE 121 | 說明 |
---|---|
| | 或者 |
+ | 前一個字符連續出現(重復)1次或1次以上, +一般與[]搭配 |
() | 表示一個整體,sed一般用於后向引用 |
[: /]+ | 匹配括號內的 :或 / 一次到多次 |
{n,m} 前一個字符連續出現至少n次最多m次{n} 前一個字符連續出現n次{n,} 前一個字符連續出現至少n次{,m} 前一個字符連續出現最多m次 |