Linux營運工程師面試題 一、有檔案file11、請用shell查詢file1 裡面空行的所在行號awk ‘{if($0~/^$/)print NR}’ fileorgrep -n ^$ file |awk ‘BEGIN{FS=”:”}{print $1}’ 2、編寫ShellScript查詢file1 以abc 結尾的行grep abc$ file1 3、列印出file1 檔案第1 到第3 行sed -n ’1,3p’ file1head -3 file1 二、如何將本地80 連接埠的請求轉寄到8080 連接埠,當前主機IP 為192.168.2.1Iptables -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/bashfor file in `ls /root`doif [ -f $file ]; thenif [ `ls -l $file|awk '{print $5}'` -gt 10000 ]; thenmv $file /tmp/fifidone 五、簡述raid0 raid1 raid5 三種工作模式的工作原理及特點。 RAID 0:連續以位或位元組為單位分割資料,並行讀/寫於多個磁碟上,因此具有很高的資料轉送率,但它沒有資料冗餘,因此並不能算是真正的RAID 結構。RAID 0 只是單純地提高效能,並沒有為資料的可靠性提供保證,而且其中的一個磁碟失效將影響到所有資料。因此,RAID 0 不能應用於資料安全性要求高的場合。 RAID 1:它是通過磁碟資料鏡像實現資料冗餘,在成對的獨立磁碟上產生互為備份的資料。當未經處理資料繁忙時,可直接從鏡像拷貝中讀取資料,因此RAID 1 可以提高讀取效能。RAID 1 是磁碟陣列中單位成本最高的,但提供了很高的資料安全性和可用性。當一個磁碟失效時,系統可以自動切換到鏡像磁碟上讀寫 ,而不需要重組失效的資料。簡單來說就是:鏡象結構,類似於備份模式,一個資料被複製到兩塊硬碟上。 RAID10:高可靠性與高效磁碟結構一個帶區結構加一個鏡象結構,因為兩種結構各有優缺點,因此可以相互補充。主要用於容量不大,但要求速度和差錯控制的資料庫中。 RAID5:分布式同位的獨立磁碟結構,它的同位碼存在於所有磁碟上,任何一個硬碟損壞,都可以根據其它硬碟上的校正位來重建損壞的資料。支援一塊盤掉線後仍然正常運行。 六、oracle Database Backup方式 物理備份:開啟網路監聽,備份資料庫檔案。 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 軟體是bind2)A 記錄 地址記錄MX 記錄 郵件交換記錄CNAME 記錄 別名域記錄3)修改abc.com 網域名稱的設定檔,增加以下記錄IN MX 10 mail.abc.com.mail IN A 202.106.0.204)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.sqlmysql -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.com2 b.domain.com1 c.domain.com[root@mail ~]# awk ‘BEGIN{FS=”/”}{arr[$3]++}END{for(i in arr) printarr[i],i}’ list| sort -r 答案3 a.domain.com2 b.domain.com1 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 cifsumount /mnt 或umount.cifs /mnt -l <--取消掛載圖形介面:smb://IPA B 網路是通的,最少列出五種傳輸檔案的服務nfs ,ftp,scp ,rsync,samba,http://1.假設Apache 產生的記錄檔名為access_log,在apache 正在運行時,執行命令mvaccess_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"這樣得到了被監控主機的uptime3.處理以下檔案內容,將網域名稱取出並進行計數排序,如處理: 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.com2 post.baidu.com1 mp3.baidu.com可以使用bash/perl/php/c 任意一種3、[root@localhost shell]# cat file | sed -e ' s/http:\/\///' -e ' s/\/.*//' | sort |uniq -c | sort -rn3 www.baidu.com2 post.baidu.com1 mp3.baidu.com[root@codfei4 shell]# awk -F/ '{print $3}' file |sort -r|uniq -c|awk '{print$1"\t",$2}'3 www.baidu.com2 post.baidu.com1 mp3.baidu.com4.如果得到隨機的字串,長度和字串中出現的字元表可定義,並將字串倒序顯示,如把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")}'8387055078385.如何查看當前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 rsaGenerating 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_hostsid_rsa 是密鑰檔案,id_rsa.pub 是公開金鑰檔案。[root@codfei .ssh]# scp id_rsa.pub192.168.1.4:/root/.ssh/192.168.1.6root@192.168.1.4'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.4Last 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' #####完全可以不用rootremote_ip=(192.168.1.5 192.168.1.6 192.168.1.7 192.168.1.8 192.168.1.9192.168.1.10 192.168.1.11 192.168.1.12 192.168.1.13 192.168.1.14 ) ---->這裡填寫你要監控的主機ipip_num='0'while [ "$ip_num" -le "$(expr ${#remote_ip[@]} - 1)" ]doread_num='1'ssh "$remote_user"@"${remote_ip[$ip_num]}" df -h > /tmp/diskcheck_tmpgrep '^/dev/*' /tmp/diskcheck_tmp|awk '{print $5}'|sed 's/\%//g' >/tmp/diskcheck_num_tmpwhile [ "$read_num" -le $(wc -l < /tmp/diskcheck_num_tmp) ]dosize=$(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)firead_num=$(expr $read_num + 1)doneip_num=$(expr $ip_num + 1)done#############over################################################讓指令碼每十分鐘執行一次#############在cron 表中加入0/10 * * * * /home/codfei/diskcheck.sh 2>&1##########################################################################比如, ext2 檔案系統, 如果異常死機,開機如何修複檔案系統?如果異常關機,比如斷電,通知機房的人開機之後,我們需要遠程修複、檢查檔案系統除了/分區之外, 其他的分區:umount /homefsck -y /home/ 分區需要開機之後, 由機房的人來掃描隨後我們再登入並掃描/home 等其他分區如何查看一個進程所使用的檔案控制代碼?看這裡面 /proc/進程號/fd/的個數就行了簡單的比如如何查看apache 進程數[root@localhost fd]# ps -ef|grep httpd|wc -l1如何統計apache 的每秒訪問數?tail access_log | awk '{print $1,$4}'[root@localhost logs]# grep -c `date -d '3 second ago' +%T` access_log0################################################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.conf2、將一個文本的奇數行和偶數行合并,第2 行和第3 行合并[root@localhost bin]# cat 148 Oct 3bc1997 lpas 68.00 lvx2a 138484 Jan 380sdf1 usp 78.00 deiv 344483 nov 7pl1998 usp 37.00 kvm9d 644320 aug der9393 psh 83.00 wiel 293231 jul sdf9dsf sdfs 99.00 werl 223230 nov 19dfd9d abd 87.00 sdiv 230219 sept 5ap1996 usp 65.00 lvx2c 189216 Sept 3zl1998 usp 86.00 kvm9e 234[root@localhost bin]# sed '$!N;s/\n/ /g' 148 Oct 3bc1997 lpas 68.00 lvx2a 138 484 Jan 380sdf1 usp 78.00 deiv 344483 nov 7pl1998 usp 37.00 kvm9d 644 320 aug der9393 psh 83.00 wiel 293231 jul sdf9dsf sdfs 99.00 werl 223 230 nov 19dfd9d abd 87.00 sdiv 230219 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 6443、read 命令5 秒後自動結束[root@localhost bin]# read -t 54、自動ftp 上傳#!/bin/shftp -n<<END_FTPopen 192.168.1.4user codfei duibuqi //使用者名稱codfei 密碼duibuqibinaryprompt off //關閉提示mput test //上傳testclosebyeEND_FTP自動ssh 登陸 從A 到B 然後再到c#!/usr/bin/expect -fset timeout 30spawn ssh codfei@Bexpect "password:"send "pppppp\r"expect "]*"send "ssh codfei@C\r"expect "password:"send "pppppp\r"interact5、#列印第一個域[root@localhost bin]# cat 3eqeqedadasdDeqeqdadfdfDDfdsfdsfQWEDDDSADASDSADSA[root@localhost bin]#[root@localhost bin]#[root@localhost bin]# awk -F "" '{print $1}' 3eefD6、實現字串翻轉[root@localhost bin]# cat 8qweqewqedadaddas[root@localhost bin]# rev 8saddadadeqweqewq########################################第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/bashdirectory=/devfor file in anaconda-ks.cfg install.log install.log.syslogdoif [ -f $file ]thencp $file $directory/$file.bakecho " HI, $LOGNAME $file is backed up already in $directory !!"fidone5.某系統管理員需要每天做一定的重複工作,編製一個解決方案:(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 ACCEPT3、如何對一台Linux 伺服器進行系統效能調優,列舉出參數。4、DNS 伺服器的工作原理。5、修改第一塊網卡的路徑是什麼。/etc/sysconfig/network-scripts/ifcfg-eth07、使用shell,建立class1 使用者組,再批量建立stu1--stu30 的使用者,並指定使用者組為class1。vi autoaddusr#!/usr/bin/php -q<?phpexec("groupadd class1");for($i=1; $i<=30; $i++){exec("useradd -G class1 stu".$i);}?>chmod +x autoaddusr./autoaddusr8、個人對該工作的未來如何規劃,需要加強哪些能力。首先,我有一顆真誠的心,遇事沉著冷靜,不急不躁;其次,我有相應的專業知識和工作經驗。一年多的系統管理經曆鍛煉了我在這個行業的業務能力,並對行業前景和發展動態有相應的瞭解;最後,我會用踏實的作風在今後的工作中證明我自己的能力!9、日常監控都需要監控哪些?1)硬體:CPU:/proc/cpuinfo記憶體:/proc/meminfo硬碟:fdisk -l2)系統:負載:/proc/loadavguptime 查看即時load average、swap虛擬記憶體:vmstat(參數-s;2 4)SUID,使用者,進程系統日誌:tail -f /var/log/messageslogwatch --print --range Today --service SSHD --service pam_unix3)網路: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 --to192.168.16.1:8080或者:#iptables -t nat -A PREROUTING -i eth0 -d 192.168.16.1 -p tcp -m tcp --dport80 -j REDIRECT --to-ports 80802.什麼是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 用戶端需要好的重傳和逾時演算法,這時候使用TCP11,一個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 /tmpfor FileName in `ls -l |awk '$5>10240 {print $9}'`domv $FileName /tmpdonels -al /tmpecho "Done! "14.apache 有幾種工作模式,分別介紹下其特點,並說明什麼情況下採用不同的工作模式?apache 主要有兩種工作模式:prefork(apache 的預設安裝模式)和worker(可以在編譯的時候加參數--with-mpm-worker 選擇工作模式)prefork 的特點是:(預派生)1.這種模式可以不必在請求到來時再產生新的進程,從而減小了系統開銷2.可以防止意外的記憶體流失3.在伺服器負載下降的時候會自動減少子進程數worker 的特點是:支援混合的多線程多進程的多路處理模組如果對於一個高流量的HTTP 伺服器,worker MPM 是一個比較好的選擇,因為workerMPM 佔用的記憶體要比prefork 要小。15.名詞解釋 HDLC,VTP,OSPF,RIP,DDOS,systemV,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/bash2. #This script print ip and network3. file="/etc/sysconfig/network-scripts/ifcfg-eth0"4. if [ -f $file ] ;then5. IP=`grep "IPADDR" $file|awk -F"=" '{ print $2 }'`6. MASK=`grep "NETMASK" $file|awk -F"=" '{ print $2 }'`7. echo "$IP/$MASK"8. exit 19. fi方法二:1. #!/bin/bash2. #This programm will printf ip/network3. #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