linux 面試題全面總結(持續更新)

1、如何看當前Linux系統有幾顆物理CPU和每顆CPU的核數?

[root@centos6 ~ 10:55 #35]# cat /proc/cpuinfo|grep -c 'physical id'

4

[root@centos6 ~ 10:56 #36]# cat /proc/cpuinfo|grep -c 'processor'

4

2、查看系統負載有兩個常用的命令,是哪兩個?這三個數值表示什麼含義呢?

[root@centos6 ~ 10:56 #37]# w

10:57:38 up 14 min,  1 user,  load average: 0.00, 0.00, 0.00

USER     TTY      FROM              LOGIN@   IDLE   JCPU   PCPU WHAT

root     pts/0    192.168.147.1    18:44    0.00s  0.10s  0.00s w

[root@centos6 ~ 10:57 #38]# uptime

10:57:47 up 14 min,  1 user,  load average: 0.00, 0.00, 0.00

其中load average即系統負載,三個數值分別表示一分鐘、五分鐘、十五分鐘內系統的平均負載,即平均任務數。

3、vmstat r, b, si, so, bi, bo 這幾列表示什麼含義呢?

[root@centos6 ~ 10:57 #39]# vmstat

procs -----------memory---------- ---swap-- -----io---- --system-- -----cpu-----

r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa st

0  0      0 1783964  13172 106056    0    0    29     7   15   11  0  0 99  0  0

r即running,表示正在跑的任務數

b即blocked,表示被阻塞的任務數

si表示有多少數據從交換分區讀入內存

so表示有多少數據從內存寫入交換分區

bi表示有多少數據從磁盤讀入內存

bo表示有多少數據從內存寫入磁盤

簡記:i --input,進入內存

o --output,從內存出去

s --swap,交換分區

b --block,塊設備,磁盤

單位都是KB

4、linux系統裏,您知道buffer和cache如何區分嗎?

buffer和cache都是內存中的一塊區域,當CPU需要寫數據到磁盤時,由於磁盤速度比較慢,所以CPU先把數據存進buffer,然後CPU去執行其他任務,buffer中的數據會定期寫入磁盤;當CPU需要從磁盤讀入數據時,由於磁盤速度比較慢,可以把即將用到的數據提前存入cache,CPU直接從Cache中拿數據要快的多。

5、使用top查看系統資源佔用情況時,哪一列表示內存佔用呢?

 PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND

301 root      20   0     0    0    0 S  0.3  0.0   0:00.08 jbd2/sda3-8

1 root      20   0  2900 1428 1216 S  0.0  0.1   0:01.28 init

2 root      20   0     0    0    0 S  0.0  0.0   0:00.00 kthreadd

3 root      RT   0     0    0    0 S  0.0  0.0   0:00.00 migration/0

VIRT虛擬內存用量

RES物理內存用量

SHR共享內存用量

%MEM內存用量

6、如何實時查看網卡流量爲多少?如何查看歷史網卡流量?

安裝sysstat包,使用sar命令查看。
yum install -y sysstat#安裝sysstat包,獲得sar命令
sar -n DEV#查看網卡流量,默認10分鐘更新一次
sar -n DEV 1 10#一秒顯示一次,一共顯示10次
sar -n DEV -f /var/log/sa/sa22#查看指定日期的流量日誌

7、如何查看當前系統都有哪些進程?

ps -aux 或者ps -elf
[root@centos6 ~ 13:20 #56]# ps -aux
Warning: bad syntax, perhaps a bogus '-'? See /usr/share/doc/procps-3.2.8/FAQ
USER       PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
root         1  0.0  0.0   2900  1428 ?        Ss   10:43   0:01 /sbin/init
root         2  0.0  0.0      0     0 ?        S    10:43   0:00 [kthreadd]
root         3  0.0  0.0      0     0 ?        S    10:43   0:00 [migration/0]
root         4  0.0  0.0      0     0 ?        S    10:43   0:00 [ksoftirqd/0]
……
[root@centos6 ~ 13:21 #57]# ps -elf
F S UID        PID  PPID  C PRI  NI ADDR SZ WCHAN  STIME TTY          TIME CMD
4 S root         1     0  0  80   0 -   725 -      10:43 ?        00:00:01 /sbin/init
1 S root         2     0  0  80   0 -     0 -      10:43 ?        00:00:00 [kthreadd]
1 S root         3     2  0 -40   - -     0 -      10:43 ?        00:00:00 [migration/0]
1 S root         4     2  0  80   0 -     0 -      10:43 ?        00:00:00 [ksoftirqd/0]
1 S root         5     2  0 -40   - -     0 -      10:43 ?        00:00:00 [migration/0]

8、ps 查看系統進程時,有一列爲STAT, 如果當前進程的stat爲Ss 表示什麼含義?如果爲Z表示什麼含義?

S表示正在休眠;s表示主進程;Z表示殭屍進程。

9、如何查看系統都開啓了哪些端口?

[root@centos6 ~ 13:20 #55]# netstat -lnp
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address               Foreign Address             State       PID/Program name

tcp        0      0 0.0.0.0:22                  0.0.0.0:*                   LISTEN      1035/sshd

tcp        0      0 :::22                       :::*                        LISTEN      1035/sshd

udp        0      0 0.0.0.0:68                  0.0.0.0:*                               931/dhclient

Active UNIX domain sockets (only servers)

Proto RefCnt Flags       Type       State         I-Node PID/Program name    Path

unix  2      [ ACC ]     STREAM     LISTENING     6825   1/init              @/com/ubuntu/upstart

unix  2      [ ACC ]     STREAM     LISTENING     8429   1003/dbus-daemon    /var/run/dbus/system_bus_socket

10、如何查看網絡連接狀況?

[root@centos6 ~ 13:22 #58]# netstat -an

Active Internet connections (servers and established)

Proto Recv-Q Send-Q Local Address               Foreign Address             State

tcp        0      0 0.0.0.0:22                  0.0.0.0:*                   LISTEN

tcp        0      0 192.168.147.130:22          192.168.147.1:23893         ESTABLISHED

tcp        0      0 :::22                       :::*                        LISTEN

udp        0      0 0.0.0.0:68                  0.0.0.0:*

11、想修改ip,需要編輯哪個配置文件,修改完配置文件後,如何重啓網卡,使配置生效?

使用vi或者vim編輯器編輯網卡配置文件/etc/sysconfig/network-scripts/ifcft-eth0(如果是eth1文件名爲ifcft-eth1),內容如下:
DEVICE=eth0
HWADDR=00:0C:29:06:37:BA
TYPE=Ethernet
UUID=0eea1820-1fe8-4a80-a6f0-39b3d314f8da
ONBOOT=yes
NM_CONTROLLED=yes
BOOTPROTO=static
IPADDR=192.168.147.130
NETMASK=255.255.255.0
GATEWAY=192.168.147.2
DNS1=192.168.147.2
DNS2=8.8.8.8
修改網卡後,可以使用命令重啓網卡:
ifdown eth0
ifup eth0
也可以重啓網絡服務:
service network restart

12、能否給一個網卡配置多個IP? 如果能,怎麼配置?

可以給一個網卡配置多個IP,配置步驟如下:
cat /etc/sysconfig/network-scripts/ifcfg-eth0#查看eth0的配置
DEVICE=eth0
HWADDR=00:0C:29:06:37:BA
TYPE=Ethernet
UUID=0eea1820-1fe8-4a80-a6f0-39b3d314f8da
ONBOOT=yes
NM_CONTROLLED=yes
BOOTPROTO=static
IPADDR=192.168.147.130
NETMASK=255.255.255.0
GATEWAY=192.168.147.2
DNS1=192.168.147.2
DNS2=8.8.8.8
(1)新建一個ifcfg-eth0:1文件
cp /etc/sysconfig/network-scripts/ifcfg-eth0 /etc/sysconfig/network-scripts/ifcfg-eth0:1
(2)修改其內容如下:vim /etc/sysconfig/network-scripts/ifcfg-eth0:1
DEVICE=eth0:1
HWADDR=00:0C:29:06:37:BA
TYPE=Ethernet
UUID=0eea1820-1fe8-4a80-a6f0-39b3d314f8da
ONBOOT=yes
NM_CONTROLLED=yes
BOOTPROTO=static
IPADDR=192.168.147.133
NETMASK=255.255.255.0
GATEWAY=192.168.147.2
DNS1=192.168.147.2
DNS2=8.8.8.8
(3)重啓網絡服務:
service network restart

13、如何查看某個網卡是否連接着交換機?

mii-tool eth0 或者 mii-tool eth1

14、如何查看當前主機的主機名,如何修改主機名?要想重啓後依舊生效,需要修改哪個配 置文件呢?

查看主機名:hostname
centos6.5
修改主機名:hostname centos6.5-1
永久生效需要修改配置文件:vim /etc/sysconfig/network
NETWORKING=yes
HOSTNAME=centos6.5-1

“`15、設置DNS需要修改哪個配置文件?““

1)在文件 /etc/resolv.conf 中設置DNS
(2)在文件 /etc/sysconfig/network-scripts/ifcfg-eth0 中設置DNS

16、使用iptables 寫一條規則:把來源IP爲192.168.1.101訪問本機80端口的包直接拒絕

iptables -I INPUT -s 192.168.1.101 -p tcp --dport 80 -j REJECT

17、要想把iptable的規則保存到一個文件中如何做?如何恢復?

使用iptables-save重定向到文件中:iptables-save > 1.ipt
使用iptables-restore反重定向回來:iptables-restore < 1.ipt

18、如何備份某個用戶的任務計劃?

將/var/spool/cron/目錄下指定用戶的任務計劃拷貝到備份目錄cron_bak/下即可
cp /var/spool/cron/rachy /tmp/bak/cron_bak/

19、任務計劃格式中,前面5個數字分表表示什麼含義?

依次表示:分、時、日、月、周

20、如何可以把系統中不用的服務關掉?

1)使用可視化工具:ntsysv

(2)使用命令:chkconfig servicename off

21、如何讓某個服務(假如服務名爲 nginx)只在3,5兩個運行級別開啓,其他級別關閉?

先關閉所有運行級別:chkconfig nginx off
然後打開35運行級別:chkconfig --level 35 nginx on

22、rsync 同步命令中,下面兩種方式有什麼不同呢?

(1) rsync -av  /dira/  ip:/dirb/

(2) rsync -av  /dira/  ip::dirb

(1)前者是通過ssh方式同步的

(2)後者是通過rsync服務的方式同步的

23、rsync 同步時,如果要同步的源中有軟連接,如何把軟連接的目標文件或者目錄同步?

同步源文件需要加-L選項

24、某個賬號登陸linux後,系統會在哪些日誌文件中記錄相關信息?

用戶身份驗證過程記錄在/var/log/secure中,登錄成功的信息記錄在/var/log/wtmp。

25、網卡或者硬盤有問題時,我們可以通過使用哪個命令查看相關信息?

使用命令dmesg

26、分別使用xargs和exec實現這樣的需求,把當前目錄下所有後綴名爲.txt的文件的權限修改爲777

(1)find ./ -type f -name "*.txt" |xargs chmod 777
(2)find ./ -type f -name "*.txt" -exec chmod 777 {} ;

27、有一個腳本運行時間可能超過2天,如何做才能使其不間斷的運行,而且還可以隨時觀察腳本運行時的輸出信息?

使用screen工具

28、在Linux系統下如何按照下面要求抓包:只過濾出訪問http服務的,目標ip爲192.168.0.111,一共抓1000個包,並且保存到1.cap文件中?

tcpdump -nn -s0 host 192.168.0.111 and port 80 -c 1000 -w 1.cap

29、rsync 同步數據時,如何過濾出所有.txt的文件不同步?

加上--exclude選項:--exclude=“*.txt”

30、rsync同步數據時,如果目標文件比源文件還新,則忽略該文件,如何做?

保留更新使用-u或者--update選項

31、想在Linux命令行下訪問某個網站,並且該網站域名還沒有解析,如何做?

在/etc/hosts文件中增加一條從該網站域名到其IP的解析記錄即可,或者使用curl -x

32、自定義解析域名的時候,我們可以編輯哪個文件?是否可以一個ip對應多個域名?是否一個域名對應多個ip?

編輯 /etc/hosts ,可以一個ip對應多個域名,不可以一個域名對多個ip

33、我們可以使用哪個命令查看系統的歷史負載(比如說兩天前的)?

sar -q -f /var/log/sa/sa22  #查看22號的系統負載

34、在Linux下如何指定dns服務器,來解析某個域名?

使用dig命令:dig @DNSip  domain.com

如:dig @8.8.8.8 www.baidu.com#使用谷歌DNS解析百度

35、使用rsync同步數據時,假如我們採用的是ssh方式,並且目標機器的sshd端口並不是默認的22端口,那我們如何做?

rsync "--rsh=ssh -p 10022"或者rsync -e "ssh -p 10022"

36、rsync同步時,如何刪除目標數據多出來的數據,即源上不存在,但目標卻存在的文件或者目錄?

加上--delete選項

37、使用free查看內存使用情況時,哪個數值表示真正可用的內存量?

free列第二行的值

38、有一天你突然發現公司網站訪問速度變的很慢很慢,你該怎麼辦呢?

(服務器可以登陸,提示:你可以從系統負載和網卡流量入手)
答:可以從兩個方面入手分析:分析系統負載,使用w命令或者uptime命令查看系統負載,如果負載很高,則使用top命令查看CPU,MEM等佔用情況,要麼是CPU繁忙,要麼是內存不夠,如果這二者都正常,再去使用sar命令分析網卡流量,分析是不是遭到了攻擊。一旦分析出問題的原因,採取對應的措施解決,如決定要不要殺死一些進程,或者禁止一些訪問等。

39、rsync使用服務模式時,如果我們指定了一個密碼文件,那麼這個密碼文件的權限應該設置成多少纔可以?

600或400

40、給您一臺最小化安裝的linux機器,如何進行基礎優化?

1)更新yum官方源
2)關閉不需要的服務
3)關閉不需要的TTY
4)對TCP/IP網絡參數進行調整
_4.1) 優化Linux下的內核TCP參數以提高系統性能
5)設置時間同步
6)優化最大文件數限制
7)關閉SELINUX
8)修改SSH登錄配置
9)清理登陸的時候顯示的系統及內核版本
10)刪除不必要的系統用戶和羣組
11)關閉重啓ctl-alt-delete組合鍵
12)設置一些全局變量
13)設置history歷史記錄
14)centos6.4最小化安裝後啓動網卡
15)添加普通用戶,設置sudo權限
16)禁止root遠程用戶登錄
17)sed修改遠程端口
18)防火牆iptables配置
19)修改默認DNS
20)安裝必要軟件,更新yum源 [epel源] 
21)更新內核和軟件到最新版本
22)去除上次登錄的信息

41、請說出內核調優配置文件名字?舉例幾個內核需要優化的參數配置?

名字:/etc/sysctl.conf
net.ipv4.tcp_tw_recycle = 1 ##表示開啓TCP連接中TIME-WAIT sockets的快速收回功能,默認爲 0 ,表示關閉。
net.ipv4.tcp_tw_reuse = 1 ##表示開啓重用。允許將TIME-WAIT sockets重新用於新的 TCP 連接,默認爲 0 表示關閉
net.ipv4.tcp_syn_retries = 6 ## 默認6   時間爲2^7-1 =127s             在內核放棄建立連接之前發送SYN 包的數量
#允許系統打開的端口範圍
net.ipv4.ip_local_port_range = 1024 65000
#最大打開文件數
fs.nr_open = 10000000  ##單個進程可分配的最大文件數
fs.file-max = 11000000  ##表示系統級別的能夠打開的文件句柄的數量。是對整個系統的限制,並不是針對用戶的

42、 問: 當你需要給命令綁定一個宏或者按鍵的時候,應該怎麼做呢?

可以使用bind命令,bind可以很方便地在shell中實現宏或按鍵的綁定。
在進行按鍵綁定的時候,我們需要先獲取到綁定按鍵對應的字符序列。
比如獲取F12的字符序列獲取方法如下:先按下Ctrl+V,然後按下F12 .我們就可以得到F12的字符序列 ^[[24~。
接着使用bind進行綁定。
[root@localhost ~]# bind ‘”\e[24~":"date"'
注意:相同的按鍵在不同的終端或終端模擬器下可能會產生不同的字符序列。
【附】也可以使用showkey -a命令查看按鍵對應的字符序列。

43、 問: 如果一個linux新手想要知道當前系統支持的所有命令的列表,他需要怎麼做

使用命令compgen ­-c,可以打印出所有支持的命令列表。
[root@localhost ~]$ compgen -c
l.
ll
ls
which
if
then
else
elif
...

44、問:如果你的助手想要打印出當前的目錄棧,你會建議他怎麼做?

使用Linux 命令dirs可以將當前的目錄棧打印出來。

[root@localhost ~]# dirs

/usr/share/X11

【附】:目錄棧通過pushd popd 來操作。

45、 問: 你的系統目前有許多正在運行的任務,在不重啓機器的條件下,有什麼方法可以把所有正在運行的進程移除呢?

使用Linux命令 ’disown -r ’可以將所有正在運行的進程移除。

46、問: bash shell 中的hash 命令有什麼作用?

linux命令’hash’管理着一個內置的哈希表,記錄了已執行過的命令的完整路徑, 用該命令可以打印出你所使用過的命令以及執行的次數。
[root@localhost ~]# hash

hits command

2 /bin/ls

2 /bin/su

47、 問:哪一個bash內置命令能夠進行數學運算。

bash shell 的內置命令let 可以進行整型數的數學運算。
#! /bin/bash
let c=a+b

48、問:怎樣一頁一頁地查看一個大文件的內容呢?

 通過管道將命令”cat file_name.txt” 和 ’more’ 連接在一起可以實現這個需要.
[root@localhost ~]# cat file_name.txt | more

49、問:數據字典屬於哪一個用戶的?

數據字典是屬於’SYS’用戶的,用戶‘SYS’ 和 ’SYSEM’是由系統默認自動創建的。

50、 問: 怎樣查看一個linux命令的概要與用法?

假設你在/bin目錄中偶然看到一個你從沒見過的的命令,怎樣才能知道它的作用和用法呢?
使用命令whatis 可以先出顯示出這個命令的用法簡要,比如,你可以使用whatis zcat 去查看‘zcat’的介紹以及使用簡要。
[root@localhost ~]# whatis zcat
zcat [gzip] (1) – compress or expand files

51、使用哪一個命令可以查看自己文件系統的磁盤空間配額呢?

使用命令repquota 能夠顯示出一個文件系統的配額信息

52、查看 http 的併發請求數與其 TCP 連接狀態

netstat -n | awk '/^tcp/ {++b[$NF]} END {for(a in b) print a, b[a]}'

53、修改系統打開最大句柄數

 ulimit -n 查看 linux 系統打開最大的文件描述符,這裏默認 1024,不修改這裏 web 服務器修改再大也沒用。
 修改/etc/security/limits.conf
* soft nofile 10240
* hard nofile 10240

54、用 tcpdump 嗅探 80 端口的訪問看看誰最高

tcpdump -i eth0 -tnn dst port 80 -c 1000 | awk -F"." '{print $1"."$2"."$3"."$4}' | sort | uniq -c | sort -nr |head -5

55、查看當前系統每個 IP 的連接數

netstat -n | awk '/^tcp/ {print $5}'| awk -F: '{print $1}' | sort | uniq -c | sort -rn

56、shell 下 32 位隨機密碼生成

cat /dev/urandom | head -1 | md5sum | head -c 32 >> /pass

57.如何查看二進制文件的內容

我們一般通過 hexdump 命令 來查看二進制文件的內容。

hexdump -C XXX(文件名)  -C 是參數 不同的參數有不同的意義

-C  是比較規範的 十六進制和 ASCII 碼顯示

-c  是單字節字符顯示

-b  單字節八進制顯示

-o  是雙字節八進制顯示

-d  是雙字節十進制顯示

-x  是雙字節十六進制顯示

等等等等

58、ps aux 中的 VSZ 代表什麼意思,RSS 代表什麼意思

VSZ:虛擬內存集,進程佔用的虛擬內存空間
RSS:物理內存集,進程戰用實際物理內存空間

59、檢測並修復/dev/hda5

fsck 用來檢查和維護不一致的文件系統。若系統掉電或磁盤發生問題,可利用 fsck 命令對文件系統進行檢查,用法:

60.Linux 系統的開機啓動順序

加載 BIOS–>讀取 MBR–>Boot Loader–>加載內核–>用戶層 init 一句 inittab 文件來設定系統運行的等級(一般 3 或者 53 是多用戶命令行,5 是界面)–>init 進程執行 rc.syninit–>啓動內核模塊–>執行不同級別運行的腳本程序–>執行/etc/rc.d/rc.local(本地運行服務)–>執行/bin/login,就可以登錄了。

61.符號鏈接與硬鏈接的區別

我們可以把符號鏈接,也就是軟連接 當做是 windows 系統裏的 快捷方式。

硬鏈接 就好像是 又複製了一份.

ln 3.txt 4.txt   這是硬鏈接,相當於複製,不可以跨分區,但修改 3,4 會跟着變,若刪除 3,4 不受任何影響。

ln -s 3.txt 4.txt  這是軟連接,相當於快捷方式。修改 4,3 也會跟着變,若刪除 3,4 就壞掉了。不可以用了。

62.保存當前磁盤分區的分區表

dd 命令是以個強大的命令,在複製的同時進行轉換
dd if=/dev/sda of=./mbr.txt bs=1 count=512

63.FTP 的主動模式和被動模式

FTP 協議有兩種工作方式:PORT 方式和 PASV 方式,中文意思爲主動式和被動式。

PORT(主動)方式的連接過程是:客戶端向服務器的 FTP 端口(默認是 21)發送連接請 求,服務器接受連接,建立一條命令鏈路。當需要傳送數據時,客戶端在命令鏈路上用 PORT 命令告訴服務器:“我打開了 XX 端口,你過來連接我”。於是服務器從 20 端口向客戶端的 XX 端口發送連接請求,建立一條數據鏈路來傳送數據。

PASV(被動)方式的連接過程是:客戶端向服務器的 FTP 端口(默認是 21)發送連接請 求,服務器接受連接,建立一條命令鏈路。當需要傳送數據時,服務器在命令鏈路上用 PASV 命令告訴客戶端:“我打開了 XX 端口,你過來連接我”。於是客戶端向服務器的 XX 端口 發送連接請求,建立一條數據鏈路來傳送數據。

從上面可以看出,兩種方式的命令鏈路連接方法是一樣的,而數據鏈路的建立方法就完 全不同。

64.怎麼把腳本添加到系統服務裏,即用 service 來調用

在腳本里加入
#!/bin/bash
# chkconfig: 345 85 15
# description: httpd

65.如何將本地80端口的請求轉發到8080端口,當前主機IP爲192.168.16.1,其中本地網卡eth0:

#iptables-tnat -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 –dport 80 -j REDIRECT –to-ports 8080

66.什麼是NAT,常見分爲那幾種,DNAT與SNAT有什麼不同,應用事例有那些?

SNAT,DNAT,MASQUERADE都是NAT。
MASQUERADE是SNAT的一個特例。

SNAT是指在數據包從網卡發送出去的時候,把數據包中的源地址部分替換爲指定的IP,這樣,接收方就認爲數據包的來源是被替換的那個IP的主機。

MASQUERADE是用發送數據的網卡上的IP來替換源IP,因此,對於那些IP不固定的場合,比如撥號網絡或者通過dhcp分配IP的情況下,就得用MASQUERADE。

DNAT,就是指數據包從網卡發送出去的時候,修改數據包中的目的IP,表現爲如果你想訪問A,可是因爲網關做了DNAT,把所有訪問A的數據包的目的IP全部修改爲B,那麼,你實際上訪問的是B

因爲,路由是按照目的地址來選擇的,因此,DNAT是在PREROUTING鏈上來進行的,而SNAT是在數據包發送出去的時候才進行,因此是在POSTROUTING鏈上進行的。

67.包過濾防火牆與代理應用防火牆有什麼區別,能列舉幾種相應的產品嗎?

包過濾防火牆是根據包頭進行的過濾,並且是處於網絡層的,根據包的源ip地址,目標ip地址,協議類型,端口號,進行過濾;代理應用防火牆工作在應用層,他使用代理服務器技術,將內網對外網的訪問,變爲防火牆對外網的訪問,可以對包的內容進行分辨,從而過濾。
代理應用防火牆:天融信GFW4000
包過濾防火牆:華爲NE 16E

68.iptables是否支持time時間控制用戶行爲,如有請寫出具體操作步驟。

支持。需要增加相關支持的內核補丁,並且要重新編譯內核。

或者使用crontab配合iptables,首先:vi /deny.bat 輸入/sbin/iptables -A OUTPUT -p tcp -s 192.168.1.0/24 --dport 80 -j DROP保存退出

打開crontab-e

輸入:00 21* * * /bin/sh /deny.bat

69.說出你知道的幾種linux/unix發行版本。

Redhat、CentOS、Fedora、SuSE、Slackware、Gentoo、Debian、Ubuntu、FreeBSD、Solaris、SCO、AIX、HP…

70.列出linux常見打包工具並寫相應解壓縮參數(至少三種)

Targz bz

Tar-xvzf gzip -d bzip2 -d

71.計劃每星期天早8點服務器定時重啓,如何實現?

Crontab-e

0008 * * 7 /sbin/init 6

72.列出作爲完整郵件系統的軟件,至少二類。

Sendmail,postfix,qmail

73.當用戶在瀏覽器當中輸入一個網站,說說計算機對dns解釋經過那些流程?注:本機跟本地dns還沒有緩存。

a.用戶輸入網址到瀏覽器;
b.瀏覽器發出DNS請求信息;
c.計算機首先查詢本機HOST文件,看是否存在,存在直接返回結果,不存在,繼續下一步;
d.計算機按照本地DNS的順序,向合法dns服務器查詢IP結果;
e.合法dns返回dns結果給本地dns,本地dns並緩存本結果,直到TTL過期,纔再次查詢此結果;
f.返回IP結果給瀏覽器;
g.瀏覽器根據IP信息,獲取頁面;

74.我們都知道,dns既採用了tcp協議,又採用了udp協議,什麼時候採用tcp協議?什麼時候採用udp協議?爲什麼要這麼設計?

這個題需要理解的東西比較的多,分一下幾個方面
a,從數據包大小上分:UDP的最大包長度是65507個字節,響應dns查詢的時候數據包長度超過512個字節,而返回的只要前512個字節,這時名字 解釋器通常使用TCP從發原來的請求。
b,從協議本身來分:大部分的情況下使用UDP協議,大家都知道UDP協議是一種不可靠的協議,dns不像其它的使用UDP的Internet應用 (如:TFTP,BOOTP和SNMP等),大部分集中在局域網,dns查詢和響應需要經過廣域網,分組丟失和往返時間的不確定性在廣域網比局域網上更大,這就要求dns客戶端需要好的重傳和超時算法,這時候使用TCP。

75.一個EXT3的文件分區,當使用touch test.file命令創建一個新文件時報錯,報錯的信息是提示磁盤已滿,但是採用df -h命令查看磁盤大小時,只使用了,60%的磁盤空間,爲什麼會出現這個情況,說說你的理由。

兩種情況,一種是磁盤配額問題,另外一種就是EXT3文件系統的設計不適合很多小文件跟大文件的一種文件格式,出現很多小文件時,容易導致inode耗盡了。

76.我們都知道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進行監聽,然後用PORTP命令通知客戶端,自己的數據端口是P。客戶端收到命令後,會通過N+1號端口連接服務器的端口P,然後在兩個端口之間進行數據傳輸。

總的來說,主動模式的FTP是指服務器主動連接客戶端的數據端口,被動模式的FTP是指服務器被動地等待客戶端連接自己的數據端口。
被動模式的FTP通常用在處於防火牆之後的FTP客戶訪問外界FTp服務器的情況,因爲在這種情況下,防火牆通常配置爲不允許外界訪問防火牆之後主機,而只允許由防火牆之後的主機發起的連接請求通過。
因此,在這種情況下不能使用主動模式的FTP傳輸,而被動模式的FTP可以良好的工作。

77.編寫個shell腳本將當前目錄下大於10K的文件轉移到/tmp目錄下

Q:主要是考察awk 這些的用法

#/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 -la /tmp
echo “Done! ”

78.apache有幾種工作模式,分別介紹下其特點,並說明什麼情況下采用不同的工作模式?

apache主要有兩種工作模式:prefork(apache的默認安裝模式)worker(可以在編譯的時候加參數–with-mpm- worker選擇工作模式)
prefork的特點是:(預派生)
1.這種模式可以不必在請求到來時再產生新的進程,從而減小了系統開銷
2.可以防止意外的內存泄漏
3.在服務器負載下降的時候會自動減少子進程數
worker的特點是:支持混合的多線程多進程的多路處理模塊
如果對於一個高流量的HTTP服務器,worker MPM是一個比較好的選擇,因爲worker MPM佔用的內存要比prefork要小。

79.名詞解釋 HDLC,VTP,OSPF,RIP,DDOS,systemV,GNU,netscreen,ssh,smartd,apache,WAIT_TIME 等等。

HDLC:高級鏈路控制;VTP:vlan 傳輸協議;OSPF:開放最短路徑優先;RIP:路由信息協議;DDOS:分佈式拒絕服務攻擊;system V:UNIX版本V;GNU:非UNIX,開放源碼軟件工程;netscreen:國際著名防火牆廠家之一,04年後被juniper收購,變爲其防火牆的一個系列;ssh:安全外殼,防止中間人攻擊的一種連接方式;smartd:硬盤檢測工具s.m.a.r.t的進程;Apache:web服務器軟件;WAIT_TIME:netstat命令顯示的參數,客戶端正在等待。

80.編寫shell腳本獲取本機的網絡地址。比如:本機的ip地址是:192.168.100.2/255.255.255.0,那麼它的網絡地址是192.168.100.1/255.255.255.0

方法一:

#!/bin/bash
#This script print ip and network
file=”/etc/sysconfig/network-scripts/ifcfg-eth0″
if [ -f $file ] ;then
IP=`grep “IPADDR” $file|awk -F”=” ‘{ print $2 }’`
MASK=`grep “NETMASK” $file|awk-F”=” ‘{ print $2 }’`
echo$IP/$MASKexit 1
fi

方法二:

#!/bin/bash
#This programm will printf ip/network
#
IP=`ifconfig eth0 |grep ‘inet ‘ |sed ’s/^.*addr://g’|sed ’s/ Bcast.*$//g’`
NETMASK=`ifconfig eth0 |grep ‘inet ‘|sed ’s/^.*Mask://g’`
echo$IP/$NETMASKexit

81.在命令行下發一郵件,發件人:[email protected],收信人:[email protected]

"hello"  abc@xyz.com

82.linux下如何改IP,主機名,DNS

使用setup 命令可以修改IP 和DNS ,修改完後重啓網絡:service network restart
臨時修改即時生效,重啓後失效

hostname主機名: 修改主機名

ifconfigeth0 IP netmask 掩碼 :修改IP

 永久修改主機名: 修改:/etc/sysconfig/network 文件 HOSTNAME=主機名

永久修改IP地址:修改 /etc/sysconfig/network-scripts/ifcfg-eth0 文件

修改完後重啓網絡:service network restart

83.linux下如何添加路由

# route add –host 192.168.168.110 dev eth0
# route add –host 192.168.168.119 gw 192.168.168.1
//添加到網絡的路由
# route add –net IP netmask MASK  deveth0
# route add –net IP netmask MASK gw IP
//添加默認網關
# route add default gw IP
//刪除路由
# route del –host 192.168.168.110 dev eth0

84.簡述linux下編譯內核的意義與步驟

編譯內核的意義在於讓硬件設備更穩定的發揮其應有的效能;

內核編譯:

1.內核裁減

2.打補丁

3.添加新功能/模塊

步驟:

1.下載新內核源代碼

2.配置內核編譯參數:make menuconfig

3.選擇需要添加的模塊

4.開始編譯

#make (代表來makebzlmage 以及 make moudles)  make -j2

5.安裝編譯好到模塊和內核

#make modules_install (將編譯好到模塊複製到/lib/modules/3.0.0-rc4文件夾)

#makeinstall (安裝編譯好的內存映像文件)

6.修改GRUB啓動菜單,增加使用新內核啓動到項目

85.簡述DDOS攻擊的原理

黑客劫持大量傀儡主機,對目標服務器進行合理的資源請求,導致服務器資源耗盡而不能進行正常的服務。

86.簡述Tcp三次握手的過程

第一次握手,建立連接,客戶端發送SYN包到服務器,並進入SYN_SEND狀態,等待服務器確認;

第二次握手,服務器收到SYN,同時自己也發送一個SYN包和一個ACK包來確認客戶端的SYN,並進入SYN_RECV;

第三次握手,客戶端收到服務器發來的SYN+ACK後,回覆服務器端一個ACK確認,發送完畢後,雙方進入ESTABLISHED狀態。

三次握手成功後,開始傳輸數據。

87.簡述VPN,常見有哪幾種?

VPN是指在公共的網絡上建立專用網絡的技術,但是兩個節點間並沒有物理上的專用的端到端鏈路,而是通過廣域網或者運營商提供的網絡平臺之上的邏輯網絡,用戶數據在邏輯鏈路中傳輸,它可以有效的節省一般需要達到DDN專線所能達到的同樣的目的,而且VPN採用身份驗證和加密技術,充分保證了安全性。常見的VPN有:ipsec vpn、PPTPvpn、L2TP vpn、SSL vpn

88.解釋下什麼是GPL,GNU,自由軟件?

GPL:(通用公共許可證):一種授權,任何人有權取得、修改、重新發布自由軟件的權力。

GNU:(革奴計劃):目標是創建一套完全自由、開放的的操作系統。

自由軟件:是一種可以不受限制地自由使用、複製、研究、修改和分發的軟件。主要許可證有GPLBSD許可證兩種。

89.如何選擇Linux操作系統版本?

一般來講,桌面用戶首選Ubuntu;服務器首選RHEL或CentOS,兩者中首選CentOS。

根據具體要求:

①安全性要求較高,則選擇Debian或者FreeBSD。

②需要使用數據庫高級服務和電子郵件網絡應用的用戶可以選擇SUSE。

③想要新技術新功能功能可以選擇Feddora,Feddora是RHEL和CentOS的一個測試版和預發佈版本。

④根據現有狀況,絕大多數互聯網公司選擇CentOS。現在比較常用的是6系列,現在市場佔有大概一半左右。另外的原因是CentOS更側重服務器領域,並且無版權約束。

3.初學者在Linux系統的開機啓動項如何選擇?

建議選擇五個開機啓動項:
①.crond: 該服務用於週期地執行系統及用戶配置的計劃任務。有要週期性執行的任務計劃需要開啓,此服務是生產場景必須要用的一個軟件。

②.iptables: iptables包過濾防火牆,有外網IP時,考慮開啓。

③.network: 啓動系統時,若想激活/關閉啓動時的各個網絡接口,則應(必須)考慮開啓。

④.sshd: 遠程連接Linux服務器時需要用到這個服務程序,所以必須要開啓,否則將無法遠程連接到Linux服務器。

⑤.rsyslog: 是操作系統提供的一種機制,系統的守護程序通常會使用rsyslog將各種信息收集寫入到系統日誌文件中,CentOS6以前此服務的名字爲syslog。

⑥.sysstat: 是一個軟件包,包含監測系統性能及效率的一組工具,這些工具對於Linux系統性能數據很有幫助,比如CPU使用率、硬盤和網絡吞吐數據等,這些數據的分析,有利於判斷系統運行是否正常,所以它是提高系統運行效率、安全運行服務的助手。

90.請描述Linux系統優化的12個步驟。

⑴登錄系統:不使用root登錄,通過sudo授權管理,使用普通用戶登錄。

⑵禁止SSH遠程:更改默認的遠程連接SSH服務及禁止root遠程連接。

⑶時間同步:定時自動更新服務器時間。

⑷配置yum更新源,從國內更新下載安裝rpm包。

⑸關閉selinux及iptables(iptables工作場景如有wan ip,一般要打開,高併發除外)

⑹調整文件描述符數量,進程及文件的打開都會消耗文件描述符。

⑺定時自動清理/var/spool/clientmquene/目錄垃圾文件,防止節點被佔滿(c6.4默認沒有sendmail,因此可以不配。)

⑻精簡開機啓動服務(crond、sshd、network、rsyslog)

⑼Linux內核參數優化/etc/sysctl.conf,執行sysct -p生效。

更改字符集,支持中文,但是還是建議使用英文,防止亂碼問題出現。

⑾鎖定關鍵系統文件(chattr +i /etc/passwd /etc/shadow /etc/group /etc/gshadow /etc/inittab 處理以上內容後,把chatter改名,就更安全了。)

⑿清空/etc/issue,去除系統及內核版本登陸前的屏幕顯示。

91.描述Linux運行級別0-6的各自含義

0:關機模式

1:單用戶模式<==破解root密碼

2:無網絡支持的多用戶模式

3:有網絡支持的多用戶模式(文本模式,工作中最常用的模式)

4:保留,未使用

5:有網絡支持的X-windows支持多用戶模式(桌面)

6: 重新引導系統,即重啓

92.描述Linux系統從開機到登陸界面的啓動過程

⑴開機BIOS自檢,加載硬盤。

⑵讀取MBR,MBR引導。

⑶grub引導菜單(Boot Loader)。

⑷加載內核kernel。

⑸啓動init進程,依據inittab文件設定運行級別

⑹init進程,執行rc.sysinit文件。

⑺啓動內核模塊,執行不同級別的腳本程序。

⑻執行/etc/rc.d/rc.local

⑼啓動mingetty,進入系統登陸界面。

93.描述Linux下軟鏈接和硬鏈接的區別

在Linux系統中,鏈接分爲兩種,一種是硬鏈接(Hard link),另一種稱爲符號鏈接或軟鏈接(Symbolic Link)。

①默認不帶參數的情況下,ln創建的是硬鏈接,帶-s參數的ln命令創建的是軟鏈接。

②硬鏈接文件與源文件的inode節點號相同,而軟鏈接文件的inode節點號,與源文件不同,

③ln命令不能對目錄創建硬鏈接,但可以創建軟鏈接。對目錄的軟鏈接會經常使用到。

④刪除軟鏈接文件,對源文件和硬鏈接文件無任何影響。

⑤刪除文件的硬鏈接文件,對源文件及軟鏈接文件無任何影響。

⑥刪除鏈接文件的源文件,對硬鏈接文件無影響,會導致其軟鏈接失效(紅底白字閃爍狀)。

⑦同時刪除源文件及其硬鏈接文件,整個文件纔會被真正的刪除。

⑧很多硬件設備的快照功能,使用的就是類似硬鏈接的原理。

⑨軟鏈接可以跨文件系統,硬鏈接不可以跨文件系統。

94.生產場景如何對linux系統進行合理規劃分區?

分區的根本原則是簡單、易用、方便批量管理。根據服務器角色定位建議如下:

①單機服務器:如8G內存,300G硬盤

分區:  /boot 100-200M,swap 16G,內存大小8G*2,/ 80G,/var 20G(也可不分),/data 180G(存放web及db數據)

優點:數據盤和系統盤分開,有利於出問題時維護。

RAID方案:視數據及性能要求,一般可採用raid5折中。

②負載均衡器(如LVS等)

分區:/boot 100-200M,swap 內存的1-2倍,/  ,

優點:簡單方便,只做轉發數據量很少。

RAID方案:數據量小,重要性高,可採用RAID1

③負載均衡下的RS server

分區: /boot 100-200M,swap 內存的1-2倍,/

優點:簡單方便,因爲有多機,對數據要求低。

RAID方案:數據量大,重要性不高,有性能要求,數據要求低,可採用RAID0

④數據庫服務器mysql及oracle如16/32G內存

分區:/boot 100-200M,swap 16G,內存的1倍,/ 100G,/data 剩餘(存放db數據)

優點:數據盤和系統盤分開,有利於出問題時維護,及保持數據完整。

RAID方案:視數據及性能要求主庫可採取raid10/raid5,從庫可採用raid0提高性能(讀寫分離的情況下。)

⑤存儲服務器

分區:/boot 100-200M,swap 內存的1-2倍,/ 100G,/data(存放數據)

優點:此服務器不要分區太多。只做備份,性能要求低。容量要大。

RAID方案:可採取sata盤,raid5

⑥共享存儲服務器(如NFS)

分區:/boot 100-200M,swap 內存的1-2倍,/ 100G,/data(存放數據)

優點:此服務器不要分區太多。NFS共享比存儲多的要求就是性能要求。

RAID方案:視性能及訪問要求可以raid5,raid10,甚至raid0(要有高可用或雙寫方案)

⑦監控服務器cacti,nagios

分區:/boot 100-200M,swap 內存的1-2倍,/

優點:重要性一般,數據要求也一般。

RAID方案:單盤或雙盤raid1即可。三盤就RAID5,看容量要求加盤即可。

95.描述Linux下文件刪除的原理

Linux系統是通過link的數量來控制文件刪除的,只有當一個文件不存在任何link的時候,這個文件纔會被刪除。一般來說每個文件兩個link計數器來控制i_count和i_nlink。當一個文件被一個程序佔用的時候i_count就加1。當文件的硬鏈接多一個的時候i_nlink也加1。刪除一個文件,就是讓這個文件,沒有進程佔用,同時i_link數量爲0

96.請簡單描述VI編輯器的使用

①vi編輯器是linux系統下最最基本和最常用的標準文本編輯器。

②vi編輯器有三種工作模式:普通模式、編輯模式、命令模式。

③普通模式下的鍵盤輸入任何字符都是當作命令來執行的,也可以輸入命令進行光標的移動,字符、單詞、行的複製、粘帖以及刪除等操作。

④編輯模式主要用於文本的輸入。在該模式下,用戶輸入的任何字符都被作爲文件的內容保存起來。

⑤命令模式下,用戶可以對文件進行一些如字符串查找、替換、顯示行號等操作還是必須要進入命令模式的。

⑥在普通模式下輸入冒號即可進入命令模式,此時vi窗口的狀態行會顯示出冒號,等待用戶輸入命令。“i”插入模式,即可以進行編輯。用戶輸入完成後,按【Esc】之後編輯器又返回到普通模式下,在命令模式下,保存退出,可以使用的命令爲wq和x。前面加!表示強制退出,強制保存等。

97.請簡單說出用戶管理的相關命令及用途

#組管理命令

groupadd #添加組

groupdel #刪除用戶組

groupmod #修改用戶組

groups  #顯示當前用戶所屬的用戶組

grpck   #檢查用戶組及密碼文件的完整性(etc/group以及/etc/gshadow文件)

grpconv #通過/etc/group和/etc/gshadow 的文件內容來同步或創建/etc/gshadow ,如果/etc/gshadow 不存在則創建;

grpunconv #通過/etc/group 和/etc/gshadow 文件內容來同步或創建/etc/group ,然後刪除gshadow文件 。



#用戶管理命令

useradd #添加用戶

adduser #添加用戶

passwd  #爲用戶設置密碼

usermod #修改用戶命令,可以通過usermod 來修改登錄名、用戶的家目錄等等

pwcov   #同步用戶從/etc/passwd 到/etc/shadow

pwck   #pwck是校驗用戶配置文件/etc/passwd 和/etc/shadow文件內容是否合法或完整

pwunconv #執行pwunconv指令可以關閉用戶投影密碼,它會把密碼從shadow文件內,重回存到passwd文件裏。

finger #查看用戶信息工具(危險命令,一般不用)

id #查看用戶的UID、GID及所歸屬的用戶組

chfn #更改用戶信息工具

su #用戶切換工具

98.請簡述基礎正則表達式grep高級參數的使用

常用參數:

-v排除匹配內容,

-e支持擴展的正則表達式,

-i忽略大小寫,

-o輸出匹配的內容(只是一塊,不是行),

--color=auto 匹配內容顯示顏色,

-n 在行首顯示行號。

特殊字符注意事項:

^(尖括號)word :表示搜索以word開頭的內容。

word$ 表示搜索以word結尾的內容。

^$    表示的是空行,不是空格。

.     代表且只能代表任意一個字符。非正則表達式其他功能(當前目錄,加載文件)

\     轉義字符,讓有着特殊身份意義的字符,脫掉馬甲,還原原型。例如\.只表示原始小數點意義。

*    表示重複0個或多個前面的一個字符。不代表所有。

.*   表示匹配所有的字符。^.*表示以任意字符開頭。

[任意字符如abc] 匹配字符集內任意一個字符[a-z]。 [^abc] ^在中括號裏面是非的意思,不包含之意。意思就是不包含a或b或c的行。
{n,m} 表示重複n到m次前一個字符。{n}至少n次,多了不限。{n}N次,{,m}至多m次,少了不限。

注:使用grep或sed要對{}轉義。即\{\}.egrep就不需要轉義了。

99.請簡述基礎正則表達式sed高級參數的使用

解答:

-n取消默認輸出

-p 打印

-d刪除

-e允許多項編輯

sed取行,要特別注意sed -n 's###g' filename 的使用,sed的的功能可以記住正則表達式的一部分,其中,\1爲第一個記住的模式即第一個小括號中的匹配內容,\2第二記住的模式,即第二個小括號中的匹配內容,sed最多可以記住9個。

實際字符的選取最好要唯一,正則表達式是貪婪的,總是儘可能的匹配更遠的符合匹配的內容。另外注意字符串中的空格。

100.請給出查看當前哪些用戶在線的Linux命令

w        #顯示目前系統登錄用戶

who      #顯示目前已登錄用戶信息

last     #列出目前與過去登入系統的用戶相關信息

lastlog  #檢查某特定用戶上次登錄時間

whoami   #打印與當前生效的用戶ID關聯的用戶名

finger   #用戶信息查找程序

id       #顯示指定用戶或當前用戶的用戶與組信息

101.請你描述下crontab的作用和語法,以及書寫定時任務注意的要點。

設置crontab後我們可以使得Linux主動執行的在固定的間隔時間,執行指定的系統指令或 shell script腳本。生產環境可以用來日誌分析或生產備份等。

語法格式:

crontab [ -u user ] file     ===》-u的意思就是指定用戶

crontab [ -u user ] { -l 顯示文件內容| -r全部刪除crontab文件 | -e 編輯crontab文件| -i刪除crontab文件前確認提示}

舉例:

*/5 10,12 * 3-8 * * /usr/sbin/ntpdate 10.0.0.155  >/dev/null  2>&1

前五段是時間間隔的設定,單位分別是分鐘、小時、日、月、周(儘量避免使用日月和周同時出現,以免造成系統誤判)。

第一個時間段 分鐘 範圍0-59

第二個時間段 小時 範圍0-23

第三個世間段 日   範圍1-31

第四個時間段 月   範圍1-12

第五個時間段 周   範圍0-7



*星號代表任何時間都接受命令

,逗號,表示隔開。代表分隔的時間都適用此命令。

- 減號,兩個時間段之間,代表在此時間段內執行定時任務。

/n斜線和n(數字)表示每隔n段時間執行一次。



注意要點分爲:書寫基本要領與書寫注意事項

7個基本要領:

第一、爲定時任務規則加必要的註釋

第二、定時任務命令或程序最好寫到腳本里執行

第三、定時任務執行的腳本要規範路徑,如:/server/scripts

第四、執行shell腳本任務時前加/bin/sh

執行定時任務時,如果是執行腳本,儘量在腳本前面帶上/bin/sh命名

第五、定時任務結尾加 >/dev/null 2>&1

第六、/dev/null爲特殊的字符設備文件,表示黑洞設備或空設備。

第七、有關重定向的說明

>或1>    輸出重定向:把前面輸出的東西輸入到後邊的文件中,會刪除文件原有內容。

>>或1>>  追加重定向:把前面輸出的東西追加到後邊的文件中,不會刪除文件原有內容。

<或<0     輸入重定向:輸入重定向用於改變命令的輸入,指定輸入內容,後跟文件名。

<<或<<0   輸入重定向:後跟字符串,用來表示“輸入結束”,也可用ctrl+d來結束輸入。

2>        錯誤重定向:把錯誤信息輸入到後邊的文件中,會刪除文件原有內容。

2>>        錯誤追加重定向:把錯誤信息追加到後邊的文件中,不會刪除文件原有內容。

標準輸入(stdin):代碼爲0,使用<或<<。

標準輸出(stdout):代碼爲1,使用>或>>。正常的輸出。

標準錯誤輸出(sederr):代碼爲2,使用2>或2>>。

特殊:

2>&1就是把標準錯誤重定向到標準輸出(>&)。

>/dev/null 2>&1 等價於 1>/dev/null  2>/dev/null

102.請列出Linux中你認爲重要的文件夾及包含內容

① /目錄下的文件夾裏面分別是以下內容:

/usr 包含所有的命令和程序庫、文檔和其他文件及當前linux發行版的主要應用程序

/var 包含正在操作的文件,還有記錄文件、加密文件、臨時文件等

/home 除了root用戶外的所有用戶的配置文件,個性化文件和主目錄,即家目錄

/proc 虛擬目錄,該目錄實際上指向內存而不是硬盤

/bin    系統執行文件(二進制文件)普通用戶可以使用

/sbin 系統執行文件(二進制文件)不能被普通用戶使用,通常由root用戶使用

/etc 操作系統的配置文件

/root root用戶的家目錄

/dev 系統設備文件,linux所有設備都是以文件的形式被處理,該目錄不包含驅動程序

/lib 程序和核心模塊共享庫(僅限於/下的程序)

/boot 系統引導、啓動文件,通常grub也在這裏

/opt 可選應用程序目錄

/tmp 臨時文件,系統會自動清理

/lost+found 恢復文件(類似回收站)

/media 所有的磁盤(有時有光盤)將以文件夾的形式掛載,光盤鏡像也可以掛載

/cd-rom 掛載光盤的地方



② /usr目錄下的文件比較重要,其作用下面分類列出:

/usr/X11 X-windows桌面環境

/usr/doc linux系統的文檔資料

/usr/share 獨立於當前計算機的數據結構,如字典中的詞

/usr/bin 類似/bin但是不參與啓動,大部分命令都在這裏

/usr/local 本地管理員安裝的應用程序

/usr/local/bin 用戶安裝的應用程序(部分)



③ /proc目錄的內容

/proc/cpuinfo 處理器的信息

/proc/devices 當前運行內核的所有設備清單

/proc/dma 當前正在使用中的DMA通道

/proc/filesystem 當前運行內核所配置的文件系統

/proc/interrupts 當前使用的中斷和曾經有多少箇中斷

/proc/ioports 正在使用的I/O端口

103.給出正確的關機和重啓服務器的命令

shutdown

[-t] 指定在多長時間之後關閉系統 [-r] 重啓系統 [-k] 並不真正關機,只是給每個登錄用戶發送警告信號 [-h] 關閉系統(halt)
⑵halt

halt是最簡單的關機命令,其實際上是調用shutdown -h命令。halt執行時,殺死應用進程,文件系統寫操作完成後就會停止內核。

halt命令的部分參數如下:

[-f] 沒有調用shutdown而強制關機或重啓 [-i] 關機或重新啓動之前,關掉所有的網絡接口 [-p] 關機時調用poweroff,此選項爲缺省選項
⑶reboot

reboot工作過程與halt類似,作用是重新啓動,而halt是關機。其參數與halt類似。

⑷init

init是所有進程的祖先,其進程號始終爲1。init用於切換系統的運行級別,切換的工作是立即完成的。init 0命令用於立即將系統運行級別切換爲0,即關機;init 6命令用於將系統運行級別切換爲6,即重新啓動。

104.請簡述修改/etc/sudoers配置文件的注意事項

①別名的名稱可以包含大寫字母。數字、下劃線。如果是字母必須要大寫,(別名爲一羣擁有相同屬性的集合)。

②一個別名下面可以有多個成員,成員間通過半角(,)逗號隔開。成員必須有效實際存在。

別名成員受別名類型 Host_Alias、User_Alias、Runas_Alias、Cmnd_Alias制約,定義什麼類型的別名,就要有相什麼類型的成員匹配。

③用戶組前面必須加%號。命令別名下的成員必須是文件或目錄的絕對路徑。

④指定切換用戶要用()括號括起來,如果省略,則默認root用戶,如果括號裏是ALL,則代表能切換到所有用戶。

⑤命令路徑要使用全路徑。

⑥別名規則每行算一個規則,一行容不下時用\續行。另外超過一行,用反斜線換行。

⑦一般不建議先給all權限,後面排除。用什麼權限,就給什麼權限。(注意權限,語法)。

如果不需要密碼直接運行命令的應該加NOPASSWD參數。

⑧禁止某類程序或命令執行,要在命令動作前面加上“!”號,並放在允許執行命令之後。

105.請描述如何實現linux系統集權分治的權限分級精細管理?

① 收集以及制定用戶和權限的匹配信息,原則是給於最小權限,但是又能完成所承擔的工作職責。

② 各個用戶組設置對應權限,用什麼給什麼,精細到每一條指令上根據分組情況。

③ 創建規劃權限分組的用戶.添加相關用戶組。並修改etc/sudoers配置文件。

④ 增加sudo的權限開放,確定相關用戶加入如soduers權限列表,並詳細設置所開放權限內容,並選擇是否需要密碼的相關執行權限開放。(注意ALL權限,以及密碼修改權限設置)。

⑤ 不建議先給all權限,後面排除。建議使用白名單。

⑥實戰調試測試相關權限是否正確配置完成。

⑦編寫操作說明,及相關注意事項。

⑧調試完畢,郵件周知所有相關人員系統權限設置生效,並附帶操作說明及相關注意事項。

106.請寫出下面Linux SecureCRT命令行快捷鍵命令的功能?

Ctrl + a  光標到開頭

Ctrl + c 中斷當前程序

Ctrl + d 退出當前窗口或當前用戶

Ctrl + e 光標到結尾

Ctrl + l 清屏 相當與clear

Ctrl + u 剪切、刪除(光標以前的)內容

Ctrl + k 剪切、刪除(光標以後的)內容

Ctrl + r 查找(最近用過的命令)

tab    所有路徑以及補全命令

Ctrl+shift+c 命令行復制內容

Ctrl+shift+v 命令行粘貼內容

Ctrl + q 取消屏幕鎖定

Ctrl + s 執行屏幕鎖定

107.請描述服務器賬戶日誌審計的5種解決方案。

⑴通過環境變量syslog對全部全部日誌進行審計(信息量太大,不推薦)

⑵sudo配合syslog服務,進行sudo操作日誌進行審計(信息較少,效果不錯)

⑶在bash解釋器嵌入一個監視器,讓所有用戶使用修改過的bash程序,作爲解釋程序。

⑷齊治的堡壘機(商業產品)。

108.如果一臺辦公室內主機無法上網(打不開網站),請給出你的排查步驟?

①首先確定物理鏈路是否聯通正常。

②查看本機IP,路由,DNS的設置情況是否達標。

③telnet檢查服務器的WEB有沒有開啓以及防火牆是否阻攔。

④ping一下網關,進行最基礎的檢查,通了,表示能夠到達服務器。

⑤測試到網關或路由器的通常情況,先測網關,然後再測路由器一級一級的測試。

⑥測試ping公網ip的通常情況(記住幾個外部IP),

⑦測試DNS的通暢。ping出對應IP。

⑧通過以上檢查後,還在網管的路由器上進行檢查。

109.描述Linux shell中單引號、雙引號及不加引號的簡單區別

單引號:所見即所得,即將單引號內的內容原樣輸出,或者描述爲單引號裏面看到的是什麼就輸出什麼。

雙引號:把雙引號裏面的內容給輸出出來,如果內容中有命令、變量等,會先把,變來那個、命令解析出結果,然後輸出最終內容。

雙引號內的命令或者變量寫法’命令或變量’或$(命令或變量)

無引號:把內容輸出出來,可能不會鍵含有空格的字符串,視爲一個整體輸出,如果內容中有命令、變量等,會先把變量、命令解析出來,然後輸出最終內容,如果字符串中帶有空格等特殊字符,則不能完整輸出,需要改加雙引號。一般連續的字符串,數字,路徑等可以用,不過最好用雙引號,替代之。

110.請簡述Linux啓動過程中幾個重要配置文件的執行過程

Linux 登錄後,配置執行順序爲(Debian Serials Capable):

/etc/environment -> /etc/profile -> (~/.bash_profile | ~/.bash_login | ~/.profile) -> ~/.bashrc -> /etc/bashrc -> ~/.bash_logout

關於各個文件的作用說明:

(1)/etc/environment:此配置文件設置基本的PATH變量,及系統當前語言變量,雖然比較短,但卻在系統啓動中佔據舉足輕重的作用,比如如下是我的系統中的內容:

(2)/etc/profile: 此文件爲系統的每個用戶設置環境信息,當用戶第一次登錄時,該文件被執行. 並從/etc/profile.d目錄的配置文件中搜集shell的設置。

(3)/etc/bash.bashrc: 爲每一個運行bash shell的用戶執行此文件.當bash shell被打開時,該文件被讀取。

(4)~/.bash_profile: 每個用戶都可使用該文件輸入專用於自己使用的shell信息,當用戶登錄時,該文件僅僅執行一次!默認情況下,他設置一些環境變量,執行用戶的.bashrc文件。

(5)~/.bashrc: 該文件包含專用於你的bash shell的bash信息,當登錄時以及每次打開新的shell時,該該文件被讀取。

(6)~/.bash_logout: 當每次退出系統(退出bash shell)時,執行該文件. 另外,/etc/profile中設定的變量(全局)的可以作用於任何用戶,而~/.bashrc等中設定的變量(局部)只能繼承 /etc/profile中的變量,他們是"父子"關係。

(7)~/.bash_profile 是交互式、login 方式進入 bash 運行的~/.bashrc 是交互式 non-login 方式進入 bash 運行的通常二者設置大致相同,所以通常前者會調用後者。

111.請描述下列路徑的內容是做什麼的?

/var/log/messages   系統日誌文件

/var/log/secure     系統安全文件(顯示登錄信息的文件)

/var/spool/clientmqueue  例行性任務回執郵件存放文件

/proc/interrupts    當前系統中斷報告文件

/etc/fstab          開機自動掛載磁盤的配置文件

/etc/profile        環境變量存放的文件

112.請給出Linux中eth0的IP地址和廣播地址的指令,需使用cut、awk、grep、sed指令。

第一種方法:使用grep和cut取值

第二種方法:使用grep和awk(默認分隔符爲空格)取值

第三種方法:使用grep和awk(多分隔符)

第四種方法:使用sed和awk

第五種方法:使用grep和awk(多分隔符與加號+)

第六種方法:awk (分隔符及取行)

第七種方法:grep 網卡文件

第八種方法:head取行 awk分割

113.請輸出你知道的20 個LINUX 命令及作用

cp 複製 -a(drp),-r拷貝目錄 -p保持屬性
mv 移動文件或目錄
mkdir 創建目錄  -p遞歸創建目錄 mkdir /a/b/c
touch 創建文件,
cd    切換目錄(~當前用戶家目錄,-上一次的目錄)
cat   查看文件內容  -n顯示行號
ls    查看目錄下文件,-l長格式,-d查看目錄**********
rm    刪除文件或目錄 -r目錄 -f強制刪除(慎用,mv,find)
find  查找文件或目錄 -type 類型(f,d,l,c,b),-name名字 -exec執行動作*****
alias 查看及設置別名
unalias 取消別名
seq 打印序列 -s指定分割符 -w數字前面加0補齊位數
head 查看文件前N行,默認10行,-n指定行數
tail 查看文件後N行,默認10行,-n指定行數,-f實時跟蹤文件結尾的變化
sed linux三劍客老二,文件增刪改查,*****
pwd打印當前工作目錄
rmdir 刪除空目錄
echo 顯示輸出
xargs (配合find,ls)等查找到的內容處理,-n分組
tree -L層數  -d目錄
rpm  -q query查詢 -a all
uname -r內核 -m32位還是64-a所有信息, -n主機名(hostname)
hostname 主機名
whoami 查看當前用戶
useradd 添加用戶
passwd  改密碼,--stdin 非交互設置密碼
su     切換用戶角色,-切換環境變量

114、什麼是運維?什麼是遊戲運維?

1)運維是指大型組織已經建立好的網絡軟硬件的維護,就是要保證業務的上線與運作的正常,

在他運轉的過程中,對他進行維護,他集合了網絡、系統、數據庫、開發、安全、監控於一身的技術

運維又包括很多種,有DBA運維、網站運維、虛擬化運維、監控運維、遊戲運維等等

2)遊戲運維又有分工,分爲開發運維、應用運維(業務運維)和系統運維

開發運維:是給應用運維開發運維工具和運維平臺的

應用運維:是給業務上線、維護和做故障排除的,用開發運維開發出來的工具給業務上線、維護、做故障排查

系統運維:是給應用運維提供業務上的基礎設施,比如:系統、網絡、監控、硬件等等

總結:開發運維和系統運維給應用運維提供了“工具”和“基礎設施”上的支撐

開發運維、應用運維和系統運維他們的工作是環環相扣的

115、在工作中,運維人員經常需要跟運營人員打交道,請問運營人員是做什麼工作的?

遊戲運營要做的一個事情除了協調工作以外

還需要與各平臺溝通,做好開服的時間、開服數、用戶導量、活動等計劃

116、現在給你三百臺服務器,你怎麼對他們進行管理?

管理3百臺服務器的方式:

1)設定跳板機,使用統一賬號登錄,便於安全與登錄的考量。

2)使用salt、ansiable、puppet進行系統的統一調度與配置的統一管理。

3)建立簡單的服務器的系統、配置、應用的cmdb信息管理。便於查閱每臺服務器上的各種信息記錄。

“117、簡述raid0 raid1 raid5 三種工作模式的工作原理及特點“`

RAID,可以把硬盤整合成一個大磁盤,還可以在大磁盤上再分區,放數據

還有一個大功能,多塊盤放在一起可以有冗餘(備份)

RAID整合方式有很多,常用的:0 1 5 10

RAID 0,可以是一塊盤和N個盤組合

其優點讀寫快,是RAID中最好的

缺點:沒有冗餘,一塊壞了數據就全沒有了

RAID 1,只能2塊盤,盤的大小可以不一樣,以小的爲準

10G+10G只有10G,另一個做備份。它有100%的冗餘,缺點:浪費資源,成本高

RAID 53塊盤,容量計算10*(n-1),損失一塊盤

特點,讀寫性能一般,讀還好一點,寫不好

冗餘從好到壞:RAID1 RAID10 RAID 5 RAID0

性能從好到壞:RAID0 RAID10 RAID5 RAID1

成本從低到高:RAID0 RAID5 RAID1 RAID10

單臺服務器:很重要盤不多,系統盤,RAID1

數據庫服務器:主庫:RAID10 從庫 RAID5\RAID0(爲了維護成本,RAID10)

WEB服務器,如果沒有太多的數據的話,RAID5,RAID0(單盤)

有多臺,監控、應用服務器,RAID0 RAID5

我們會根據數據的存儲和訪問的需求,去匹配對應的RAID級別

118、LVS、Nginx、HAproxy有什麼區別?工作中你怎麼選擇?

LVS: 是基於四層的轉發

HAproxy: 是基於四層和七層的轉發,是專業的代理服務器

Nginx: 是WEB服務器,緩存服務器,又是反向代理服務器,可以做七層的轉發

區別: LVS由於是基於四層的轉發所以只能做端口的轉發而基於URL的、基於目錄的這種轉發LVS就做不了

工作選擇:

HAproxy和Nginx由於可以做七層的轉發,所以URL和目錄的轉發都可以做在很大併發量的時候我們就要選擇LVS,像中小型公司的話併發量沒那麼大選擇HAproxy或者Nginx足已,由於HAproxy由是專業的代理服務器配置簡單,所以中小型企業推薦使用HAproxy

6、Squid、Varinsh和Nginx有什麼區別,工作中你怎麼選擇?

Squid、Varinsh和Nginx都是代理服務器

什麼是代理服務器:

能當替用戶去訪問公網,並且能把訪問到的數據緩存到服務器本地,等用戶下次再訪問相同的資源的時候,代理服務器直接從本地迴應給用戶,當本地沒有的時候,我代替你去訪問公網,我接收你的請求,我先在我自已的本地緩存找,如果我本地緩存有,我直接從我本地的緩存裏回覆你

如果我在我本地沒有找到你要訪問的緩存的數據,那麼代理服務器就會代替你去訪問公網

區別:

1)Nginx本來是反向代理/web服務器,用了插件可以做做這個副業

但是本身不支持特性挺多,只能緩存靜態文件

2)從這些功能上。varnish和squid是專業的cache服務,而nginx這些是第三方模塊完成

3)varnish本身的技術上優勢要高於squid,它採用了可視化頁面緩存技術

在內存的利用上,Varnish比Squid具有優勢,性能要比Squid高。

還有強大的通過Varnish管理端口,可以使用正則表達式快速、批量地清除部分緩存

它是內存緩存,速度一流,但是內存緩存也限制了其容量,緩存頁面和圖片一般是挺好的

4)squid的優勢在於完整的龐大的cache技術資料,和很多的應用生產環境

工作中選擇:

要做cache服務的話,我們肯定是要選擇專業的cache服務,優先選擇squid或者varnish。

119、Tomcat和Resin有什麼區別,工作中你怎麼選擇?

區別:Tomcat用戶數多,可參考文檔多,Resin用戶數少,可考慮文檔少

最主要區別則是Tomcat是標準的java容器,不過性能方面比resin的要差一些

但穩定性和java程序的兼容性,應該是比resin的要好

工作中選擇:現在大公司都是用resin,追求性能;而中小型公司都是用Tomcat,追求穩定和程序的兼容

120、什麼是中間件?什麼是jdk?

中間件介紹:

中間件是一種獨立的系統軟件或服務程序,分佈式應用軟件藉助這種軟件在不同的技術之間共享資源

中間件位於客戶機/ 服務器的操作系統之上,管理計算機資源和網絡通訊
是連接兩個獨立應用程序或獨立系統的軟件。相連接的系統,即使它們具有不同的接口

但通過中間件相互之間仍能交換信息。執行中間件的一個關鍵途徑是信息傳遞

通過中間件,應用程序可以工作於多平臺或OS環境。

jdk:jdk是Java的開發工具包

它是一種用於構建在 Java 平臺上發佈的應用程序、applet 和組件的開發環境

“121、講述一下Tomcat8005、8009、8080三個端口的含義?“`

8005==》 關閉時使用

8009==》 爲AJP端口,即容器使用,如Apache能通過AJP協議訪問Tomcat的8009端口

8080==》 一般應用使用

122、什麼叫CDN?

- 即內容分發網絡

- 其目的是通過在現有的Internet中增加一層新的網絡架構,將網站的內容發佈到最接近用戶的網絡邊緣,使用戶可就近取得所需的內容,提高用戶訪問網站的速度

123、什麼叫網站灰度發佈?

灰度發佈是指在黑與白之間,能夠平滑過渡的一種發佈方式

AB test就是一種灰度發佈方式,讓一部用戶繼續用A,一部分用戶開始用B

如果用戶對B沒有什麼反對意見,那麼逐步擴大範圍,把所有用戶都遷移到B上面 來
灰度發佈可以保證整體系統的穩定,在初始灰度的時候就可以發現、調整問題,以保證其影響度

124、簡述DNS進行域名解析的過程?

用戶要訪問http://www.baidu.com,會先找本機的host文件,再找本地設置的DNS服務器,如果也沒有的話,就去網絡中找根服務器,根服務器反饋結果,說只能提供一級域名服務器.cn,就去找一級域名服務器,一級域名服務器說只能提供二級域名服務器.com.cn,就去找二級域名服務器,二級域服務器只能提供三級域名服務器.http://baidu.com.cn,就去找三級域名服務器,三級域名服務器正好有這個網站http://www.baidu.com,然後發給請求的服務器,保存一份之後,再發給客戶端

125、RabbitMQ是什麼東西?

RabbitMQ也就是消息隊列中間件,消息中間件是在消息的傳息過程中保存消息的容器
消息中間件再將消息從它的源中到它的目標中標時充當中間人的作用

隊列的主要目的是提供路由並保證消息的傳遞;如果發送消息時接收者不可用消息隊列不會保留消息,直到可以成功地傳遞爲止,當然,消息隊列保存消息也是有期限地

126、講一下Keepalived的工作原理?

在一個虛擬路由器中,只有作爲MASTER的VRRP路由器會一直髮送VRRP通告信息,
BACKUP不會搶佔MASTER,除非它的優先級更高。當MASTER不可用時(BACKUP收不到通告信息)

多臺BACKUP中優先級最高的這臺會被搶佔爲MASTER。這種搶佔是非常快速的(<1s),以保證服務的連續性

於安全性考慮,VRRP包使用了加密協議進行加密。BACKUP不會發送通告信息,只會接收通告信息

127、講述一下LVS三種模式的工作過程?

LVS 有三種負載均衡的模式,分別是VS/NAT(nat 模式) VS/DR(路由模式) VS/TUN(隧道模式)

一、NAT模式(VS-NAT)

原理:就是把客戶端發來的數據包的IP頭的目的地址,在負載均衡器上換成其中一臺RS的IP地址

併發至此RS來處理,RS處理完後把數據交給負載均衡器,負載均衡器再把數據包原IP地址改爲自己的IP

將目的地址改爲客戶端IP地址即可期間,無論是進來的流量,還是出去的流量,都必須經過負載均衡器

優點:集羣中的物理服務器可以使用任何支持TCP/IP操作系統,只有負載均衡器需要一個合法的IP地址

缺點:擴展性有限。當服務器節點(普通PC服務器)增長過多時,負載均衡器將成爲整個系統的瓶頸

因爲所有的請求包和應答包的流向都經過負載均衡器。當服務器節點過多時

大量的數據包都交匯在負載均衡器那,速度就會變慢!

二、IP隧道模式(VS-TUN)

原理:首先要知道,互聯網上的大多Internet服務的請求包很短小,而應答包通常很大

那麼隧道模式就是,把客戶端發來的數據包,封裝一個新的IP頭標記(僅目的IP)發給RS

RS收到後,先把數據包的頭解開,還原數據包,處理後,直接返回給客戶端,不需要再經過

負載均衡器。注意,由於RS需要對負載均衡器發過來的數據包進行還原,所以說必須支持

IPTUNNEL協議,所以,在RS的內核中,必須編譯支持IPTUNNEL這個選項

優點:負載均衡器只負責將請求包分發給後端節點服務器,而RS將應答包直接發給用戶

所以,減少了負載均衡器的大量數據流動,負載均衡器不再是系統的瓶頸,就能處理很巨大的請求量

這種方式,一臺負載均衡器能夠爲很多RS進行分發。而且跑在公網上就能進行不同地域的分發。

缺點:隧道模式的RS節點需要合法IP,這種方式需要所有的服務器支持”IP Tunneling”

(IP Encapsulation)協議,服務器可能只侷限在部分Linux系統上

三、直接路由模式(VS-DR)

原理:負載均衡器和RS都使用同一個IP對外服務但只有DR對ARP請求進行響應

所有RS對本身這個IP的ARP請求保持靜默也就是說,網關會把對這個服務IP的請求全部定向給DR

而DR收到數據包後根據調度算法,找出對應的RS,把目的MAC地址改爲RS的MAC(因爲IP一致)

並將請求分發給這臺RS這時RS收到這個數據包,處理完成之後,由於IP一致,可以直接將數據返給客戶

則等於直接從客戶端收到這個數據包無異,處理後直接返回給客戶端

由於負載均衡器要對二層包頭進行改換,所以負載均衡器和RS之間必須在一個廣播域

也可以簡單的理解爲在同一臺交換機上

優點:和TUN(隧道模式)一樣,負載均衡器也只是分發請求,應答包通過單獨的路由方法返回給客戶端

與VS-TUN相比,VS-DR這種實現方式不需要隧道結構,因此可以使用大多數操作系統做爲物理服務器。

缺點:(不能說缺點,只能說是不足)要求負載均衡器的網卡必須與物理網卡在一個物理段上。

128、mysql的innodb如何定位鎖問題,mysql如何減少主從複製延遲?

mysql的innodb如何定位鎖問題:
在使用 show engine innodb status檢查引擎狀態時,發現了死鎖問題
在5.5中,information_schema 庫中增加了三個關於鎖的表(MEMORY引擎)

innodb_trx         ## 當前運行的所有事務
innodb_locks     ## 當前出現的鎖
innodb_lock_waits  ## 鎖等待的對應關係
mysql如何減少主從複製延遲:

如果延遲比較大,就先確認以下幾個因素:

1. 從庫硬件比主庫差,導致複製延遲

2. 主從複製單線程,如果主庫寫併發太大,來不及傳送到從庫就會導致延遲。更高版本的mysql可以支持多線程複製

3. 慢SQL語句過多

4. 網絡延遲

5. master負載

主庫讀寫壓力大,導致複製延遲,架構的前端要加buffer及緩存層

6. slave負載

一般的做法是,使用多臺slave來分攤讀請求,再從這些slave中取一臺專用的服務器

只作爲備份用,不進行其他任何操作.另外, 2個可以減少延遲的參數:

–slave-net-timeout=seconds 單位爲秒 默認設置爲 3600秒

#參數含義:當slave從主數據庫讀取log數據失敗後,等待多久重新建立連接並獲取數據
–master-connect-retry=seconds 單位爲秒 默認設置爲 60秒

#參數含義:當重新建立主從連接時,如果連接建立失敗,間隔多久後重試

通常配置以上2個參數可以減少網絡問題導致的主從數據同步延遲

MySQL數據庫主從同步延遲解決方案

最簡單的減少slave同步延時的方案就是在架構上做優化,儘量讓主庫的DDL快速執行

還有就是主庫是寫,對數據安全性較高,比如sync_binlog=1,innodb_flush_log_at_trx_commit
= 1 之類的設置,而slave則不需要這麼高的數據安全,完全可以講sync_binlog設置爲0或者關閉binlog

innodb_flushlog也可以設置爲0來提高sql的執行效率。另外就是使用比主庫更好的硬件設備作爲slave

129、如何重置mysql root密碼?

一、 在已知MYSQL數據庫的ROOT用戶密碼的情況下,修改密碼的方法:

1、 在SHELL環境下,使用mysqladmin命令設置:

mysqladmin –u root –p password “新密碼”   回車後要求輸入舊密碼
2、 在mysql>環境中,使用update命令,直接更新mysql庫user表的數據:

Update  mysql.user  set  password=password(‘新密碼’)  where  user=’root’;
flush   privileges;
注意:mysql語句要以分號”;”結束

3、 在mysql>環境中,使用grant命令,修改root用戶的授權權限。

grant  all  on  *.*  to   root@’localhost’  identified  by  ‘新密碼’;
二、 如查忘記了mysql數據庫的ROOT用戶的密碼,又如何做呢?方法如下:

1、 關閉當前運行的mysqld服務程序:service mysqld stop(要先將mysqld添加爲系統服務)

2、 使用mysqld_safe腳本以安全模式(不加載授權表)啓動mysqld 服務

/usr/local/mysql/bin/mysqld_safe --skip-grant-table &

3、 使用空密碼的root用戶登錄數據庫,重新設置ROOT用戶的密碼

#mysql  -u   root
Mysql> Update  mysql.user  set  password=password(‘新密碼’)  where  user=’root’;
Mysql> flush   privileges;

130、lvs/nginx/haproxy優缺點


Nginx的優點是:

1、工作在網絡的7層之上,可以針對http應用做一些分流的策略,比如針對域名、目錄結構

它的正則規則比HAProxy更爲強大和靈活,這也是它目前廣泛流行的主要原因之一

Nginx單憑這點可利用的場合就遠多於LVS了。

2、Nginx對網絡穩定性的依賴非常小,理論上能ping通就就能進行負載功能,這個也是它的優勢之一

相反LVS對網絡穩定性依賴比較大,這點本人深有體會;

3、Nginx安裝和配置比較簡單,測試起來比較方便,它基本能把錯誤用日誌打印出來

LVS的配置、測試就要花比較長的時間了,LVS對網絡依賴比較大。

4、可以承擔高負載壓力且穩定,在硬件不差的情況下一般能支撐幾萬次的併發量,負載度比LVS相對小些。

5、Nginx可以通過端口檢測到服務器內部的故障,比如根據服務器處理網頁返回的狀態碼、超時等等,並且會把返回錯誤的請求重新提交到另一個節點,不過其中缺點就是不支持url來檢測。比如用戶正在上傳一個文件,而處理該上傳的節點剛好在上傳過程中出現故障,Nginx會把上傳切到另一臺服務器重新處理,而LVS就直接斷掉了

如果是上傳一個很大的文件或者很重要的文件的話,用戶可能會因此而不滿。

6、Nginx不僅僅是一款優秀的負載均衡器/反向代理軟件,它同時也是功能強大的Web應用服務器

LNMP也是近幾年非常流行的web架構,在高流量的環境中穩定性也很好。

7、Nginx現在作爲Web反向加速緩存越來越成熟了,速度比傳統的Squid服務器更快,可考慮用其作爲反向代理加速器

8、Nginx可作爲中層反向代理使用,這一層面Nginx基本上無對手,唯一可以對比Nginx的就只有lighttpd了

不過lighttpd目前還沒有做到Nginx完全的功能,配置也不那麼清晰易讀,社區資料也遠遠沒Nginx活躍

9、Nginx也可作爲靜態網頁和圖片服務器,這方面的性能也無對手。還有Nginx社區非常活躍,第三方模塊也很多

Nginx的缺點是:

1、Nginx僅能支持httphttps和Email協議,這樣就在適用範圍上面小些,這個是它的缺點

2、對後端服務器的健康檢查,只支持通過端口來檢測,不支持通過url來檢測

不支持Session的直接保持,但能通過ip_hash來解決

LVS:使用Linux內核集羣實現一個高性能、高可用的負載均衡服務器

它具有很好的可伸縮性(Scalability)、可靠性(Reliability)和可管理性(Manageability)

LVS的優點是:

1、抗負載能力強、是工作在網絡4層之上僅作分發之用,沒有流量的產生

這個特點也決定了它在負載均衡軟件裏的性能最強的,對內存和cpu資源消耗比較低

2、配置性比較低,這是一個缺點也是一個優點,因爲沒有可太多配置的東西

所以並不需要太多接觸,大大減少了人爲出錯的機率

3、工作穩定,因爲其本身抗負載能力很強,自身有完整的雙機熱備方案

如LVS+Keepalived,不過我們在項目實施中用得最多的還是LVS/DR+Keepalived

4、無流量,LVS只分發請求,而流量並不從它本身出去,這點保證了均衡器IO的性能不會收到大流量的影響。

5、應用範圍較廣,因爲LVS工作在4層,所以它幾乎可對所有應用做負載均衡,包括http、數據庫、在線聊天室等

LVS的缺點是:

1、軟件本身不支持正則表達式處理,不能做動靜分離

而現在許多網站在這方面都有較強的需求,這個是Nginx/HAProxy+Keepalived的優勢所在

2、如果是網站應用比較龐大的話,LVS/DR+Keepalived實施起來就比較複雜了

特別後面有Windows Server的機器的話,如果實施及配置還有維護過程就比較複雜了

相對而言,Nginx/HAProxy+Keepalived就簡單多了。

HAProxy的特點是:

1、HAProxy也是支持虛擬主機的。

2、HAProxy的優點能夠補充Nginx的一些缺點,比如支持Session的保持,Cookie的引導

同時支持通過獲取指定的url來檢測後端服務器的狀態

3、HAProxy跟LVS類似,本身就只是一款負載均衡軟件

單純從效率上來講HAProxy會比Nginx有更出色的負載均衡速度,在併發處理上也是優於Nginx的

4、HAProxy支持TCP協議的負載均衡轉發,可以對MySQL讀進行負載均衡

對後端的MySQL節點進行檢測和負載均衡,大家可以用LVS+Keepalived對MySQL主從做負載均衡

5、HAProxy負載均衡策略非常多,HAProxy的負載均衡算法現在具體有如下8種:

①roundrobin,表示簡單的輪詢,這個不多說,這個是負載均衡基本都具備的;

② static-rr,表示根據權重,建議關注;

③leastconn,表示最少連接者先處理,建議關注;

④ source,表示根據請求源IP,這個跟Nginx的IP_hash機制類似

我們用其作爲解決session問題的一種方法,建議關注;

⑤ri,表示根據請求的URI;

⑥rl_param,表示根據請求的URl參數’balance url_param’ requires an URL parameter name;

⑦hdr(name),表示根據HTTP請求頭來鎖定每一次HTTP請求;

⑧rdp-cookie(name),表示根據據cookie(name)來鎖定並哈希每一次TCP請求。

131、mysql數據備份工具

mysqldump工具

mysqldump是mysql自帶的備份工具,目錄在bin目錄下面:/usr/local/mysql/bin/mysqldump

支持基於innodb的熱備份,但是由於是邏輯備份,所以速度不是很快,適合備份數據比較小的場景

Mysqldump完全備份+二進制日誌可以實現基於時間點的恢復。

基於LVM快照備份

在物理備份中,有基於文件系統的物理備份(LVM的快照),也可以直接用tar之類的命令對整個數據庫目錄

進行打包備份,但是這些只能進行泠備份,不同的存儲引擎備份的也不一樣,myisam自動備份到表級別

而innodb不開啓獨立表空間的話只能備份整個數據庫。

tar包備份

percona提供的xtrabackup工具

支持innodb的物理熱備份,支持完全備份,增量備份,而且速度非常快,支持innodb存儲引起的數據在不同

數據庫之間遷移,支持複製模式下的從機備份恢復備份恢復,爲了讓xtrabackup支持更多的功能擴展

可以設立獨立表空間,打開 innodb_file_per_table功能,啓用之後可以支持單獨的表備份

132、keepalive的工作原理和如何做到健康檢查

keepalived是以VRRP協議爲實現基礎的,VRRP全稱Virtual Router Redundancy Protocol,即虛擬路由冗餘協議。

虛擬路由冗餘協議,可以認爲是實現路由器高可用的協議,即將N臺提供相同功能的路由器組成一個路由器組

這個組裏面有一個master和多個backup,master上面有一個對外提供服務的vip(該路由器所在局域網內

其他機器的默認路由爲該vip),master會發組播,當backup收不到vrrp包時就認爲master宕掉了

這時就需要根據VRRP的優先級來選舉一個backup當master。這樣就可以保證路由器的高可用了

keepalived主要有三個模塊,分別是core、check和vrrp。core模塊爲keepalived的核心,負責主進程的啓動、維護

及全局配置文件的加載和解析。check負責健康檢查,包括常見的各種檢查方式,vrrp模塊是來實現VRRP協議的

Keepalived健康檢查方式配置

HTTP_GET|SSL_GET
HTTP_GET | SSL_GET
{
url {
path /# HTTP/SSL 檢查的url可以是多個
digest <STRING> # HTTP/SSL 檢查後的摘要信息用工具genhash生成
status_code 200# HTTP/SSL 檢查返回的狀態碼
}
connect_port 80 # 連接端口
bindto<IPADD>
connect_timeout 3 # 連接超時時間
nb_get_retry 3 # 重連次數
delay_before_retry 2 #連接間隔時間
} 

133、統計ip訪問情況,要求分析nginx訪問日誌,找出訪問頁面數量在前十位的ip

cat access.log | awk '{print $1}' | uniq -c | sort -rn | head -10

134、使用tcpdump監聽主機爲192.168.1.1,tcp端口爲80的數據,同時將輸出結果保存輸出到tcpdump.log

tcpdump 'host 192.168.1.1 and port 80' > tcpdump.log

135、如何將本地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

136、簡述raid0 raid1 raid5 三種工作模式的工作原理及特點

RAID 0:帶區卷,連續以位或字節爲單位分割數據,並行讀/寫於多個磁盤上,因此具有很高的數據傳輸率

但它沒有數據冗餘,RAID 0 只是單純地提高性能,並沒有爲數據的可靠性提供保證

而且其中的一個磁盤失效將影響到所有數據。因此,RAID 0 不能應用於數據安全性要求高的場合

RAID 1:鏡像卷,它是通過磁盤數據鏡像實現數據冗餘,在成對的獨立磁盤上產生互爲備份的數據

不能提升寫數據效率。當原始數據繁忙時,可直接從鏡像拷貝中讀取數據,因此RAID1 可以提高讀取性能

RAID 1 是磁盤陣列中單位成本最高的,鏡像卷可用容量爲總容量的1/2,但提供了很高的數據安全性和可用性

當一個磁盤失效時,系統可以自動切換到鏡像磁盤上讀寫,而不需要重組失效的數據

RAID5:至少由3塊硬盤組成,分佈式奇偶校驗的獨立磁盤結構,它的奇偶校驗碼存在於所有磁盤上

任何一個硬盤損壞,都可以根據其它硬盤上的校驗位來重建損壞的數據(最多允許1塊硬盤損壞)

所以raid5可以實現數據冗餘,確保數據的安全性,同時raid5也可以提升數據的讀寫性能

137、你對現在運維工程師的理解和以及對其工作的認識

運維工程師在公司當中責任重大,需要保證時刻爲公司及客戶提供最高、最快、最穩定、最安全的服務

運維工程師的一個小小的失誤,很有可能會對公司及客戶造成重大損失

因此運維工程師的工作需要嚴謹及富有創新精神

138、實時抓取並顯示當前系統中tcp 80端口的網絡數據信息,請寫出完整操作命令

tcpdump -nn tcp port 80 

139、服務器開不了機怎麼解決一步步的排查

A、造成服務器故障的原因可能有以下幾點:


B、如何排查服務器故障的處理步驟如下:

140、Linux系統中病毒怎麼解決

1)最簡單有效的方法就是重裝系統

2)要查的話就是找到病毒文件然後刪除

中毒之後一般機器cpu、內存使用率會比較高

機器向外發包等異常情況,排查方法簡單介紹下

top 命令找到cpu使用率最高的進程

一般病毒文件命名都比較亂,可以用 ps aux 找到病毒文件位置

rm -f 命令刪除病毒文件

檢查計劃任務、開機啓動項和病毒文件目錄有無其他可以文件等

3)由於即使刪除病毒文件不排除有潛伏病毒,所以最好是把機器備份數據之後重裝一下

發現一個病毒文件你刪了他又自動創建怎麼解決

公司的內網某臺linux服務器流量莫名其妙的劇增,用iftop查看有連接外網的情況

針對這種情況一般重點查看netstat連接的外網ip和端口。

用lsof -p pid可以查看到具體是那些進程,哪些文件

經查勘發現/root下有相關的配置conf.n hhe兩個可疑文件,rm -rf後不到一分鐘就自動生成了

由此推斷是某個母進程產生的這些文件。所以找到母進程就是找到罪魁禍首

查殺病毒最好斷掉外網訪問,還好是內網服務器,可以通過內網訪問

斷了內網,病毒就失去外聯的能力,殺掉它就容易的多

怎麼找到呢,找了半天也沒有看到蛛絲馬跡,沒辦法只有ps axu一個個排查

方法是查看可以的用戶和和系統相似而又不是的冒牌貨,果然,看到了如下進程可疑

看不到圖片就是/usr/bin/.sshd

於是我殺掉所有.sshd相關的進程,然後直接刪掉.sshd這個可執行文件

然後才刪掉了文章開頭提到的自動復活的文件

總結一下,遇到這種問題,如果不是太嚴重,儘量不要重裝系統

一般就是先斷外網,然後利用iftop,ps,netstat,chattr,lsof,pstree這些工具順藤摸瓜

一般都能找到元兇。但是如果遇到諸如此類的問題

/boot/efi/EFI/redhat/grub.efi: Heuristics.Broken.Executable FOUND,個人覺得就要重裝系統了

141、說說TCP/IP的七層模型

應用層 (Application):

網絡服務與最終用戶的一個接口。

協議有:HTTP FTP TFTP SMTP SNMP DNS TELNET HTTPS POP3 DHCP

表示層(Presentation Layer):

數據的表示、安全、壓縮。(在五層模型裏面已經合併到了應用層)

格式有,JPEG、ASCll、DECOIC、加密格式等

會話層(Session Layer):

建立、管理、終止會話。(在五層模型裏面已經合併到了應用層)

對應主機進程,指本地主機與遠程主機正在進行的會話

傳輸層 (Transport):

定義傳輸數據的協議端口號,以及流控和差錯校驗。

協議有:TCP UDP,數據包一旦離開網卡即進入網絡傳輸層

網絡層 (Network):

進行邏輯地址尋址,實現不同網絡之間的路徑選擇。

協議有:ICMP IGMP IP(IPV4 IPV6) ARP RARP

數據鏈路層 (Link):

建立邏輯連接、進行硬件地址尋址、差錯校驗等功能。(由底層網絡定義協議)

將比特組合成字節進而組合成幀,用MAC地址訪問介質,錯誤發現但不能糾正

物理層(Physical Layer):

是計算機網絡OSI模型中最低的一層

物理層規定:爲傳輸數據所需要的物理鏈路創建、維持、拆除

而提供具有機械的,電子的,功能的和規範的特性

簡單的說,物理層確保原始的數據可在各種物理媒體上傳輸。局域網與廣域網皆屬第12層

物理層是OSI的第一層,它雖然處於最底層,卻是整個開放系統的基礎

物理層爲設備之間的數據通信提供傳輸媒體及互連設備,爲數據傳輸提供可靠的環境

如果您想要用盡量少的詞來記住這個第一層,那就是“信號和介質”

142、你常用的Nginx模塊,用來做什麼

rewrite模塊,實現重寫功能
access模塊:來源控制
ssl模塊:安全加密
ngx_http_gzip_module:網絡傳輸壓縮模塊
ngx_http_proxy_module 模塊實現代理
ngx_http_upstream_module模塊實現定義後端服務器列表
ngx_cache_purge實現緩存清除功能

143、請列出你瞭解的web服務器負載架構

Nginx
Haproxy
Keepalived
LVS
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章