第1章 階段總結
1.1 一、請詳細描述linux系統從開啟主機電源到進入登入介面整個過程的流程。
BIOS開機自檢 mbr引導 grub選單 載入核心 init程式 /etc/inittab /etc/rc.d/rc.sysinit /etc/re.d/rc 啟動mingetty程式 登入介面
1.2 二、我想在/data/oldboyedu目錄下面建立 一個oldboy.txt檔案
[root@oldboyedu ~]# cd /data/oldboyedu
-bash: cd: /data/oldboyedu: No such file or directory
1.為何出現這樣的錯誤
這個目錄不存在
2.如何解決這個錯誤呢?
建立目錄
給出命令:mkdir -p /data/oldboyedu
1.3 三、接上題,向oldboy.txt加入內容 “I love studying Linux.” (不少於2種方法)
方法1
vi或vim修改
方法2
echo ` I love studying Linux.` >/data/oldboyedu/oldboy.txt
1.3.1 說說這些特殊符號含義: > >> 2> 2>> #(井號) .(點) ..(兩個點) ~ * $ |
轉義字元 撬棍 脫掉馬甲打回原形(或類似含義) > 重定向符號 先清空檔案內容,然後追加內容(或類似含義) >> 追加重定向 追加到檔案結尾(或類似含義) 2> 錯誤輸出重定向 2>> 錯誤輸出追加重定向 # 井號 註釋或root使用者命令提示符或sed分隔符(sed `s###g`) . 當前目錄 或 正則任何一個字元 或 用於生效 . /etc/profile === source /etc/profile #這個可以不講解 .. 當前目錄的上級目錄 ~ 當前使用者家目錄或awk中表示匹配(awk `$1~/oldboy/` xxx)#這個可以不講解 * 所有字元或任意字元或正規表示式表示前一個字元連續出現0次或0次以上 $ 取變數內容 或 正則以...結尾 | 管道 或 正則表示或者
1.4 test.txt內容為:
trainning
fanbingbing
lidao
1.4.1 四、請給出輸出test.txt檔案內容時,不包含trainning字串的命令。
方法1
grep -v `trainning` test.txt #不加引號也行
方法2
tail -2 test.txt
方法3
sed `/trainning/d` test.txt
方法4
awk `!/trainning/` test.txt
方法5
grep `^[^t]` test.txt
1.5 五、入職新公司,老大讓你在伺服器上限制rm命令,當使用者輸入rm 命令時候提示”rm command is not allowed to use.” 請問實現的步驟是?。
1)命令列測試 alias rm=`echo command is not allowd to use` 2)永久生效 寫入/etc/profile 3)生效 source /etc/profile
1.6 六、取出檔案ett.txt 的第30到40行的內容。
注:ett.txt由seq 20 120>ett.txt建立
方法1
sed -n `30,40p` ett.txt
方法2
awk `NR==30,NR==40` ett.txt
方法3
head -40 ett.txt|tail -11
方法4
awk `NR>=30&&NR<=40` ett.txt
1.7 七、
通過修改檔案( /etc/fstab或fstab ),可以設定開機時自動掛載檔案系統。
1.8 八、
在linux系統中,當LAN(區域網)內沒有條件記案例DNS伺服器,但又想讓區域網內的使用者可以使用計算機名互相訪問時,應配置( /etc/hosts)檔案(請寫全路徑)
1.9 九、
linux系統啟動載入完成後,核心將啟動名為(init)的程式,這也是引導過程完成後,核心執行的第一個程式。我們可以修改預設的啟動級別為( 3),使得系統重啟後自動採用命令列模式登入。
1.10 十、說出下面幾個檔案的作用
/var/log/messages 系統預設日誌(系統日誌也行) /var/log/secure 系統安全日誌或使用者的登入情況 /etc/hosts ip地址與主機名(域名)對應關係 或 用於解析主機名 /etc/fstab 開機自動掛載 /var/spool/cron/root 定時任務配置檔案 /etc/rc.local 開機自啟動配置
1.11 十一、統計/var/log下檔案個數
ls /var/log|wc -l
find /var/log|wc -l
1.12 十二、描述buffer和cache的區別
寫buffer讀cache
1.13 十三、
如何把/data目錄下所有包含oldboy的目錄(可能目錄的目錄的目錄裡還有oldboy目錄) 目錄都打包出來。要求:解壓打包後的目錄結構不能改變 。
方法1
find /data -type d -name "oldboy" |xargs tar zcf /tmp/oldboy.tar.gz
方法2
find /data -type d -name "oldboy" -exec tar zcf /tmp/oldboy.tar.gz {} ;
方法3
tar zcf /tmp/oldboy.tar.gz `find /data -type d -name "oldboy"` tar zcf /tmp/oldboy.tar.gz $(find /data -type d -name "oldboy")
1.14 十四、請列出linux下面常用的打包工具並寫出相應的壓縮解壓引數。
tar zcf 建立壓縮包 或zcvf xf 解壓 或 zxvf tf 檢視 或 ztf -C 解壓到指定目錄 --exclude 排除 --exclude-from或-X 根據檔案內容排除檔案 zip -r 壓縮目錄
1.15 十五、如何檢視是否開啟22埠,及檢視sshd程式是否存在?
檢視埠22是否開啟
ss -lntup |grep 22 netstat -lntup|grep 22 telnet ip地址 22 nc ip地址 22 nmap -p22 ip地址 lsof -i:22
檢視程式是否存在
ps -ef |grep sshd
1.16 十六、將/data目錄下的修改時間是7天以前,並且大於100k的檔案複製到/tmp目錄下。
方法1
find /data -type f -mtime +7 -size +100k -exec cp {} /tmp ;
方法2
cp ` find /data -type f -mtime +7 -size +100k ` /tmp
cp $( find /data -type f -mtime +7 -size +100k ) /tmp
方法3
find /data -type f -mtime +7 -size +100k |xargs cp -t /tmp
方法4
find /data -type f -mtime +7 -size +100k |xargs -i cp {} /tmp
1.17 十七、現將檔案b.txt中的所有123替換成def,請問如何實現?
sed `s#123#def#g` b.txt
1.18 十八、寫出redhat中,配置網路卡及dns的配置檔案是什麼?
網路卡: /etc/sysconfig/network-scripts/ifcfg-eth0
DNS: /etc/resolv.conf
1.19 十九、什麼是linux的執行級別,請描述linux的執行級別不同數字的含義?
Linux的執行級別就是linux執行狀態
0 關機 1 單使用者模式 2 多使用者模式沒有NFS 3 命令列模式 文字模式 多使用者模式 4 沒有使用 5 圖形化介面模式 桌面模式 6 重啟
1.20 二十、簡述linux無法上網的排查流程 ;
1.ping baidu.com 檢查是否能上網
2.ping 223.5.5.5 檢查是否DNS問題
3.ping 閘道器 檢查是否配置或其他問題
故障原因:
1.檢查配置檔案
2.虛擬網路編輯器
3.vmware服務
4.vmware虛擬網路卡問題
1.21 二十一、軟連線與硬連結區別
【硬連線】
硬連線指通過索引節點來進行連線。在Linux的檔案系統中,儲存在磁碟分割槽中的檔案不管是什麼型別都給它分配一個編號,稱為索引節點號(Inode Index)。在Linux中,多個檔名指向同一索引節點是存在的。一般這種連線就是硬連線。硬連線的作用是允許一個檔案擁有多個有效路徑名,這樣使用者就可以建立硬連線到重要檔案,以防止“誤刪”的功能。其原因如上所述,因為對應該目錄的索引節點有一個以上的連線。只刪除一個連線並不影響索引節點本身和其它的連線,只有當最後一個連線被刪除後,檔案的資料塊及目錄的連線才會被釋放。也就是說,檔案真正刪除的條件是與之相關的所有硬連線檔案均被刪除。
【軟連線】
另外一種連線稱之為符號連線(Symbolic Link),也叫軟連線。軟連結檔案有類似於Windows的快捷方式。它實際上是一個特殊的檔案。在符號連線中,檔案實際上是一個文字檔案,其中包含的有另一檔案的位置資訊。
1.22 二十二、刪除/etc/inittab中的空行或以#開頭的行;
方法1
egrep -v `^$|^#` /etc/inittab
方法2
sed -r `/^$|^#/d` /etc/inittab
方法3
awk `!/^$|^#/` /etc/inittab
1.23 二十三、顯示/etc/passwd中第1,3,5列
awk -F ":" `{print $1,$3,$5}` /etc/passwd
1.24 二十四、寫出你熟悉的8個VIM的快捷鍵
移動游標 ↑k ←h →l ↓j 把游標移動到檔案的第1行 gg 1G :1 把游標移動到檔案的最後一行 G :$ 把游標移動到檔案的第100行 100gg 100G :100 0(數字0) ^ 把游標移動到這一行的結尾 $ 測試檔案 cat /etc/services /etc/sysconfig/network-scripts/ifcfg-eth0 >>/tmp/vim.log 編輯(移動並編輯) 在當行下面插入一個空行並進入編輯模式 o(小寫字母o) 在當行上面插入一個空行並進入編輯模式 O(大寫字母O) 刪除游標所在位置到行尾的內容並進入編輯模式 C(大寫字母C) 刪除游標所在位置到行尾的內容 D d$ 快速到達行尾並進入編輯模式 A 複製 刪除 貼上 複製游標所在行 yy 貼上 p 多次貼上 3p 刪除/剪下 dd 刪除當前行到檔案結尾的內容 dG 其他 顯示行號 :set nu 取消顯示行號 :set nonu 查詢 /你要找的內容 預設向下搜尋 繼續向下查詢 n 繼續向上查詢 N 你要找的內容 預設向上搜尋 撤銷當前操作 u undo 恢復剛才的操作 ctrl + r vim查詢幫助 :help G :help :wq :h G nu===number
1.25 二十五、建立檔案提示no space left on device 但是df -h還有空間這是什麼原因?如何排查和解決。
inode滿了
找出系統中大於1M的目錄,確認後再刪除
1.26 二十六、通過df -h發現磁碟空間不足但是du -sh發現沒有滿,說出原因和排查解決過程。
原因:
檔案沒有徹底刪除導致的(硬連結數為0,程式呼叫數不為零)
排查:
lsof |grep delete
解決:
重啟對應的服務
1.27 二十七、顯示當前系統日期為年月日~周幾~小時
data +%F_%w_%H_%M_%S
1.28 二十八、當前目錄/etc/rc.d目錄 cd ../../../tmp 請問當前所在目錄是哪裡
/tmp
1.29 二十九、查詢出系統中大於50k且小於100k的檔案,把檔案中的oldboy替換為oldgirl。
find -type -size +50k -size -100k |xargssed -i ‘s#oldboy#oldgirl#g‘
1.30 三十、把/etc/hosts 檔案備份為hosts.bak
cp /etc/hosts /etc/hosts.bak
1.31 三十一、把/oldboy 改名為/lidao
mv /oldboy lidao
1.32 三十二、顯示/etc/services 檔案中包含3306或1521的行(三種方法)
1.32.1 方法一:grep -n
grep -n "3306|1521" /etc/services
1.32.2 方法二:egrep -n
egrep -n "3306|1521" /etc/services grep -E "3306|1521" /etc/services
1.33 三十三、如何設定grep別名,讓grep預設過濾時永久顯示顏色
alias grep=’grep --color’
把這句同時寫進/root/.bashrc裡面,並且執行一下source /root/.bashrc
1.34 三十四、查詢/oldboy 目錄下的所有檔案結尾為*.txt的檔案,並將檔案內容輸出。
方法1:
cat /oldboy/*.txt
方法2:
find /oldboy -type f -name “*.txt” | xargs cat
方法3:
find /oldboy/ -type f -name "*.txt" -exec cat {} ;
1.35 三十六、描述萬用字元與正規表示式的區別
基本上解釋就是萬用字元是系統命令使用,一般用來匹配檔名或者什麼的用在系統命令中。而正規表示式是操作字串,以行尾單位來匹配字串使用的。
還有一點需要注意的是:*在萬用字元和正規表示式中有其不一樣的地方,在萬用字元中*可以匹配任意的0個或多個字元,而在正規表示式中他是重複之前的一個或者多個字元,不能獨立使用的。比如萬用字元可以用*來匹配任意字元,而正規表示式不行,他只匹配任意長度的前面的字元。
1.36 三十七、使用ifconfig eth0 命令檢視IP地址,請寫出取出IP地址的方法,至少使用兩種方法
方法1:
ifconfig eth0 | grep “10.0.0” | awk -F “:” ‘{print $2}’ | awk -F “ ” ‘{print $1}’
方法2:
ifconfig eth0 |awk `NR==2` |awk -F"addr:|Bcast:" `{print $2}`
1.37 三十八、使用grep過濾不包含oldboy字串的行
grep -v “oldboy”
1.38 四十、已知/oldboy/test.txt 檔案內容為:
oldboy
xizi
xiaochao
請問如何把檔案中的空格過濾掉(要求命令列實現)。
egrep -v “^$” /oldboy/test.txt
第2章 錯誤總結
2.1 No such file or directory
沒有此檔案或目錄
2.2 command not found
找不到此命令
2.3 rm: cannot remove `/oldboy/data/`: Is a directory
要刪除的是個非空目錄
2.4 find: Arguments to -type should contain only one letter
查詢:-type的引數應該只包含一個字母
2.5 Firewall is not running.
防火牆沒啟動
2.6 ping: unknown host baidu.com
網不通
未知主機baidu.com
2.7 Package tree-1.5.3-3.el6.x86_64 already installed and latest version
安裝了這個軟體最新版本的包
2.8 Couldn`t resolve host www.oldboyedu.com
DNS不可達
無法解析主機www.oldboyedu.com
2.9 This account is currently not available
該帳戶目前不可用
2.10 Sorry, passwords do not match
對不起,密碼不匹配