考試總結
1. 一個目錄中有很多文件(ls -l 查看時好多屏),想用一條命令最快速度查看到最近更新的文件。如何看?
答:
ls -rtl
2. 在配置apache 服務時 執行了./configure --prefix=/application/apache2.2.17 來編譯 apche,在make install 完成后,希望用戶訪問apache 路徑更簡單,需要給/application/apache2.2.17目錄做一個軟鏈接/application/apache,使得內部開發或管理人員通過/application/apache 就可以訪問到apache 的安裝目錄/application/apache2.2.17 下的內容,請你給出實現的命令。
答:
ln –s /application/apache2.2.17 /application/apache
3. 已知Nginx 服務的訪問日志按天記錄在服務器本地目錄/app/logs 下,由于磁盤空間緊張,現在要求只能保留最近 7 天的訪問日志!請問如何解決? 請給解決辦法或配置或處理命令。
答:
00 00 * * * /usr/bin/find /app/logs -type f -mtime +7 |xargs rm -f &> /dev/null
or
00 00 * * * /usr/bin/find /app/logs -type f -mtime +7 –exec rm –f {} \; &> /dev/null
or
00 00 * * * rm -f $(find /app/logs -type f -mtime +7) &> /dev/null
4. 調試系統服務時,希望能實時查看/var/log/messages 系統日志的更新,如何做?
答:
tail –f /var/log/messages
or
tail –F /var/log/messages
or
tailf /var/log/messages
5. 打印輕量級web 服務的配置文件 nginx.conf 內容的行號及內容,該如何做?
答:
cat –n nignx.conf
or
grep –n ‘.’ nginx.conf
or
awk ‘{print NR,$0}’ nginx.conf
or
vim nginx.conf ,:set nu
or
sed ‘=’ nginx.conf
or
less –N nginx.conf
6. 已知如下命令及結果:
[oldboy@test ~]$ echo "I am oldboy,my qq is 31333741">>oldboy.txt
[oldboy@test ~]$ cat oldboy.txt
I am oldboy,my qq is 31333741
現在需要從文件中過濾出“oldboy”和“31333741”字符串,請給出命令。
答:
grep –Eo ‘oldboy|31333741’ oldboy.txt
or
egrep –o ‘oldboy|31333741’ oldboy.txt
or
sed –r ‘s#am (.*),.*is (.*)#\1\2#g’ oldboy.txt
or
awk –F ‘[ ,]’ ‘{print $3,$NF}’ oldboy.txt
7. 問題:請問在一個命令上加什么參數可以實現下面命令的內容在同一行輸出。
echo "oldboy";echo "oldboy"
答:
echo –n “oldboy”;echo “oldboy”
8. 如何快速查到 ifconfig 命令的全路徑(假如你不知道其路徑),請給出命令。
答:
which ifconfig
or
whereis ifconfig
9. 查找/oldboy/目錄下所有文件,并把文件中的www.etiantian.org
字符串替換成www.oldboyedu.com
答:
find /oldboy/ -type f |xargs sed ‘s#www.etiantian.org#www.oldboyedu.com#g’
10. 過濾出/etc/services 文件包含 3306 或 1521 兩數據庫端口的行的內容。
答:
grep -E ‘3306|1521’ /etc/services
or
egrep ‘3306|1521’ /etc/services
or
sed –nr ‘/3306|1521/p’ /etc/services
or
awk ‘/3306|1521/’ /etc/services
11. 請將 ifconfig eth0 和 ip add 結果中的 eth0 網卡對應 ip 地址取出(不低于 2 種方法)。
[root@oldboyedu ~]# ifconfig eth0
eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 10.0.0.201 netmask 255.255.255.0 broadcast 10.0.0.255
inet6 fe80::9fdb:66ba:dc7f:3fe5 prefixlen 64 scopeid 0x20<link>
[root@oldboyedu ~]# ip add
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen
1000
link/ether 00:0c:29:2a:ca:54 brd ff:ff:ff:ff:ff:ff
inet 10.0.0.201/24 brd 10.0.0.255 scope global noprefixroute eth0
答:
ifconfig eth0|sed -rn 's#.*t (.*) net.*#\1#gp'
or
ifconfig eth0|awk -F'[ :]+' 'NR==2{print $3}'
or
ip addr|sed -rn 's#.*t (.*)/24.*#\1#gp'
or
ip addr|awk -F'[ /]+' 'NR==9{print $3}'
12. 如何賦予 oldboy.txt 文件如下權限、用戶、用戶組屬性。
-w--rw-rwx. 1 oldboy sa 24 Mar 13 11:46 oldboy.txt
答:
chmod 267 oldboy.txt
chown oldboy.sa oldboy.txt
or
chmod u=w g=rw o=rwx oldboy.txt
chown oldboy:sa oldboy.txt
13. 某系統管理員需每天做一定的重復工作,請按照下列要求,編寫一個解決方案,請按步驟寫清楚每一步操作:
(1)在下午 4:50 刪除/abc 目錄下的全部子目錄和全部文件。
(2)每逢星期一下午五點將/data 目錄下的所有目錄和文件歸檔并壓縮為以當天日期命名的tar.gz 結尾打包文件。
答:
(1) :
50 16 * * * /bin/rm –rf /abc/* >/dev/null 2>&1
or
腳本:
vim shanchu.sh
/bin/rm –rf /abc/* 或
#!/bin/sh
cd /abc&& rm –rf ./*
50 16 * * * /bin/sh shanchu.sh >/dev/null 2>&1
(2)
00 17 * * 1 /bin/tar zcf ./$(date +\%F).tar.gz >/dev/null 2>&1
14. 如何取得/etc/hosts 文件的權限對應的數字內容,如-rw-r--r-- 為 644,要求使用命令取得644 這樣的數字(不低于 2 種方法)。
答:
stat /etc/hosts -c %a
or
stat /etc/hosts|awk -F'[0/]' 'NR==4{print $2}'
or
stat /etc/hosts|sed -nr 's#.*\(0(.*)/-.*#\1#gp'
15. Linux 下通過 mkdir 命令創建一個新目錄/oldboy/ett,它的硬鏈接數是多少,為什么? 如果在/oldboy/ett 下面再創建一個目錄 test。再問/oldboy/ett 的硬鏈接數是多少?為什么。
答:
第一問是2個, 目錄本身是一個硬鏈接,.
也是一個
第二問是3個, 目錄本身是一個硬鏈接,.
也是一個,..
也是一個
如果在創建一個,還是3個,因為下一個目錄是它子目錄的子目錄,不是它的上級。
16.企業故障案例1:作為運維工程師,你在工作中遇到的一個實際問題,情況是:一個 lnmp 的服務器,站點目錄下所有的文件均被植入了如下內容:
<script language=javascript
src=http://%4%66E%78%6F%72%67%2E%70%6F/x.js?google_ad=93x28_ad></script>(可用 A 代替此行內容解答)
包括圖片文件也被植入了,當用戶網站打開時就會調用這個地址,顯示一個廣告,請問你如 何解決。
答:
第一步:備份站點目錄下所有文件
tar zcf ./bak_$(date +%F).tar.gz 站點目錄
第二步:查找被修改的文件
find / -type f | xargs grep 'A'
第三步:批量刪除被篡改的文件
find / -type f |xargs sed -i '/A/d'
find / -type f | xargs grep 'A'
第四步:找到文件被篡改的來源,并優化調整。
第五步:寫總結,故障報告。
17. 請輸出當前日期和時間、3 天前的日期、未來 10 天的日期。
答:
當前日期和時間:date
3 天前的日期:date +%F -d “-3 day”
未來 10 天的日期:date +%F -d “+10 day”
18. 寫出 10 個以上 Linux 命令行中特殊字符及對應含義。
答:
符號 | 作用 |
---|---|
~ | 用戶的家目錄,超級用戶為/root,普通用戶為/home |
- | 代表上一次(相當于當前路徑)用戶所在的路徑 |
. | 代表當前目錄 |
.. | 代表上一級目錄 |
單引號(' ') | 所見即所得,將單引號內的內容都原樣輸出。 |
雙引號(" ") | 先解析變量、命令、轉義字符,然后再輸出最終內容。 |
無引號 | 基本和雙引號相時同,不過還是用雙引號替代比較好。 |
反引號( ) |
一般用于引用命令,執行時命令會被執行,相當于$()。 |
標準輸入(stdin) | 代碼為0,配合<或<<使用,數據流從右向左 |
標準輸出(stdout) | 代碼為1,配合>或>>使用,數據流從左向右 |
標準錯誤輸出(stderr) | 代碼為2,配合>或>>使用,數據流從左向右 |
重定向符號,數據流是箭頭方向 | |
標準輸入重定向 | 0<或<,清空已有內容,數據一般從文件流向處理的命令 |
追加輸入重定向 | 0<<或<<,追加內容到底部,數據一般從文件流向處理的命令 |
標準輸出重定向 | 1>或>,正常輸出重定向到文件,會清空已有的內容 |
標準追加輸出重定向 | 1>>或>>,將內容追加重定向到底部,不會清空已有的內容 |
標準錯誤輸出重定向 | 2>,將標準錯誤內容重定向到文件,如果文件存在內容則清空 |
標準錯誤輸出追加重定向 | 2>>,將標準錯誤內容追加到文件底部,不會清空已有的內容 |
; | 表示一個命令的結束,也是命令間的分隔符 |
# | 1、表示注釋內容,2、root用戶的命令提示符 |
│ | 表示管道,將一個命令處理后的中間內容輸出給下一個命令繼續處理 |
$ | 1、字符串前加$符號,表示變量內容,2、普通用戶的命令提示符 |
\ | 將特殊含義的字符還原成字符本意 |
{} | 1、生產序列,2、引用變量與普通字符分隔 |
&& | 前一個命令執行成功,再執行后面一個命令 |
ll | 前一個命令執行失敗,再執行后面一個命令 |
! | 1、在Bash中表示取反,2、在vi/vim中表示強制,3、!ls表示最近一次以ls開頭的命令并運行 |
19. 請說出軟鏈接和硬鏈接的區別。
答:
1)答分類:在Linux系統中,連接分兩種:一種被稱為硬鏈接(Hard Link
),另一種被稱為軟連接(soft link
)或符號鏈接(symbolic link
)。
2)答概念:硬鏈接文件與源文件的Inode
節點號相同,而軟連接文件相當于Windows下面的快捷方式(Inode節點號與源文件不同)。
3)答創建:默認不帶參數的情況下,ln命令創建的是硬鏈接,帶-s參數的ln命令創建的是軟連接。
4)答特點:
a. 不能對目錄創建硬鏈接,但可以創建軟連接,對目錄的軟連接會經常被用到。
b. 軟連接可以跨文件系統,硬鏈接不可以跨文件系統。
c. 刪除軟鏈接,對源文件及硬鏈接文件無任何影響。
d. 刪除文件的硬鏈接,對源文件及軟鏈接文件無任何影響。
e. 刪除鏈接文件的源文件,對硬鏈接文件無影響,會導致其軟鏈接失效(紅底白字閃爍狀)。
f. 同時刪除源件及其硬鏈接文件,整個文件才會被真正的刪除。
5)答案例:硬鏈接用處不多,可以用來對重要文件做快照防止誤刪,而對目錄建立軟鏈接在工作中很常用。
20. 描述 ls -lhi 輸出中,每一列的意義。
51513324 -rw-rw-r--. 1 oldboy oldboy 11 Mar 27 18:23 test.txt
答:
51513324 -rw-rw-r-- . 1 oldboy oldboy 11 Mar 27 18:23 test.txt
inode 文件類型權限 selinux標識符 硬鏈接數 屬主 屬組 文件大小 最后修改時間 文件名
21. 什么是 PATH 環境變量,它有什么作用?
答:
PATH
是命令的搜索路徑
PATH
可以在其他子 shell
中定義命令的目錄路徑
22. 描述 Linux 下文件刪除的原理?
答:
硬鏈接數為 0 l_ink 為 0,進程數為 0 i_count 為 0,文件才被真正被刪除掉。
23. 企業故障案例2:往磁盤中寫入數據出現 no space left on device 故障,請寫出可能原因。
答:
1)inode
滿:定時任務書寫有誤,導致郵件產生大量小文件,把 inode
占用完了
2)block
滿:df –h
,du –sh
定位到大文件,并將其刪除
24. 企業故障案例3: Tomcat 服務器磁盤滿了,臨時刪除對應日志文件但是發現空間未釋放,可能原因是?如何解決)。
答:
進程占用,ps –ef|grep delete
相應的服務進程,并將其重啟即可釋放空間
25. 業故障案例4:定時任務的腳本手工可以執行,但是放到定時任務里無法執行,可能原因是什么?
答:
原因一:環境變量問題,沒有使用絕對路徑執行定時任務
原因二:定時任務寫錯了