1. 程式人生 > >Linux系統運維常見面試簡答題(一)(15題)

Linux系統運維常見面試簡答題(一)(15題)

數據庫 route add 書寫 iptable sync 語句 日誌 mas ech

1、請描述下linux 系統的開機啟動過程
開機加電BIOS自檢———–>MBR引導———–>grub引導菜單———–>加載內核———–>啟動init進程———–>讀取inittab文件———–>啟動mingetty進程———–>登錄系統

2、權威DNS和遞歸DNS含義,智能DNS的實現原理
權威DNS是經上一級授權對域名進行解析的DNS服務器,同時它可以把解析授權轉授給其他服務器;

遞歸DNS負責接受用戶對任何域名的查詢,並返回結果給用戶,它可以緩存結果避免用戶再向上查詢;

智能DNS就是將對用戶發起的查詢進行判斷出是哪個運營商的用戶查詢,然後將請求轉發給相應的運營商IP處理,減少跨運營訪問的時間,提高訪問速度。

3、通過APACHE訪問日誌access.log統計IP和每個地址訪問的次數,列出訪問量前10名的IP地址,寫出具體命令
awk ‘{print $1}’ access.log|uniq -c|sort -rn |head -10

4、編寫腳本實現將/usr/local/test目錄下大於100K文件,將它拷貝到/tmp目錄下

1
2
3
4
5
6
7
8
9
#!/bin/bash
for file in `ls /usr/local/test`
do
if [ -f $file ];then
    if [ `ls -l $file`|awk ‘{print $5}‘ -gt 10000];then
       mv $file /tmp/
    fi
fi
done

5、將本地的80端口的請求轉發到8080端口,本機地址10.0.0.254,寫出命令
iptables -t nat -A PRETOUTING -d 10.0.0.254 -p tcp –dprot 80 -j DNAT –to-destination 10.0.0.254:8080

6、如何實現nginx代理的節點訪問日誌記錄的是真實訪客的IP,不是代理的IP
配置nginx.conf配置文件增加下同的標記內容

1
2
3
4
5
6
7
8
server{
                   listen 80;
                   server_name blog.text.com;
                   location / {
                   proxy_pass http://test_servers;
                   proxy_set_header Host $host;
                   proxy_set_headerX-Forwarded-For $remote_addr;
            }

修改完成後,重新加載nginx即可:/application/nginx/sbin/nginx -s reload

7、MYSQL 一主多從,主庫宕機,如何合理切換到從庫,其它從庫如何處理?
1)登陸所有從庫查看post信息,使用POST最大的做為新的主庫,然後將從為提升為新的主庫,登陸從庫(新的主庫)執行stop slave,
2)修改my.cnf配置文件,開啟log-bin並重新啟動數據庫服務,登陸數據庫執行restet master ,show master status\G;查看主庫信息,最後創建授權同步用戶與權限和網站使用數據庫的用戶與權限,同步所有機器的/etc/hosts文件(這時就體現了之前全網用域名則不是用IP的作用了,不然還得修改網站程序切換到新主庫服務器IP上,否則無法連接到數據庫);
3)登陸其它從庫,執行change master操作,查看同步狀態。

8、誤操作drop語句導致數據庫數據破壞,請給出恢復的實際大體步驟
所有數據恢復的基礎都在於備份,必須要有完整的備份,否則恢復無從談起,誤操作導致的數據庫破壞需要使用增量恢復的方法進行恢復數據庫,具體步驟如下:

1)查看備份與binlog文件

2)刷新並備份binlog文件
mysqladmin -uroot -pmysql123 -S /data/mysql.sockflush-logs

3)將binlog文件恢復成sql語句
mysqlbinlog –no-defaults mysql-bin.000061 mysql-bin.000062 >bin.sql

4)將其中誤操作的語句刪除(就是drop的動作)

5)解壓全備文件,恢復全備文件
gzip -d mysql_backup_2016-10-12.sql.gz
mysql -uroot -pmysql123 -S/data/3306/mysql.sock < mysql_backup_2016-10-12.sql
如果有對表的操作,恢復數據時需要接表名

6)恢復誤操作前的binlog文件記錄的sql語句
mysql -uroot -pmysql123 -S/data/3306/mysql.sock < bin.sql
最後登陸數據庫,查看數據是否恢復成功,如果有確定的誤操作時間,就直接恢復這段時間的數據即可。

9、列舉一個實際生產的例子,網站訪問速度慢是因為數據庫訪問慢導致的

問題情況描述:
突然有一天,有同事反應,網站訪問速度很慢,有時候會出現打不開網站的情況,刷新等待好長時間後又正常打開。

解決步驟:
登陸數據庫執行show full processlist 看到有很多相同的查詢動作且征對同一張表,因此確定網站打不開的原因是這個,故將此IP禁止訪問。日常工作中避免此類問題發生解決方法如下:可以將數據庫讀寫分離;安裝數據緩存服務器,盡量將大部分的請求不直接對接數據庫。

10、一個shell 腳本手工可以執行,放入定時任務後不能執行,可能的原因?
手工可以執行,表明腳本本身不存在邏輯上的問題,可能原因有以下幾點
1)定時任務書寫有錯誤導致,執行的腳本沒有寫絕對路徑,找不到腳本
2)環境變量問題導致。

11、利用shell開發rsync服務啟動、停止腳本,並通過chkconfig 進行開關機管理

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
[[email protected] download]# vi RSstart.sh
#!/bin/sh
##create by mingongge at 2017-01-10
. /etc/init.d/functions
case "$1" in
start)
      rsync --daemon
      if [ $? -eq 0 ];then
        action "rsync is started" /bin/true
     else
        action "rsync is started" /bin/false
     fi
;;
stop)
     pkill rsync
     sleep 2
     if [ `ps -ef|grep rsync|grep -v grep |wc -l` -eq 0 ];then
         action "rsync is stoped " /bin/true
     else
         action "rsync is stoped " /bin/false
     fi
;;
restart)
    pkill rsync
    sleep 2     
    if [ `ps -ef|grep rsync|grep -v grep |wc -l` -eq 0 ];then
       rsync --daemon
       if [ $? -eq 0 ];then
          action "rsync is restarted" /bin/true
       fi
    fi
;;
*)
   echo "USAGE :{start|stop|restart}"
;;
esac

“RSstart.sh” [New] 36L, 731C written
[[email protected] download]# chmod +x RSstart.sh
[[email protected] download]# sh RSstart.sh
USAGE :{start|stop|restart}
[[email protected] download]# sh RSstart.sh start
rsync is started [ OK ]
[[email protected] download]# ps -ef|grep rsync
root 1088 1 0 Jan09 ? 00:00:00 rsync –daemon
root 3527 2869 0 03:54 pts/0 00:00:00 grep rsync
[[email protected] download]# sh RSstart.sh stop
rsync is stoped [ OK ]
[[email protected] download]# ps -ef|grep rsync
root 3540 2869 0 03:54 pts/0 00:00:00 grep rsync
[[email protected] download]# sh RSstart.sh start
rsync is started [ OK ]
[[email protected] download]# sh RSstart.sh restart
rsync is restarted [ OK ]
[[email protected] download]# ps -ef|grep rsync
root 3558 1 0 03:54 ? 00:00:00 rsync –daemon
root 3564 2869 0 03:55 pts/0 00:00:00 grep rsync

配置開關機管理
然後在腳本最前面加上以下內容
# chkconfig: 2345 21 99
# description: chkconfig rsync service
具體自己測試下,也有可能這個啟動,關閉序號有沖突,需要修改。

12、請描述OSI7層模型各層名字及功能,並舉例在不同層對應的協議
第一層:物理層,利用傳輸介質為數據提供物理連接, 對應的協議:ARP
第二層:數據鏈路層:建立和管理各節點間的鏈接鏈路 對應的協議:PPTP、CDP
第三層:網絡層,是控制數據鏈路層與上傳輸層之間的信息轉發、建立與維持對應的協議:IP、路由協議
第四層:傳輸層,提供會話傳輸服務,確保數據正確傳送對應的協議:TCP UDP
第五層:會話層,提供建立會話管理,支持數據交換
第六層:表示層,處理數據(數據格式、編碼、加密等),按一定的格式傳送至會話層
第七層:應用層,為用戶提供各類應用服務(文件、打印、郵件等服務)對應協議:HTTP、FTP、SMTP、POP3

13、linux系統環境下如何查看系統運行了多長時間?

執行系統命令uptime,其中第三個字段,如下的2:32處則表示系統從上次啟動開始已運行了多長時間。
[[email protected] download]#uptime
02:05:22 up 2:32, 2 users, load average: 0.00, 0.00, 0.00

14、linux系統中添加路由的方法

主機路由
route add -host 192.168.197.100 dev eth0
網關路由
route add default gw 192.168.197.1
網絡路由
route ad -net 192.168.1.0 netmask 255.255.255.0 deveth1
route ad -net 192.168.1.0 netmask 255.255.255.0 gw192.168.197.1

15、已知test.txt文件內容如下,請取出文件的5-15行內容
[[email protected] ~]# cat test.txt
1
2
3
4
5bbb
6xxxxxxxxxxx
7123i4i44
8
9
10
11
12
13ffffff
14fffff
15bbbbbb
16
17nnnnnn

方法一:[[email protected] ~]# grep 15bbbbbb -B 10 test.txt
5bbb
6xxxxxxxxxxx
7123i4i44
8
9
10
11
12
13ffffff
14fffff
15bbbbbb

方法二:[[email protected] ~]# sed -n ‘5,15p’ test.txt
5bbb
6xxxxxxxxxxx
7123i4i44
8
9
10
11
12
13ffffff
14fffff
15bbbbbb

方法三:[[email protected]~]# awk ‘{if(NR4) print $1}’ test.txt
5bbb
6xxxxxxxxxxx
7123i4i44
8
9
10
11
12
13ffffff
14fffff
15bbbbbb

Linux系統運維常見面試簡答題(一)(15題)