第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
對不起,密碼不匹配