linux運維(五)

             頭有點大,也浪費了一些時間。明天事後緩衝一下php

一、存儲過程與觸發器的區別?html

答:(1)觸發器主要是經過事件執行觸發而被執行的,而存儲過程能夠經過存儲過程名稱而直接調用。(call/execute)前端

(2)觸發器是一種特殊的存儲過程,在表中進行insert、update、delete等DML語句時,數據庫服務器就會自動執行觸發器所定義的SQL語句mysql

(3)觸發器沒有參數,而存儲過程有參數。linux

(4)觸發器最好不要返回數據,而存儲過程能夠返回數據ios


二、netfilter和iptables的區別?web

答:(1)iptables是應用程序,它定義了一些規則,而netfilter是框架。面試

(2)iptables工做在用戶空間,而netfilter工做在內核空間。sql

(3)netfilter是用來實現linux內核防火牆中的內核空間程序代碼段,它要麼被直接編譯進內核,要麼包含在模塊中;而iptables是用來管理Netfilter防火牆的用戶程序。數據庫


三、TCP報文格式字段,擁塞控制跟流量控制有何區別?(區別很差說,有點難,即便之前整理過的)

答:序列號、確認號、6個標誌字段(FIN/ACK/RST/SYN/URG/PSH)、源端口號、目的端口號、校驗和、數據偏移、窗口、緊急指針。

區別:(1)擁塞控制就是防止過多的數據注入到網絡中引發鏈路過載,不要一會兒發成百上千個的文件。它是一個全局性的過程,涉及到全部的主機、路由器,以及與下降網絡傳輸性能有關的全部因素。

(2)流量控制指端到端通訊流量的控制,不要一會兒來個幾個G大小的大文件,對方忙過不來。流量控制所要作的就是抑制發送端發送數據的速率,以便使接收端來得及接收。


四、文件A中10條記錄,文件B有5條記錄,找出A中有但B沒有的記錄。(一時很差辦,之前好像作過)

答:cat A.txt B.txt |sort|uniq -d >chongfu.txt;cat A.txt chongfu.txt|sort |uniq -u

##思路就是先找出兩個文件中相同的記錄重定向到一個文件,再比較A文件中幹掉相同的記錄,就剩下A中惟一有的記錄。


五、用戶A想在它的linux工做站上以用戶B的身份登陸到C主機上查看D的UID是多少,怎麼作?(聽起來嚇人一跳啊)

答:只要在A主機上執行:ssh -l B C id D 或者ssh B@C id D ##C至關於主機名或IP地址,-l表明登陸log in 

 

六、不含主鍵的數據庫中出現重複行數據,如何刪除這些重複記錄?而且重複記錄保留一次。

答:select distinct * into tmp from table_name;  ##distinct去會去掉重複行,而且只保留一次。

drop table table_name; ##刪除原來的表

select * into table_name from tmp; ##將不含重複的臨時表插入到原來的新表中;

drop table tmp;刪除臨時表


七、上述問題中,若是遇到重複的行都刪除呢?只要有重複就一條都不保留

mysql> select * from t1;..

+------+------+

| id   | namw |

+------+------+

|    1 | y    |

|    2 | h    |

|    2 | h    |

|    3 | h    |

|    3 | h    |

|    3 | h    |

+------+------+

答:思路就是group by,having count(*)>1的話,放入到一個臨時表中;而後用exists比較兩個表,刪除原來基表相同的記錄,返

mysql> create table tmp as select * from t1 group by id,name having count(*)>1;##在這裏重複行只出現一次在tmp表中。

mysql> select * from tmp;

+------+------+

| id   | namw |

+------+------+

|    2 | h    |

|    3 | h    |

mysql> select * from t1 where exists (select * from tmp where tmp.id=t1.id and tmp.namw=t1.namw);#從t1表返回重複行

+------+------+

| id   | namw |

+------+------+

|    2 | h    |

|    2 | h    |

|    3 | h    |

|    3 | h    |

|    3 | h    |

+------+------+

mysql> delete from t1 where exists (select * from tmp where tmp.id=t1.id and tmp.namw=t1.namw)

##只把select換成delete便可。

mysql> select * from t1;

+------+------+

| id   | namw |

+------+------+

|    1 | y    |

+------+------+


八、一臺linux主機由兩塊網卡eth0、eth1,IP分別爲192.168.1.1和10.0.0.1,如何讓這臺服務器做爲網關或者說代理服務器讓內部的人能夠上網?

答:(1)linux主機上:echo 1>/proc/sys/net/ipv4/ip_forward=1   ##開啓路由管道

(2)iptables -t nat -A POSTROUTING -o eth1 -j MASQURADE  ##出口IP是動態的

iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -o eth1 -j SNAT --to 10.0.0.1 ##出口IP是靜態的

service iptables save

(3)在客戶端的瀏覽器中設置代理便可訪問Internet。


九、A公司內部的用戶反映不能接收來自某新客戶公司的郵件,A公司使用本身的Sendmail郵件服務器,你以爲是什麼出了問題?

答:(1)當sendmail從任意MTA收到一封郵件時,首先檢查收信地址.若是」@」後面的部分和本機文件/etc/mail/local-host-names裏本地域的主機名匹配,則嘗試將其做爲本地郵件保存,無匹配項時則嘗試將該郵件轉發給外部MTA。主要用來防止垃圾郵件中的,好比公司只想接收或轉發來自本地192.168.1.0/24的郵件,應該在文件中添加以下一行:192.168.1 RELAY

(2)/etc/mail/access.db是訪問權限的數據文件,能夠經過makemap命令將文本文件/etc/mail/access轉換生成

(3)/etc/aliases用來實現郵件用戶的別名(由於郵箱帳號記錄不方便),創建公司的郵件列表,郵件服務器的轉發;newaliases 用來從新加載文件, 讓sendmail讀取該文件中的內容

綜上分析,是/etc/mail/access出了問題,能夠改成From:root@B OK ##OK是制約關鍵字,相似的還有RELAY、REJECT、DISGARD


十、內鏈接有哪幾種?有何區別?

答:等值鏈接:返回兩個表中符合「=」條件的全部數據,而且包括重複列。

非等值鏈接:返回兩個表中符合"<>"條件的全部數據。

天然鏈接:在等值鏈接的基礎上,去掉重複列便可。


十一、存在表T(a,b,c,d),要根據字段c排序後取第21—30條記錄顯示,請給出sql?

答:select * from T order by c limit 20,10   ##初始記錄行的偏移量是 0,20表明第21行起,我要連續記錄10行,才能知足30行


十二、MySQL中InnoDB引擎的行鎖是經過加在什麼上完成?(套路有點不一樣啊)

答:索引值。innodb表數據是索引組織表形式存放,可是對索引頁加鎖,採用位圖方式實現。鎖:提供共享資源的併發訪問,保證數據的完整性、一致性;InnoDB與myisam的緩存機制不一樣,InnoDB既緩存數據塊,又緩存索引值。


1三、如何對linux分區?

答:假設硬盤8GB,我設置虛擬機的物理內存512MB(對於字符界面夠了,對於x_windows圖形界面不夠用,可是能夠隨時調),真實機的物理內存是固定的(除非使用PAE地址擴展技術),/boot分區200MB,/swap分區爲1G,保證爲物理內存的2倍大小,/data分區1G,用於存放數據庫文件,/root分區2GB,大概佔總硬盤大小的25%,最後剩下的所有空間都劃分給/home分區。


1四、LAMP環境如何測試?對於Fastcgi的主機分離服務如何部署?(服務器分離是我一直想要思考的,三臺主機實驗還有點難度)

答:測試:對於apache來講,很好測試,瀏覽器頁面訪問該站點,返回我在網頁根目錄發佈的index.html的相應內容便可。很差測試的是Mysql,必需要藉助一個PHP語言寫的動態頁面,當我在前端頁面輸入數據並提交的時候,個人後臺數據庫服務器會自動添加內容,我只須要select 查詢是否有更新便可。單獨只測試PHP的話,寫一個index.php,看瀏覽器訪問能出現頁面不。

分離:httpd——php—fpm(fastcgi process manager)——mysql,都各自擁有本身的IP地址。apahce須要取消註釋mod_proxy模塊,

在虛擬主機中添加ProxyRequests Off;關閉正向代理,ProxyPassMatch ^/(.*\.php)$fcgi://192.168.1.2:9000/PATH/$1 ,

在PHP代碼中,使用$link = mysql_connect('172.16.2.6','root','magelinux');相似字段鏈接數據庫,稱爲爲ODBC。

參考文檔:http://yao3800.blog.51cto.com/1522113/1705701


1五、TCP何時會重傳?如何判斷一個TCP報文是重傳報文呢?(這題拿來面試的話又要刷一批人啊)

答:(1)數據包傳輸過程當中丟失;

(2)服務端收到了客戶端的數據報文,可是不予響應,即不發送ACK;

(3)服務端響應過程的途中由於各類緣由致使ACK報文丟失了。

判斷:重傳報文通常具備如下兩個特徵:一是TCP交互序列號忽然降低(由於序列號原本是遞增的,要重傳之前的報文固然得降低),二是在TCP報頭中的序列號、數據長度、應用數據等參數跟前面的某些TCP報文一致。

機制:發送方發送一個或連續好幾個帶有序列號的報文,在規定的計時器時間內,收到接收方的確認,再繼續發送接下來的內容,不然,重傳。

重傳次數;cat /proc/sys/net/ipv4/tcy_synack_retries默認5次,若是次數到了,那麼服務器會發送RESET表示重置終止該鏈接。

重傳時間:好比windows第一次重傳3秒,第二次重傳前的計時器等待時間是第二次的2倍,linux不知道


1六、有一個web服務,怎麼監控它在提供服務?

答:(1)寫一個腳本,每隔5分鐘去ping它,測試這臺主機的網絡連通性,不然郵件報警

(2)在該腳本中,每隔1分鐘用curl命令-I參數去測試,再使用awk命令過濾出200 OK字段,不然,郵件報警

(3)另外一方面,那些監控工具如nagios很強大,不能提供服務它也會短信和郵件報警的。


1七、微信發一個小視頻,使用哪一種協議?解釋緣由?(若是不提早思考,說緣由還有點難)

答:毫無懷疑是UDP。緣由:(1)UDP封裝上層應用數據,添加的控制信息較爲少,也不須要創建三次握手,直接交付給網絡層處理,延遲那就小了點。另外,咱們知道這些語音和視頻流量對延遲和抖動要求比較高

(2)。。。(應該還有,待續想)


1八、有一個文件裏面包含許多單詞,單詞之間以空白分隔,找出單詞'Linux'的前一個單詞,或者後一個單詞?(竟然這麼問,真難,仍是網友厲害!)

echo "centos linuxcast redhat" >1.txt

答:前一個單詞:cat 1.txt |tr " " "\n"|awk '/linux/{print VAR}{VAR=$0}'  ### 利用變量VAR保存關鍵字所在行的上一行

當前行:cat 1.txt |tr " " "\n"|awk '/linux/{print $RS}‘ ##RS是當前行的內容

後一個單詞:cat 1.txt |tr " " "\n"| awk '{if(A)print; A=0} /linux/{A=1}' ##找到linux關鍵字後,構造下一行的輸出條件。



1九、有一些冷熱數據,對這些很冷的的數據,忽然之間有不少用戶訪問,怎麼提升磁盤的I/O能力(有點難哦)

答:(1)使用固態硬盤作RAID5陣列。

(2)從業務上減少某個時間段的訪問量


20、如何查看linux的網卡流量,是字節仍是比特?用什麼查看網卡信息,網卡信息包括什麼,以及配置文件在哪?(常考)

答:字節。 ethtool命令查看網卡信息,包括千兆仍是百兆,雙工仍是半雙工,自協商與否,接口的型號,

(1)sar -n DEV [刷新延遲] [刷新次數] ;(2)iptraf界面,若是說屏幕過小,須要按F11鍵


2一、socket鏈接和http鏈接的區別。(這是真難了)

答:(1)Socket自己並非協議,而是一個調用接口(API),套接字位於應用層與傳輸層之間的抽象層;http是應用層的無狀態協議,用TCP來封裝http報文。

(2)socket有IP地址和端口號組成,它是一種編程技術,提供網絡通訊的能力。http用來規定如何來傳輸一些諸如ASIII或者二進制類型的數據



2二、路由器和交換機的區別?(放到linux運維這兒,是由於可能會涉及很淺的網絡知識)   

答:(1)路由器工做在網絡才呢過,交換機工做在數據鏈路層。(固然這裏默認交換機是二層的)

(2)自己的工做機制不一樣。路由器拆開三層包頭的IP地址,通過查路由表進行路由選擇和存儲轉發。而交換機是拆開幀頭查看目的MAC地址,若是MAC地址表有緩存記錄則轉發,不然廣播出去。

(3)路由器劃分廣播域和衝突域,交換機只劃分衝突域,但不劃分廣播域。

(4)從端口密度來講,路由器端口不多,交換機一般有1六、24個不等。

(5)從通訊範圍來講,路由器是讓不一樣網段進行通訊的,而交換機是讓本地網段通訊的。


2三、網站響應太慢,如何排錯?(這種題是重點,重複了不少次)

答:首先判斷是一我的的問題仍是大面積的問題。本身要去測試下,看ping服務器的丟包率狀況如何。

(1)用戶帶寬問題(2)服務器CPU利用率太高(3)DNS解析慢(4)網站出口帶寬問題

(5)客戶瀏覽器前端設計問題(6)網頁代碼質量問題(7)服務器遭遇***


2四、如何讓192.168.10.6 ping通172.16.100.6呢?(之前還真是覺得不可能,看了馬哥運維,真是顛覆了)

答:在172.16.100.6這臺主機上設置iptable -t nat -A POSTROUTING -s 192.168.10.0/24 -j snat --to-source 172.16.100.6便可。


2五、用什麼工具或命令查看、測試系統的性能?(這個問題值得好好整理一下)

答:(1)磁盤性能:sysbench、iostat、iotop

(2)網絡性能:ethtool、sar命令。ping連通性、traceroute測路徑故障

(3)內存和swap狀況:vmstat 刷新延遲 刷新次數、free -m,以及文件/proc/meminfo

(4)進程狀況:top、ps、pstree;線程狀況:htop、ps -T

(5)端口狀況:netstat

(6)負載狀況:uptime、top

(7)CPU狀況:sar命令、top命令,以及文件/proc/cpuinfo

(8)日誌狀況:Awstats 、last命令,以及一些文件如系統日誌、服務日誌、安全日誌

(9)磁盤狀況:df -h和fisk -l

(10)併發處理能力:ab、httperf

相關文章
相關標籤/搜索