Linux系統運維常見面試簡答題(一)(15題)
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題)