Linux運維工程師面試題
一、有文件file1
1、請用shell查詢file1 裡面空行的所在行號
awk ‘{if($0~/^$/)print NR}’ file
or
grep -n ^$ file |awk ‘BEGIN{FS=”:”}{print $1}’
2、編寫ShellScript查詢file1 以abc 結尾的行
grep abc$ file1
3、打印出file1 文件第1 到第3 行
sed -n ’1,3p’ file1
head -3 file1
二、如何將本地80 端口的請求轉發到8080 端口,當前主機IP 為192.168.2.1
Iptables -A PREROUTING -d 192.168.2.1 -p tcp -m tcp –dport 80 -j DNAT -to-destination 192.168.2.1:8080
三、crontab
在11 月份內,每天的早上6 點到12 點中,每隔2 小時執行一次/usr/bin/httpd.sh 怎麼
實現
0 6-12/2 * 11 * /usr/bin/httpd.sh
四、編寫個shell 腳本將/usr/local/test 目錄下大於100K 的文件轉移到/tmp 目錄下
#!/bin/bash
for file in `ls /root`
do
if [ -f $file ]; then
if [ `ls -l $file|awk '{print $5}'` -gt 10000 ]; then
mv $file /tmp/
fi
fi
done
五、簡述raid0 raid1 raid5 三種工作模式的工作原理及特點。
RAID 0:連續以位或字節為單位分割數據,並行讀/寫於多個磁盤上,因此具有很高的數據傳輸率,但它沒有數據冗余,因此並不能算是真正的RAID 結構。RAID 0 只是單純地提高性能,並沒有為數據的可靠性提供保證,而且其中的一個磁盤失效將影響到所有數據。因此,RAID 0 不能應用於數據安全性要求高的場合。
RAID 1:它是通過磁盤數據鏡像實現數據冗余,在成對的獨立磁盤上產生互為備份的數據。當原始數據繁忙時,可直接從鏡像拷貝中讀取數據,因此RAID 1 可以提高讀取性能。RAID 1 是磁盤陣列中單位成本最高的,但提供了很高的數據安全性和可用性。當一個磁盤失效時,系統可以自動切換到鏡像磁盤上讀寫 ,而不需要重組失效的數據。簡單來說就是:鏡象結構,類似於備份模式,一個數據被復制到兩塊硬盤上。
RAID10:高可靠性與高效磁盤結構一個帶區結構加一個鏡象結構,因為兩種結構各有優缺點,因此可以相互補充。主要用於容量不大,但要求速度和差錯控制的數據庫中。
RAID5:分布式奇偶校驗的獨立磁盤結構,它的奇偶校驗碼存在於所有磁盤上,任何一個硬盤損壞,都可以根據其它硬盤上的校驗位來重建損壞的數據。支持一塊盤掉線後仍然正常運行。
六、oracle 數據庫備份方式
物理備份:開啟網絡監聽,備份數據庫文件。
RMAN 備份:通過表空間文件在RMAN 模式對ORACLE 數據備份。
七、如何查看占用端口8080 的進程
lsof -i:8080
八、請寫出apache2.X 版本的兩種工作模式,以及各自工作原理。如何查看apache 當前所支持的模塊,並且查看是工作在哪種模式下?
答案:
prefork(多進程,每個進程產生子進程)和worker(多進程,每個進程生成多個線程)
prefork 的工作原理是,控制進程在最初建立“StartServers”個子進程後,為了滿足MinSpareServers 設置的需要創建一個進程,等待一秒鐘,繼續創建兩個,再等待一秒鐘,繼續創建四個……如此按指數級增加創建的進程數,最多達到每秒32 個,直到滿足MinSpareServers 設置的值為止。這就是預派生(prefork)的由來。這種模式可以不必在請求到來時再產生新的進程,從而減小了系統開銷以增加性能。
worker 是2.0 版中全新的支持多線程和多進程混合模型的MPM。由於使用線程來處理,所以可以處理相對海量的請求,而系統資源的開銷要小於基於進程的服務器。但是,worker 也使用了多進程,每個進程又生成多個線程,以獲得基於進程服務器的穩定性。這種MPM 的工作方式將是Apache 2.0 的發展趨勢。
可以通過命令httpd -l 可以查看apache 當前的模塊,如果帶有worker.c 就是工作在worker 模式下,如果有prefork.c 就是工作在prefork.c 的模式下。
九、你使用過監控軟件嗎?說說其特點
使用nagios 對服務器進行監控,其特點可實時實現手機短信、電子郵件、MSN、飛信報警。使用cacti 對流量進行監控。
十、你對現在運維工程師的理解和以及對其工作的認識運維工程師在公司當中責任重大,需要保證時刻為公司及客戶提供最高、最快、最穩定、最安全的服務。運維工程師的一個小小的失誤,很有可能會對公司及客戶造成重大損失,因此運維工程師的工作需要嚴謹及富有創新精神。
十一、linux 下常用的DNS服務軟件是什麼,舉出幾種常用的DNS記錄,如果域名abc.com配置好了一台郵件服務器,IP 地址為202.106.0.20,我該如何做相關的解析?是否了解bind 的智能解析,如果了解請簡述一下其原理
答案:
1)常用的DNS 軟件是bind
2)A 記錄 地址記錄
MX 記錄 郵件交換記錄
CNAME 記錄 別名域記錄
3)修改abc.com 域名的配置文件,增加以下記錄
IN MX 10 mail.abc.com.
mail IN A 202.106.0.20
4)bind 根據請求解析客戶端的IP 地址,做出不同的解析,其原理是在配置文件中,設定了
view,在每個view 都有客戶端的IP 地址段,bind 服務器根據請求解析客戶端的IP 地址,
匹配不同的view,再根據該view 的配置,到相應的配置文件進行查詢,將結果返回給請求
的客戶端。
十二、通過apache 訪問日志access.log 統計IP 和每個地址訪問的次數,按訪問量列出
前10 名。
日志格式樣例如下
192.168.1.247 – - [02/Jul/2010:23:44:59 +0800] “GET / HTTP/1.1″ 200 19
答案:
cat access_log | awk ‘{print $1}’ | uniq -c|sort -rn|head -10
//這個別的方法也能統計,但有些命令是必要的 awk , sort,uniq ,主要看是否這些命令都
使用了。
十三、如何用mysql 命令進行備份和恢復?以test 庫為例,創建一個備份,並再用此備份
進行恢復。
mysqldump -u root -p test > test.sql
mysql -u root -p test < test.sql
//主要考對方msqldump > test.sql 和 mysql < test.sql
十四、你認為在系統調優方面都包括哪些工作,以linux 為例,請簡明闡述,並舉一些參數
為例。
答案:
系統調優包括內核參數優化和應用優化2 個方面,對方只要從這兩方面來說,就可以了,
盡量能有些經驗的闡述。
有個文件如下:
http://a.domain.com/1.html
http://b.domain.com/1.html
http://c.domain.com/1.html
http://a.domain.com/2.html
http://b.domain.com/2.html
http://a.domain.com/3.html
要求:得到主機名(和域名),並統計哪個網址出現的次數,並排序。可以shell 或C。
得到的結果應該是:
3 a.domain.com
2 b.domain.com
1 c.domain.com
[root@mail ~]# awk ‘BEGIN{FS=”/”}{arr[$3]++}END{for(i in arr) print
arr[i],i}’ list| sort -r 答案
3 a.domain.com
2 b.domain.com
1 c.domain.com
掛載windows 的共享目錄?
mount.cifs //IP/SHARE linux 的目錄 --verbose -o user=username <--這個用戶是
windows 下的用戶--verbose 這個參數可以不加,它是顯示過程的
例如mount.cifs //10.1.1.246/gongxiang /mnt --verbose -o user=gao
或者是mount -t cifs
umount /mnt 或umount.cifs /mnt -l <--取消掛載
圖形界面:smb://IP
A B 網絡是通的,最少列出五種傳輸文件的服務
nfs ,ftp,scp ,rsync,samba,http://
1.假設Apache 產生的日志文件名為access_log,在apache 正在運行時,執行命令mv
access_log access_log.bak,執行完後,請問新的apache 的日志會打印到哪裡,為什麼?
新的日志會打印在access_log.bak 中,因為apache 啟動時會找到access_log 文件,
隨時准備向文件中加入日志信息,
雖然此時文件被改名,但是由於服務正在運行,因為它的inode 節點的位置沒有變,程序
打開的fd 仍然會指向原來那個inode,
不會因為文件名的改變而改變。apache 會繼續向已改名的文件中追加日志,但是若重啟
apache 服務,系統會檢查access_log
文件是否存在,若不存在則創建。
2.在Shell 環境下,如何查看遠程Linux 系統運行了多少時間?
2、監控主機執行: ssh user@被監控主機ip "uptime"
這樣得到了被監控主機的uptime
3.處理以下文件內容,將域名取出並進行計數排序,如處理:
http://www.baidu.com/index.html
http://www.baidu.com/1.html
http://post.baidu.com/index.html
http://mp3.baidu.com/index.html
http://www.baidu.com/3.html
http://post.baidu.com/2.html
得到如下結果:
域名的出現的次數 域名
3 www.baidu.com
2 post.baidu.com
1 mp3.baidu.com
可以使用bash/perl/php/c 任意一種
3、[root@localhost shell]# cat file | sed -e ' s/http:\/\///' -e ' s/\/.*//' | sort |
uniq -c | sort -rn
3 www.baidu.com
2 post.baidu.com
1 mp3.baidu.com
[root@codfei4 shell]# awk -F/ '{print $3}' file |sort -r|uniq -c|awk '{print
$1"\t",$2}'
3 www.baidu.com
2 post.baidu.com
1 mp3.baidu.com
4.如果得到隨機的字串,長度和字串中出現的字符表可定義,並將字串倒序顯示,如
把0123456789 作為基准的字串字符表,產生一個6 位的字串642031,打印出的字串為
130246,可使用bash/perl/php/c 任意一種.
4、[root@localhost ~]# awk -v count=6 'BEGIN
{srand();str="0123456789";len=length(str);for(i=count;i>0;i--)
marry[i]=substr(str,int(rand()*len),1);for(i=count;i>0;i--)
printf("%c",marry[i]);printf("\n");for
(i=0;i<=count;i++) printf("%c",marry[i]);printf("\n")}'
838705
507838
5.如何查看當前Linux 系統的狀態,如CPU 使用,內存使用,負載情況等.
5、Linux 系統中“/proc”是個偽文件目錄,不占用系統空間,及時的反應出內存現在使用的
進程情況......其中許多文件都保存系統運行狀態和相關信息
對於“/proc”中文件可使用文件查看命令浏覽其內容,文件中包含系統特定信息:
cpuinfo 主機CPU 信息
filesystems 文件系統信息
meninfo 主機內存信息
version Linux 內存版本信息
diskstatus 磁盤負載情況
另外top 命令可以動態的顯示當前系統進程用戶的使用情況,而且是動態的顯示出來,尤其
是在該命令顯示出來的對上方對系統的情況進行匯總.
free 命令呢可以查看真實使用的內存 一般用free -m
使用lsof 、ps -aux 可以查看詳細的每個進程的使用狀況
dmesg 也是常用來查看系統性能的命令
#題目:有10 台被監控主機、一台監控機,在監控機上編寫腳本,一旦某台被監控機器/
分區適用率大於80%, 就發郵件報警放到crontab 裡面, 每10 分鐘檢查一次
#測試機器:虛擬機Linux as 4
#1.首先建立服務器間的信任關系。拿兩台機器做測試
本機ip:192.168.1.6
[root@codfei ~]# ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa):
/root/.ssh/id_rsa already exists.
Overwrite (y/n)? y (以為我是第2 次建立關系所以此處覆蓋原來的文件)
Enter passphrase (empty for no passphrase):(直接回車無須輸入密鑰)
Enter same passphrase again:
Your identification has been saved in /root/.ssh/id_rsa.
Your public key has been saved in /root/.ssh/id_rsa.pub.
The key fingerprint is:
04:37:13:2a:4b:10:af:c1:2b:03:3f:6b:27:ce:b9:62 root@codfei
[root@codfei ~]# cd .ssh/
[root@codfei .ssh]# ll
-rw------- 1 root root 883 Apr 25 17:51 id_rsa
-rw-r--r-- 1 root root 221 Apr 25 17:51 id_rsa.pub
-rw-r--r-- 1 root root 442 Apr 25 17:37 known_hosts
id_rsa 是密鑰文件,id_rsa.pub 是公鑰文件。
[root@codfei .ssh]# scp id_rsa.pub192.168.1.4:/root/.ssh/192.168.1.6
[email protected]'s password:
id_rsa.pub 100% 221 0.2KB/s 00:00
這裡把公鑰文件取名為本機的ip 地址就是為了以後和更多的機器建立信任關系不發生混
淆。
現在登陸到192.168.1.4 機器
[root@codfei ~]# cd .ssh/
[root@codfei .ssh]# cat 192.168.1.6 >> authorized_keys
然後回到192.168.1.6 機器直接
[root@codfei .ssh]# ssh 192.168.1.4
Last login: Wed Aug 8 12:14:42 2007 from 192.168.1.6
這樣就可以了,裡面偶爾涉及到權限問題。一般./ssh 文件夾是755 authorized_keys 為
600 或者644
####腳本如下#######################
#!/bin/bash
#SCRIPT:df_check.sh
#Writeen by codfei Mon Sep 3 07:25:28 CST 2007
#PURPOSE:This script is used to monitor for full filesystems.
#######################Begining####################
####################
FSMAX="80"
remote_user='root' #####完全可以不用root
remote_ip=(192.168.1.5 192.168.1.6 192.168.1.7 192.168.1.8 192.168.1.9
192.168.1.10 192.168.1.11 192.168.1.12 192.168.1.13 192.168.1.14 ) ---->
這裡填寫你要監控的主機ip
ip_num='0'
while [ "$ip_num" -le "$(expr ${#remote_ip[@]} - 1)" ]
do
read_num='1'
ssh "$remote_user"@"${remote_ip[$ip_num]}" df -h > /tmp/diskcheck_tmp
grep '^/dev/*' /tmp/diskcheck_tmp|awk '{print $5}'|sed 's/\%//g' >
/tmp/diskcheck_num_tmp
while [ "$read_num" -le $(wc -l < /tmp/diskcheck_num_tmp) ]
do
size=$(sed -n "$read_num"'p' /tmp/diskcheck_num_tmp)
if [ "$size" -gt "$FSMAX" ]
then
$(grep '^/dev/*' /tmp/diskcheck_tmp|sed -n $read_num'p' >
/tmp/disk_check_mail)
$(echo ${remote_ip[$ip_num]} >> /tmp/disk_check_mail)
$(mail -s "diskcheck_alert" admin < /tmp/disk_check_mail)
fi
read_num=$(expr $read_num + 1)
done
ip_num=$(expr $ip_num + 1)
done
#############over################################
################讓腳本每十分鐘執行一次#############
在cron 表中加入
0/10 * * * * /home/codfei/diskcheck.sh 2>&1
################################################
##########################
比如, ext2 文件系統, 如果異常死機,開機如何修復文件系統?
如果異常關機,比如斷電,通知機房的人開機之後,
我們需要遠程修復、檢查文件系統
除了/分區之外, 其他的分區:
umount /home
fsck -y /home
/ 分區需要開機之後, 由機房的人來掃描
隨後我們再登錄並掃描/home 等其他分區
如何查看一個進程所使用的文件句柄?
看這裡面 /proc/進程號/fd/
的個數就行了
簡單的比如如何查看apache 進程數
[root@localhost fd]# ps -ef|grep httpd|wc -l
1
如何統計apache 的每秒訪問數?
tail access_log | awk '{print $1,$4}'
[root@localhost logs]# grep -c `date -d '3 second ago' +%T` access_log
0
################################################
1、/proc/sys 子目錄的作用
該子目錄的作用是報告各種不同的內核參數,並讓您能交互地更改其中的某些。與 /proc
中所有其他文件不同,該目錄中的某些文件可以寫入,不過這僅針對 root。
其中的目錄以及文件的詳細列表將占據過多的篇幅,而且該目錄的內容是依賴於系統的,而
大部分的文件也僅僅對某些特殊的應用程序有用。然而,以下是該子目錄的兩個最常見的用
途:
允許路由:即便是 Mandrakelinux 默認的內核也是允許路由的,您必需顯式允許它這麼
做。為此,您只要以 root 身份鍵入以下命令:
$ echo 1 >/proc/sys/net/ipv4/ip_forward
如果您要禁用路由,請將上述命令中的 1 改為 0。
阻止 IP 欺騙:IP 欺騙會讓人認為某個來自於外部的某個數據包是來自於它到達的那個接
口。這一技術常被駭客(cracker)所使用。您可以讓內核阻止這種入侵。請鍵入:
$ echo 1 >/proc/sys/net/ipv4/conf/all/rp_filter
這樣,這種攻擊就不再可能了。
這些改變僅當系統運行時有效。在系統重新啟動之後,它們會改會它們的默認值。要在啟動
時就改動這些值,您可以將您在 shell 提示符後鍵入的命令添加到 /etc/rc.d/rc.local 中
以免每次都鍵入它們。另一個方法是修改
/etc/sysctl.conf
2、將一個文本的奇數行和偶數行合並,第2 行和第3 行合並
[root@localhost bin]# cat 1
48 Oct 3bc1997 lpas 68.00 lvx2a 138
484 Jan 380sdf1 usp 78.00 deiv 344
483 nov 7pl1998 usp 37.00 kvm9d 644
320 aug der9393 psh 83.00 wiel 293
231 jul sdf9dsf sdfs 99.00 werl 223
230 nov 19dfd9d abd 87.00 sdiv 230
219 sept 5ap1996 usp 65.00 lvx2c 189
216 Sept 3zl1998 usp 86.00 kvm9e 234
[root@localhost bin]# sed '$!N;s/\n/ /g' 1
48 Oct 3bc1997 lpas 68.00 lvx2a 138 484 Jan 380sdf1 usp 78.00 deiv 344
483 nov 7pl1998 usp 37.00 kvm9d 644 320 aug der9393 psh 83.00 wiel 293
231 jul sdf9dsf sdfs 99.00 werl 223 230 nov 19dfd9d abd 87.00 sdiv 230
219 sept 5ap1996 usp 65.00 lvx2c 189 216 Sept 3zl1998 usp 86.00 kvm9e 234
[root@localhost bin]# sed -n -e 2p -e 3p 1|sed '$!N;s/\n/ /'
484 Jan 380sdf1 usp 78.00 deiv 344 483 nov 7pl1998 usp 37.00 kvm9d 644
3、read 命令5 秒後自動退出
[root@localhost bin]# read -t 5
4、自動ftp 上傳
#!/bin/sh
ftp -n<<END_FTP
open 192.168.1.4
user codfei duibuqi //用戶名codfei 密碼duibuqi
binary
prompt off //關閉提示
mput test //上傳test
close
bye
END_FTP
自動ssh 登陸 從A 到B 然後再到c
#!/usr/bin/expect -f
set timeout 30
spawn ssh codfei@B
expect "password:"
send "pppppp\r"
expect "]*"
send "ssh codfei@C\r"
expect "password:"
send "pppppp\r"
interact
5、#打印第一個域
[root@localhost bin]# cat 3
eqeqedadasdD
eqeqdadfdfDD
fdsfdsfQWEDD
DSADASDSADSA
[root@localhost bin]#
[root@localhost bin]#
[root@localhost bin]# awk -F "" '{print $1}' 3
e
e
f
D
6、實現字符串翻轉
[root@localhost bin]# cat 8
qweqewqedadaddas
[root@localhost bin]# rev 8
saddadadeqweqewq
########################################第2 次電面
7、sed awk grep 哪個最好
我答的是 哪個掌握的精通,都很好,但是還是問我哪個最好,我只能說awk 了,對於行操
作和列操作都可以操作的很好。
8、grep -E -P 是什麼意思
我說的是-E, --extended-regexp 采用規則表示式去解釋樣式。 -P 不太清楚
9、請介紹一下你對運維這個工作的理解,和應該具備的素質。
shell 腳本編程部分:
1.從a.log 文件中提取包含“WARNING”或”FATAL”,同時不包含“IGNOR”的行,然後,
提取以“:”分割的第五個字段?
2.添加一個新組為class01,然後,添加屬於這個組的30 個用戶,用戶名的形式為stdXX,
其中,XX 從01 到30?
3.在每個月的第一天備份並壓縮/etc 目錄下的所有內容,存放在/root/backup 目錄裡,
且文件名為如下形式yymmdd_etc,yy 為年,mm為月,dd 為日。shell 程序fileback
存放在/usr/bin 目錄下?
4.用shell 編程,判斷一文件是不是字符設備文件,如果是將其拷貝到/dev 目錄下?
參考答案:
#!/bin/bash
directory=/dev
for file in anaconda-ks.cfg install.log install.log.syslog
do
if [ -f $file ]
then
cp $file $directory/$file.bak
echo " HI, $LOGNAME $file is backed up already in $directory !!"
fi
done
5.某系統管理員需要每天做一定的重復工作,編制一個解決方案:
(1).從下午4:50 刪除/abc 目錄下的全部子目錄和全部文件;
(2).從早上8:00~下午6:00 每小時讀取/xyz 目錄下x1 文件中每行第一個域的全部數
據加入到/backup 目錄下的back01.txt 文件內;
(3).每逢周一下午5:50 將/data 目錄下的所有目錄和文件歸檔並壓縮為文件
backup.tar.gz;
(4).在下午5:55 將IDE 接口的CD-ROM 缷載(假設CD-ROM 的設備名為hdc);
(5).在早上8:00 前開機後啟動。
---------------------------------------
------------------
1、簡述Apache 兩種工作模式,以及它們之間的區別。
答案:最主要的兩種模式是prefork 模式與worker 模式。prefork 每個子進程只有一個線
程,效率高但消耗內存大,是unix 下默認的模式;worker 模式每個子進程有多個線程,
內存消耗低,但一個線程崩潰會牽連其它同子進程的線程。
2、用iptables 添加一個規則允許192.168.0.123 訪問本機3306 端口
iptables -I INPUT 1 -p tcp -m tcp --dport 3306 -s 192.168.0.123 -j ACCEPT
3、如何對一台Linux 服務器進行系統性能調優,列舉出參數。
4、DNS 服務器的工作原理。
5、修改第一塊網卡的路徑是什麼。
/etc/sysconfig/network-scripts/ifcfg-eth0
7、使用shell,建立class1 用戶組,再批量建立stu1--stu30 的用戶,並指定用戶組為
class1。
vi autoaddusr
#!/usr/bin/php -q
<?php
exec("groupadd class1");
for($i=1; $i<=30; $i++){
exec("useradd -G class1 stu".$i);
}
?>
chmod +x autoaddusr
./autoaddusr
8、個人對該工作的未來如何規劃,需要加強哪些能力。
首先,我有一顆真誠的心,遇事沉著冷靜,不急不躁;
其次,我有相應的專業知識和工作經驗。一年多的系統管理經歷鍛煉了我在這個行業的業務
能力,並對行業前景和發展動態有相應的了解;
最後,我會用踏實的作風在今後的工作中證明我自己的能力!
9、日常監控都需要監控哪些?
1)硬件:
CPU:/proc/cpuinfo
內存:/proc/meminfo
硬盤:fdisk -l
2)系統:
負載:/proc/loadavg
uptime 查看實時load average、swap
虛擬內存:vmstat(參數-s;2 4)
SUID,用戶,進程
系統日志:tail -f /var/log/messages
logwatch --print --range Today --service SSHD --service pam_unix
3)網絡:Host_Alive,Ping,端口,連接
1.如何將本地80 端口的請求轉發到8080 端口,當前主機IP 為192.168.16.1,其中本地
網卡eth0:
答:
#iptables -t nat -A PREROUTING -d 192.168.16.1 -p tcp --dport 80 -j DNAT --to
192.168.16.1:8080
或者:
#iptables -t nat -A PREROUTING -i eth0 -d 192.168.16.1 -p tcp -m tcp --dport
80 -j REDIRECT --to-ports 8080
2.什麼是NAT,常見分為那幾種,DNAT 與SNAT 有什麼不同,應用事例有那些?
3.包過濾防火牆與代理應用防火牆有什麼區別,能列舉幾種相應的產品嗎?
4.iptables 是否支持time 時間控制用戶行為,如有請寫出具體操作步驟
5.說出你知道的幾種linux/unix 發行版本
6.列出linux 常見打包工具並寫相應解壓縮參數(至少三種)
7.計劃每星期天早8 點服務器定時重啟,如何實現?
8.列出作為完整郵件系統的軟件,至少二類
9,當用戶在浏覽器當中輸入一個網g 站,說說計算機對dns 解釋經過那些流程?注:本機
跟本地dns 還沒有緩存。
答: a.用戶輸入網址到浏覽器
b.浏覽器發出DNS 請求信息
c.計算機首先查詢本機HOST 文件,看是否存在,存在直接返回結果,不存在,繼續下一
步
d.計算機按照本地DNS 的順序,向合法dns 服務器查詢IP 結果,
e.合法dns 返回dns 結果給本地dns,本地dns 並緩存本結果,直到TTL 過期,才再次
查詢此結果
f.返回IP 結果給浏覽器
g.浏覽器根據IP 信息,獲取頁面
10,我們都知道,dns 既采用了tcp 協議,又采用了udp 協議,什麼時候采用tcp 協議?
什麼時候采用udp 協議?為什麼要這麼設計?
答:這個題需要理解的東西比較的多,分一下幾個方面
a,從數據包大小上分:UDP 的最大包長度是65507 個字節,響應dns 查詢的時候數據包
長度超過512 個字節,而返回的只要前512 個字節,這時名字解釋器通常使用TCP 從發
原來的請求。
b,從協議本身來分:大部分的情況下使用UDP 協議,大家都知道UDP 協議是一種不可靠
的協議,dns 不像其它的使用UDP 的Internet 應用 (如:TFTP,BOOTP 和SNMP 等),
大部分集中在局域網,dns 查詢和響應需要經過廣域網,分組丟失和往返時間的不確定性在
廣域網比局域網上更大,這就要求dns 客戶端需要好的重傳和超時算法,這時候使用TCP
11,一個EXT3 的文件分區,當使用touch test.file 命令創建一個新文件時報錯,報錯的
信息是提示磁盤已滿,但是采用df -h 命令查看磁盤大小時,只使用了,60%的磁盤空間,
為什麼會出現這個情況,說說你的理由。
答:兩種情況,一種是磁盤配額問題,另外一種就是EXT3 文件系統的設計不適合很多小
文件跟大文件的一種文件格式,出現很多小文件時,容易導致inode 耗盡了。
12,我們都知道FTP 協議有兩種工作模式,說說它們的大概的一個工作流程?
FTP 兩種工作模式:主動模式(Active FTP)和被動模式(Passive FTP)
在主動模式下,FTP 客戶端隨機開啟一個大於1024 的端口N 向服務器的21 號端口發起
連接,然後開放N+1 號端口進行監聽,並向服務器發出PORT N+1 命令。
服務器接收到命令後,會用其本地的FTP 數據端口(通常是20)來連接客戶端指定的端口
N+1,進行數據傳輸。
在被動模式下,FTP 客戶端隨機開啟一個大於1024 的端口N 向服務器的21 號端口發起
連接,同時會開啟N+1 號端口。然後向服務器發送PASV 命令,通知服務器自己處於被動
模式。服務器收到命令後,會開放一個大於1024 的端口P 進行監聽,然後用PORT P 命
令通知客戶端,自己的數據端口是P。客戶端收到命令後,會通過
N+1 號端口連接服務器的端口P,然後在兩個端口之間進行數據傳輸。
總的來說,主動模式的FTP 是指服務器主動連接客戶端的數據端口,被動模式的FTP 是指
服務器被動地等待客戶端連接自己的數據端口。
被動模式的FTP 通常用在處於防火牆之後的FTP 客戶訪問外界FTp 服務器的情況,因為在
這種情況下,防火牆通常配置為不允許外界訪問防火牆之
後主機,而只允許由防火牆之後的主機發起的連接請求通過。
因此,在這種情況下不能使用主動模式的FTP 傳輸,而被動模式的FTP 可以良好的工作。
13.編寫個shell 腳本將當前目錄下大於10K 的文件轉移到/tmp 目錄下
#/bin/sh
#Programm :
# Using for move currently directory to /tmp
for FileName in `ls -l |awk '$5>10240 {print $9}'`
do
mv $FileName /tmp
done
ls -al /tmp
echo "Done! "
14.apache 有幾種工作模式,分別介紹下其特點,並說明什麼情況下采用不同的工作模
式?
apache 主要有兩種工作模式:prefork(apache 的默認安裝模式)和worker(可以在編譯
的時候加參數--with-mpm-worker 選擇工作模式)
prefork 的特點是:(預派生)
1.這種模式可以不必在請求到來時再產生新的進程,從而減小了系統開銷
2.可以防止意外的內存洩漏
3.在服務器負載下降的時候會自動減少子進程數
worker 的特點是:支持混合的多線程多進程的多路處理模塊
如果對於一個高流量的HTTP 服務器,worker MPM 是一個比較好的選擇,因為worker
MPM 占用的內存要比prefork 要小。
15.名詞解釋 HDLC,VTP,OSPF,RIP,DDOS,system
V,GNU,netscreen,ssh,smartd,apache,WAIT_TIME 等等
16.編寫shell 腳本獲取本機的網絡地址。比如:本機的ip 地址是:
192.168.100.2/255.255.255.0,那麼它的網絡地址是
192.168.100.1/255.255.255.0
方法一:
1. #!/bin/bash
2. #This script print ip and network
3. file="/etc/sysconfig/network-scripts/ifcfg-eth0"
4. if [ -f $file ] ;then
5. IP=`grep "IPADDR" $file|awk -F"=" '{ print $2 }'`
6. MASK=`grep "NETMASK" $file|awk -F"=" '{ print $2 }'`
7. echo "$IP/$MASK"
8. exit 1
9. fi
方法二:
1. #!/bin/bash
2. #This programm will printf ip/network
3. #
4. IP=`ifconfig eth0 |grep 'inet ' |sed 's/^.*addr://g'|sed 's/ Bcast.*$//g'`
5. NETMASK=`ifconfig eth0 |grep 'inet '|sed 's/^.*Mask://g'`
6. echo "$IP/$NETMASK"
7. exit