常见运维面试题

1、windows远程登录的几种方法

答案 : Xshell、FTerm, PuTTY, SecureCRT。

2、Linux的远程登录方式 : SSH(全称OpenSSH)、dbclient
服务程序 : dropbear —> sshd

客户程序 : dbclient —> ssh

密钥生产程序 :dropbearkey

编译安装 : # ./configure --prefix=/usr/local/dropbear --sysconfdir=/etc/dropbear --disable-pam

                      # make PROGRAMS-"dropbear dropbear dbclient dropbearkey dropbearconvert scp"

                     # make PROGRAMS-"dropbear dropbear dbclient dropbearkey dropbearconvert scp" install

配置文件

         sshd : /tc/ssh/sshd_config

           获取帮助 :man sshd_config

        ssh : /etc/ssh/ssh_config

           获取帮助 :man ssh_config

命令远程连接工具 :Xshell、SecureCRT、Putty、SSH Secure Shell Client等

图形远程连接工具 :xmanager(需安装配置服务并打开177端口)、VNC-Viewer(linux需安装vncserver)、windows自带的远程桌面(linux需安装xrdp和vnc)

3、ping结果中TTL是什么意思

答案 : TTL是生存时间的意思,就是说这个ping的数据包能在网络上存在多少时间。

linux系统常用监控工具 : top , htop,iotop ,iftop

LINUX系统软件安装和卸载的常见方法 :

                                              A 、rpm -e XXX.rpm

                                              B、yum remove XXX.rpm          非常不建议使用,卸载过程会将待卸载的软件包所依赖的软件包一并卸载掉,很容易造成系统缺少某些包而崩溃等问题

                                              C、源码包卸载:cd命令进入编译后的软件目录,即安装时的目录,执行make uninstall命令即可;或者直接删除安装目录

4、查看cpu的命令

 more /proc/cpuinfo grep "model name"

grep “model name” /proc/cpuinfo

   top -n 2 | grep Cpu



    # free -m 

    # vmstat -t 1

cat /proc/cpuinfo # 查看CPU信息

查看CPU信息(型号)

查看CPU型号和频率

cat /proc/cpuinfo | grep name | cut -f2 -d: | uniq -c

  8  Intel(R) Xeon(R) CPU            E5410   @ 2.33GHz 

(看到有8个逻辑CPU, 也知道了CPU型号)

查看cpu的数量和cpu的具体核心是多少

cat /proc/cpuinfo | grep physical | uniq -c

  4 physical id      : 0 
  4 physical id      : 1 

(说明实际上是两颗4核的CPU)

查看总内存的方法

(1)、第一种方法:top命令法

PID:进程的ID  USER:进程所有

   PR:进程的优先级别,越小越优先被执

   NInice:

   VIRT:进程占用的虚拟内

   RES:进程占用的物理内

   SHR:进程使用的共享内

  S:进程的状态。S表示休眠,R表示正在运行,Z表示僵死状态,N表示 该进程优先值为负

   %CPU:进程占用CPU的使用

   %MEM:进程使用的物理内存和总内存的百分

   TIME+:该进程启动后占用的总的CPU时间,即占用CPU使用时间的累加值

   COMMAND:进程启动命令名称

(2)、第二种方法:free命令法

(3)、第三种方法:通过proc虚拟文件系统,来直接获取总内存数。

head /proc/meminfo

注意 : 查看RAM使用情况最简单的方法是通过/proc/meminfo。

(4)、第四种方法:

输入:gnome-system-monitor

GNOME System Monitor 是一个显示最近一段时间内的CPU、内存、交换区及网络的使用情况的视图工具。它还提供了一种查看CPU及内存使用情况的方法。

(5)、第五种方法:输入:ps aux --sort -rss

(6)、第六种方法:输入:vmstat -s

vmstat命令显示实时的和平均的统计,覆盖CPU、内存、I/O等内容。例如内存情况,不仅显示物理内存,也统计虚拟内存。

查看目录和文件占用空间–du

查看各挂载点空间–df

查看内存可用情况–free

查看进程的内存使用情况–pmap

查看虚拟内存统计信息–vmstat

查看进程间关系–pstree

上面的命令,共同点 : 都是从系统文件中获取的,例如/proc/meminfo保存了内存相关信息,/proc/net/dev保存网络流量相关信息。只是,它们都是静态数值。

watch命令来动态地观察这些信息,例如:

watch -n 1 cat /proc/meminfo

watch -n 1 cat /proc/net/dev

上面的命令表示,每隔一秒执行一次cat /proc/meminfo或cat /proc/net/dev,因此我们可以看到内存信息或网卡流量信息在实时刷新。

ps -A 显示所有进程信息

ps -ef 显示所有进程基本信息

ps -u root 显示指定用户的进程

ps -ef|grep java 查看指定进程名相关信息

ps -aux 查看进程占用内存,cpu利用率等信息

ps -elf 显示线程相关信息

ps -ejH 查看进程间的关系

ps -aux|more 进程太多时分页显示

ls -lh 以易读方式列出当前目录文件大小

ls -lR 递归列出当前目录以及子目录的文件

ls -lt #按文件修改时间排序
ls -alS #按文件大小排序
ls -X #按扩展名排序

ls -l | grep “^-” | wc -l #计算当前目录下文件数量
ls -lR | grep “^-” | wc -l #包括子目录
ls -lR | grep “^d” | wc -l #计算当前目录下的目录数量,且不包括.和…
ls -lR | grep “^l” | wc -l #计算当前目录下的链接数量

pgrep命令 ——查询进程信息

pstree -aup 命令可以查看当前系统的进程树

列出目录下所有文件的完整路径

ls -lR |grep ‘^-’ |awk ‘{print “/LTE/” $9}’ #列出LTE目录下所有文件完整路径,$9代表第9列,即文件名,-R,递归子目录

ls -lR |grep ‘^-’ |awk ‘{print “/LTE/” $1 " " $9 }’ ##打印第一列和第九列

^-也可以改为以下几种:

^l 列出目录下所有链接
1 列出目录下所有文件和链接
^d 列出目录下所有目录
参考链接 : https://jingyan.baidu.com/article/ea24bc39e6e090da62b33191.html

5、Linux中限制用户访问权限的3种方法?

答案 :第一种:使用chmod更改特定目录的权限。这能起到限制特定目录被某些人访问的作用,限定某个用户的目的也能达到,但是会误伤其他用户。
第二种:使用linux容器,例如lxc。耗费空间,设置稍显麻烦。
第三种:使用setfacl命令设定访问控制。

更多介绍链接 : https://blog.csdn.net/zzg1229059735/article/details/50846602/

6、linux禁止用户远程登录的方法

答案 : 1.在新添加一个新用户的时候就指定这个用户不能远程登录

或者 禁止个别用户登录。比如禁止zgsj用户登录。

2、通过修改/etc/passwd文件中用户登录的shell来实现linux禁止用户登录

vi /etc/passwd

7、SSH限制远程登录的 方法?

答案 : 1、修改SSH默认端口

//修改防火墙配置
vi /etc/sysconfig/iptables
//启用888端口
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 888 -j ACCEPT
//重启防火墙
/etc/init.d/iptables restart

2、禁止ROOT远程登录

//先增加一个普通权限的用户
useradd phpha_com
passwd phpha_com
//禁止ROOT远程SSH登录
vi /etc/ssh/sshd_config
//修改
PermitRootLogin yes
//改为
PermitRootLogin no
//重启sshd服务
service sshd restart

远程管理用普通用户phpha_com登录,然后用 su root 切换到root用户拿到最高权限

3、限制SSH登录IP地址

         <1> 添加允许访问的IP

                     vi /etc/hosts.allow
                    sshd: 115.183.13.130

      <2> 禁止其它的所有IP

                    vi /etc/hosts.deny
                   sshd: ALL      

8、路由器处理数据包的两个过程 ?

答案 : 一、Routing Process

二、Switching Process:

进程与线程的区别

线程是程序执行的最小单位,而进程是操作系统分配资源的最小单位;
一个进程由一个或多个线程组成,线程是一个进程中代码的不同执行路线;
进程之间相互独立,但同一进程下的各个线程之间共享程序的内存空间(包括代码段、数据集、堆等)及一些进程级的资源(如打开文件和信号),某进程内的线程在其它进程不可见;
调度和切换:线程上下文切换比进程上下文切换要快得多。

如何修改LINUX的IP地址、网关和主机名 :

9、Quidway系列路由器在执行数据包转发时2,下列那些没有发生变化?

答案 : 源网络地址

10、在PPP的 协商过程中,本端路由器合适验证对路由器相应接口工在MP方式?

答案 : LCP协商过程中

11、isdn b信道速率是?

答案 : 64kbps

12、dhcp客户端是使用地址()来申请一个新的IP地址的?

答案 : 0.0.0.0

13、路由器中,IPX地址0XFFFFFFFE表示 ()

答案 : 网内广播地址

14、在Quidway路由器上如何查看e0IPX接口 ()

答案 : show ipx interface

15、以太网交换机端口的工作模式

答案 : 全双工、半双工、自动协商。

16、交换机以太网端口共有三种链路类型 ?

答案 : Access、Trunk和Hybrid。

 Access类型的端口只能属于1个VLAN,一般用于连接计算机的端口;
 Trunk类型的端口可以属于多个VLAN,可以接收和发送多个VLAN的报文,一般用于交换机之间连接的端口;
 Hybrid类型的端口可以属于多个VLAN,可以接收和发送多个VLAN的报文,可以用于交换机之间连接,也可以用于连接用户的计算机。

注意 : trunk是多个vlan通过,access是单个vlan

更多介绍 : https://zhidao.baidu.com/question/585529506334992765.html?qbl=relate_question_7&word=��̫���������˿ڵĹ���ģʽ

17、交换机上的端口类型 ?

答案 : 以太网、令牌环、FDDI还是ATM等类型

快速以太网交换机端口类型一般包括10Base-T、100Base-TX、100Base-FX。

18、在Cisco交换机中,Trunk的作用是什么?Trunk主要有哪两种封装方式?

答案 : TRUNKING是用来在不同的交换机之间进行连接,以保证在跨越多个交换机上建立的同一个VLAN的成员能够相互通讯。其中
交换机之间互联用的端口就称为TRUNK端口。

ISL和802.Q,注意 : CISCO2950并不支持ISL

19、查看linux版本的三种常用方法

(1)、 lsb_release -a 可列出所有版本信息

(2)、cat|more /etc/redhat-release 只适合Redhat系的Linux

(3)、cat /etc/issue

注意:第(2)(3)两种方法只对Redhat Linux有效

查看内核版本的命令 (两种方法):

  cat /proc/version

uname -a

查看windows版本的三种常用方法

(1)、按组合键win+r打开运行,输入winser

(2)、按组合键win+r打开运行,输入msinfo32.exe

(3)、右击电脑–选中属性

查看windows版本的CPU位数常用方法

(1、按组合键win+r打开运行,输入dxdiag

(2)、按组合键win+r打开运行,输入cmd,输入systeminfo

(3)、右键点击“计算机”然后选择“属性”

20、ssh连接不上的一些问题

ssh连接不上2种情况:

ssh: connect to host tw07323.sandai.net port 22: Connection refused

这种情况大家应该经常会见到,一般原因是sshd没有开启,建议打开sshd进程;或者是ssh做了限制。

ssh_exchange_identification: Connection closed by remote host

1.检查 /etc/hosts.deny 和 /etc/hosts.allow 里面是否屏蔽了某些帐户;
2.删除 ~/.ssh/known_hosts 里面的相关服务器条目试一下
3.在某些发行版上升级 glibc 或 openssl 等软件包以后需要重启一下 sshd;
4.由于 ssh 试探或者 ssh 连结数太多,/etc/ssh/sshd_config 里面的 MaxStartups 默认参数配置不够

5./var/empty/sshd 目录的权限给的太大比如说777,我们可以把它改成744然后在重启ssh进程,然后再连接应该就可以。

这是ssh的经常出现的问题,不能启动ssh,其原因是库文件有问题我们把他去掉就好了:

去掉/etc/ld.so.conf里那行,然后运行ldconfig

然后ssh就可以正常的启动了。

21、常见协议体系结构

22、系统层面常见的命令

cpu方面

vmstat、sar top、htop、nmon、mpstat

nmon介绍 : http://os.51cto.com/art/201408/447207.htm

内存

free 、ps -aux 、

IO设备(磁盘、网络)

iostat 、 ss 、 netstat 、 iptraf、iftop、lsof、

vmstat 命令说明:

Procs:r显示有多少进程正在等待CPU时间。b显示处于不可中断的休眠的进程数量。在等待I/O
Memory:swpd显示被交换到磁盘的数据块的数量。未被使用的数据块,用户缓冲数据块,用于操作系统的数据块的数量
Swap:操作系统每秒从磁盘上交换到内存和从内存交换到磁盘的数据块的数量。s1和s0最好是0
Io:每秒从设备中读入b1的写入到设备b0的数据块的数量。反映了磁盘I/O
System:显示了每秒发生中断的数量(in)和上下文交换(cs)的数量
Cpu:显示用于运行用户代码,系统代码,空闲,等待I/O的CPU时间
iostat命令说明

实例命令: iostat -dk 1 5

iostat -d -k -x 5 (查看设备使用率(%util)和响应时间(await))

tps:该设备每秒的传输次数。“一次传输”意思是“一次I/O请求”。多个逻辑请求可能会被合并为“一次I/O请求”。
iops :硬件出厂的时候,厂家定义的一个每秒最大的IO次数,"一次传输"请求的大小是未知的。
kB_read/s:每秒从设备(drive expressed)读取的数据量;
KB_wrtn/s:每秒向设备(drive expressed)写入的数据量;
kB_read:读取的总数据量;
kB_wrtn:写入的总数量数据量;这些单位都为Kilobytes。
1.4.4 系统层面问题解决办法

你认为到底负载高好,还是低好呢?

在实际的生产中,一般认为 cpu只要不超过90%都没什么问题 。

当然不排除下面这些特殊情况:

问题一:cpu负载高,IO负载低

内存不够
磁盘性能差
SQL问题 ------>去数据库层,进一步排查sql问题
IO出问题了(磁盘到临界了、raid设计不好、raid降级、锁、在单位时间内tps过高)
tps过高: 大量的小数据IO、大量的全表扫描
问题二:IO负载高,cpu负载低

大量小的IO 写操作:
autocommit ,产生大量小IO
IO/PS,磁盘的一个定值,硬件出厂的时候,厂家定义的一个每秒最大的IO次数。
大量大的IO 写操作
SQL问题的几率比较大
问题三:IO和cpu负载都很高

硬件不够了或sql存在问题

23、查看宽带使用的命令

监控总体带宽使用――nload、bmon、slurm、bwm-ng、cbm、speedometer和netload
监控总体带宽使用(批量式输出)――vnstat、ifstat、dstat和collectl
每个套接字连接的带宽使用――iftop、iptraf、tcptrack、pktstat、netwatch和trafshow
每个进程的带宽使用――nethogs
更多介绍 : http://os.51cto.com/art/201404/435279.htm#topx

24、局域网监控工具

1.Solarwinds Network Performance Monitor (可免费试用)

2.WhatsUp Gold (可免费试用)

3.Paessler PRTG (可免费试用)

4.OpManager

5.Nagios Core and Nagios XI

6.Pandora NMS

7.Zenoss

8.Dynatrace

9.ConnectWise Automate

10.Zabbix

更多介绍 : http://netsecurity.51cto.com/art/201808/581172.htm

25、查看io负载、cpu使用情况

答案 : 查看cpu使用情况 #iostat -c 1 10 #命令的含义是查看cpu,每秒搜集一次,共搜集10次。

查看磁盘的读写情况 #iostat -d 1 10

cpu和磁盘读写一起看 #iostat -c -d 1 10 = iostat -x 1 10

#iostat #查看/显示所有设备负载情况

yum安装 : yum -y install sysstat

源码安装 : rpm -ivh systat-9.0.4-33.el.x86_64.rpm

26、填空

1、在Linux系统中,以 文件 方式访问设备。

2、Linux内核引导时,从文件 /etc/fstab 中读取要加载的文件系统

3、Linux文件系统中每个文件用 i节点 来标识

4、全部磁盘块由四个部分组成,分别为 引导块、专用块、i节点块、数据存储块

5、前台起动的进程使用 ctrl+c 禁止

6、安装Linux系统对硬盘分区时,必须有两种分区类型:文件系统 和 交换分区。

7、网络管理的重要任务是 监控 和 控制

8、内核分为 文件管理系统、I/O管理系统 、内存管理系统 和进程管理系统 等四个子系统。

27、linux下常见的网络接口

答 :

28、Linux系统缺省的运行级别

0.关机

1.单机用户模式

2.字符界面的多用户模式(不支持网络)

3.字符界面的多用户模式

4.未分配使用

5.图形界面的多用户模式

6.重启

29、Linux系统是由那些部分组成?

Linux系统内核,shell,文件系统和应用程序四部分组

30、硬链接和软链接有什么区别

1)硬链接不可以跨分区,软件链可以跨分区

2)硬链接指向一个i节点,而软链接则是创建一个新的i节点

3)删除硬链接文件,不会删除原文件,删除软链接文件,会把原文件删除

31、如何规划一台Linux主机,步骤是怎样?

1、确定机器是做什么用的,比如是做web、db、还是游戏服务器

2、确定好之后,就要定系统需要怎么安装,默认安装哪些系统、分区怎么做

3、需要优化系统的哪些参数,需要创建哪些用户等等的

32、查看系统当前进程连接数?

netstat -an | grep ESTABLISHED | wc -l

33、如何在/usr目录下找出大小超过10MB的文件?

find /usr -type f -size +10240k

34、添加一条到192.168.3.0/24的路由,网关为192.168.1.254?

route add -net 192.168.3.0/24 netmask 255.255.255.0 gw 192.168.1.254

35、如何在/var目录下找出90天之内未被访问过的文件?

find /var ! -atime -90

36、如何在/home目录下找出120天之前被修改过的文件?

find /home -mtime +120

37、在整个目录树下查找文件“core”,如发现则无需提示直接删除它们。

find / -name core -exec rm {} ;

38、有一普通用户想在每周日凌晨零点零分定期备份/user/backup到/tmp目录下,该用户应如何做?

crontab -e

0 0 * * 7 /bin/cp /user/backup /tmp

39、防火墙有几张表几条链?

4张表,5条链

40、一台Linux系统初始化环境后需要做一些什么安全工作?

1、添加普通用户登陆,禁止root用户登陆,更改SSH端口号

2、服务器使用密钥登陆,禁止密码登陆

3、开启防火墙,关闭SElinux,根据业务需求设置相应的防火墙规则

4、装fail2ban这种防止SSH暴力破击的软件

5、设置只允许公司办公网出口IP能登陆服务器(看公司实际需要)

6、设置nginx_waf模块防止SQL注入

7、把Web服务使用www用户启动,更改网站目录的所有者和所属组为www

8、修改历史命令记录的条数为10条

41、一台Linux系统初始化环境后需要做一些什么安全工作?

1、添加普通用户登陆,禁止root用户登陆,更改SSH端口号

2、服务器使用密钥登陆,禁止密码登陆

3、开启防火墙,关闭SElinux,根据业务需求设置相应的防火墙规则

4、装fail2ban这种防止SSH暴力破击的软件

5、设置只允许公司办公网出口IP能登陆服务器(看公司实际需要)

6、设置nginx_waf模块防止SQL注入

7、把Web服务使用www用户启动,更改网站目录的所有者和所属组为www

8、修改历史命令记录的条数为10条

42、什么是网站数据库注入?怎么过滤与预防网站数据库注入?

应用程序存在安全隐患。用户可以提交一段数据库查询代码,根据程序返回的结果,获得某些他想得知的数据,这就是所谓的SQL注入。

SQL注入是从正常的WWW端口访问,而且表面看起来跟一般的Web页面访问没什么区别,如果管理员没查看日志的习惯,可能被入侵很长时间都不会发觉。

过滤与预防:

数据库网页端注入这种,可以考虑使用nginx_waf做过滤与预防

43、用Shell编程,判断一文件是不是字符设备文件,如果是将其拷贝到 /dev 目录下。

#!/bin/bash

read -p "Input file name: " FILENAME

if [ -c “$FILENAME” ];then

cp $FILENAME /dev

fi

44、设计一个shell程序,添加一个新组为class1,然后添加属于这个组的30个用户,用户名的形式为stdxx,其中xx从01到30。

#!/bin/bash

groupadd class1

for((i=1;i<31;i++))

do

    if [ $i -le 10 ];then

            useradd -g class1 std0$i

    else

            useradd -g class1 std$i

    fi

done

45、编写shell程序,实现自动删除50个账号的功能。账号名为stud1至stud50。

#!/bin/bash

for((i=1;i<51;i++))

do

            userdel -r stud$i

done

46、linux常见系统发行版本及常见的服务器品牌和配置有哪些

1、发行操作系统 : CentOS Redhat Ubuntu SUSE

2、服务器品牌 : DELL R720 ,IBM 3650, HP DL360

3、2颗6核CPU-Xeon至强E5-2630 2.4Ghz , 2U 服务器

应用服务器 : 300Gx2 RAID 1,容量为300G

数据库服务器 : 4x300G ,RAID 10 ,容量为600G

47、LINUX系统开机启动流程是什么?

1)主机加电自检,加载BIOS硬件信息

2)读取MBR的引导文件(grub,lilo)

3)引导linux内核

4)运行第一个进程init(进程号永远为1)

5)进入相应的运行级别

6)运行终端,输入用户名和密码

硬件加电–>BIOS检测–>加载MBR硬盘分区–>加载Linux内核–>加载init启动级别–>加载rc.d/init进程—>加载rc.local–>进入mini-login

48、系统密码忘记破解的方法

按e编辑–kernel–e--末尾加入single或者1–回车–b重启–进入单用户,执行命令passwd,输入两次密码–reboot就OK了

如果磁盘出现read only 只读状态,进入rescue模式,fsck.ext4

49、apache有几种工作模式,分别简述两种工作模式及其有缺点?

两种工作模式 : worker和prefork模式

Work模式 : 以多个线程提供服务,所有的线程共享内存空间,一个down掉,整个进程崩溃,适合高并发的场景。

Prefork模式 : 多个进程提供服务,比较稳定,占用内存高,提供中小访问并发。

整合的方法 :

编译PHP模块 ,需要在apache配置文件中加入引用模块 :

LoadModule modules/php5.so

AddType application/x-httpd-php .php

Apache虚拟机

NameVirtualHost *:80 关键行

50、一个EXT4的文件分区,当用touch新建文件时报错,错误信息是磁盘已满,但是使用df -h查看分区信息时只使用了50%,请分析具体原因 ?

答 : Block块文件,inode存放我们基础的信息数据,权限,大小的信息。

挂载移动硬盘 : mount -t ntfs-3g /dev/sdb1 /mnt

硬盘分区 : fdisk /dev/sdb -->n—p---回车—w写入

mkfs.ext4 /dev/sdb1;最后挂载使用。

51、MySQL数据库的备份还原是怎么做的?

答 : mysqldump < 200G 数据,都可以使用mysqldump备份,会锁表,

52、Nagios和cacti的区别是什么,你们公司主要用于监控什么?Nagios监控URL关键词做过吗?

答 :Nagios和Cacti监控的项目一致,可以监控服务器CPU、内存、硬盘、网络流量等等,

区别是Nagios主要基于Nagios插件监控服务器主机状态监控,及时发送报警信息,而Cacti是基于rrdtool绘图通过snmpz抓取数据,更偏向网络流量图形展示;

53、MySQL主从原理?如何实现主从复制,简单步骤?

1)Slave上执行slave start,Slave IO线程会通过在Master创建的授权用户连接上至Master,并请求master从指定的文件和位置之后发送bin-log日志内容;

2)Master接受到来自slave IO线程的请求后,master IO线程根据slave发送的指定bin-log日志position点之后的内容,然后返回给slave的IO线程。

3)、返回的信息中除了bin-log日志内容外,还有master最新的bin-log文件名以及在binlog中的下一个指定更新position点;

4)、slave IO线程接受收到信息后,将接受到的日志内容依次添加到

54、mysql创建用户和数据库均为zabbix,。同时授权192.168.1.11,ip通过zabbix用户和密码jfedu.net实现完全访问?

答 : mysql

create database zabbix

grant all on zabbix.* to zabbix@‘192.168.1.11’ identified by “jfedu.net

55、LAMP如何分开多台部署,如果有多台个网站怎么实现?

编译PHP的时候,执行./configure --help | grep mysql -with-pdo-mysql=mysqllnd --with-mysql=mysqlnd --with-mysqli=mysqlnd

56、Cacti监控网卡流量最大100M,这是为什么?

答 : 在Ccacti管理页面选择Console->Data Source

找到需要修改的端口(即流量大于100M的端口),修改Output Type ID 为In/Out bits (64-bit counters) (原来为In/Out bits )

57、OSI参考模型和TCP/IP参考模型的区别?

会话层与表示层的基本功能:
会话层:在两个结点之间建立,维护和释放面向用户的连接,并对会话进行管理控制,保证会话数据可靠传送。
表示层:负责处理在两个内部数据表示结构不同的通信系统交换信息的表示格式。为数据加密解密以及提高数据的传输速率提供必要的数据压缩和解压等功能。

58、bin-log日志如何恢复mysql数据?例如bin-log文件名为 :mysql-bin 0001.

答 : mysqlbinlog mysql-bin.0001 > backup.sql

source backup.sql

59、crontab在11月份内,每天的早上6点到12点钟,每隔2小时执行一次/usr/bin/httpd.sh怎么实现?

答 :0 6-12/2 * 11 * bash /usr/bin/httpd.sh

60、匹配文本中的word字符,并打印出改行及下面的5行?

答 :grep -A5 word filename

61、在每周6的凌晨3:15执行/home/shell/collect.pl,并将标准输出和标准错误输出到/dev/null设备,请写出crontab中的语句?

答 : 15 3 * * 6 /home/shell/collect.pl > /dev/null 2>&1

62、写一个脚本将当前目录下大于100k的文件移动至/tmp下

答 : find -size +100k -exec mv {} /tmp;

63、利用sed命令将test.txt中所有的回车替换成空格?

答 : sed -i ‘s/\r/ /g’ test.txt

64、查询file1以abc结尾的行?

答 : grep -n “abc$” file1

查询file1里面空行的所在行号命令 :

答 : grep -n ^$ file

65、打印出file1文件第1到第三行?

答 : sed -n ‘1,3p’ file1用head -3 file1也可以。

66、用一条命令查看目前系统已启动服务所监听的端口?如何查看已知某端口号占用的进程?

答 : netstat -antl | grep “LISTEN”

lsof -i :80

ps -ef | grep java

67、查找/data目录30天之前修改过的文件并删除?

答 : find /data -type f -mtime +30 | xargs rm -rf {} ;

68、dmesg命令中看到ip_conntrack;table full,dropping packet.如何解决?

答 : 加大ip_conntrack_max的值;

降低ip_conntrack_timeout的时间;

69、查询file1里面空行的所在行号?

grep -n “^$” file1

70、使用vim编辑器将httpd.conf文件中/usr/local/apache字段替换为/etc/httpd/,请写成替换方法:

答 :

:%s/\usr/\local/apache//etc/http//g

:%s#/usr/local/apache#/etc/httpd/#g

:%s/usr/local/apache:/etc/httpd/:g

71、统计nginx访问日志,访问量排在前20的ip列表

答 : netstat -an | awk ‘/^tcp/ {print $1}’ | sort |uniq -c | sort -nt |head -20

72、基于sed将selinux状态设置为disabled,请写出方法:

答 : sed -i ‘s/SELINUX/s/enforcing/disabled/g’

/etc/selinux/config

73、你们公司大概有多少台服务器?构架是怎么样的?

答 : 服务器总数20台:nginx + keepalived 2台,LAMP构架8台,MySQL数据库1主2从(3台),其他系统LAMP、nagios、cacti、管理机共7台。

74、你们公司的PV、UV、出口带宽分别是多少?

答 : PV10w、UV1w、带宽20M

75、Linux查看Dell服务器型号

答案 : 命令 : dmidecode | grep “Product Name” (CentOS 6.2下测试通过)

76、查看mysql版本的四种方法

答案 : 1、#mysql -V

          2、在mysql中:mysql> status;

         3、$ mysql --help | grep Distrib

         4、mysql> select version();

77、Apache工作方式

答案  : prefork模式(默认)

work模式

78、常用命令查看硬盘和分区

df -h

fdisk -l

79、查看系统安装的时候装的软件包

cat -n /root/install.log

more /root/install.log wc -l

查看现在已经安装了那些软件包

rpm -qa

80、使用CentOS常用命令查看selinux情况

sestatus

使用CentOS常用命令查看selinux情况

sestatus

81、命令查看ip,mac地址?

查看 网关 cat /etc/sysconfig/network

查看 DNS cat /etc/resolv.conf

82、使用CentOS常用命令查看默认语言

echo $LANG $LANGUAGE

cat /etc/sysconfig/i18n

83、使用CentOS常用命令查看主机名

hostname

cat /etc/sysconfig/network

84、使用CentOS常用命令查看开机运行时间

uptime

09:44:45 up 67 days, 23:32, …

85、挂载光驱

挂载软硬光区:mount -t /dev/fdxhdax /mnt/目录名

其中::modos–FAT16;vfat–FAT32;ntfs–NTFS;光驱–iso9660

支持中文名:mount -o iocharset=x /dev/hdax /mnt/目录名(其中:x=cp936

  挂载光驱:mount -t auto /dev/cdrom /mnt/cdrom

挂载ISO文件:mount -t iso9660 -o loop xxx.iso /path

解除挂载:umount /mnt/目录名

解除所有挂载:umount -a

86、经常被用于管道的命令

awk, fold, grep, head, nnkf, pr, sed, sort, tail, tee, tr, uniq, wc

87、系统权限及用户授权相关命令(4个)

答案 :

chmod

改变文件或目录权限。

chown

改变文件或目录的属主和属组。

chgrp

更改文件用户组。

umask

显示或设置权限掩码。

88、查看系统用户登陆信息的命令(7个)

whoami

显示当前有效的用户名称,相当于执行id -un命令。

who

显示目前登录系统的用户信息。

w

显示已经登陆系统的用户列表,并显示用户正在执行的指令。

last

显示登入系统的用户。

lastlog

显示系统中所有用户最近一次登录信息。

users

显示当前登录系统的所有用户的用户列表。

finger

查找并显示用户信息。

89、系统管理与性能监视命令(9个)

chkconfig

管理Linux系统开机启动项。

vmstat

虚拟内存统计。

mpstat

显示各个可用CPU的状态统计。

iostat

统计系统IO。

sar

全面地获取系统的CPU、运行队列、磁盘 I/O、分页(交换区)、内存、 CPU中断和网络等性能数据。

ipcs

用于报告Linux中进程间通信设施的状态,显示的信息包括消息列表、共享内存和信号量的信息。

ipcrm

用来删除一个或更多的消息队列、信号量集或者共享内存标识。

strace

用于诊断、调试Linux用户空间跟踪器。我们用它来监控用户空间进程和内核的交互,比如系统调用、信号传递、进程状态变更等。

ltrace

命令会跟踪进程的库函数调用,它会显现出哪个库函数被调用。

90、进程管理相关命令

bg、fg、jobs、kill、killall、pkill、crontab、ps、pstree

91、使用netstat命令去查TIME_WAIT状态的连接状态,查看当前TCP连接的状态和对应的连接数量:

答案 : netstat -n | awk ‘/^tcp/ {++S[$NF]} END {for(a in S) print a, S[a]}’

92、查看cpu是32位还是64位

答案 : getconf LONG_BIT

93、linux和windows同步命令

答案 : 执行命令:ntpdate 192.168.1.32

每10分钟linux就和服务端同步一次。

vi date.cron加入下面要运行的命令和要定期执行的时间
*/10 * * * * /usr/sbin/ntpdate 192.168.1.32

94、如何查看http的并发请求数与其TCP连接数

答案 :

   并发请求数。

       ps aux|grep httpd|grep -v grep|wc -l

 查看httpd服务的TCP连接数

      netstat -an|grep ":80 "|grep -v grep|wc -l

95、如何用tcpdump嗅探80端口的访问看看谁最高?

答案 : tcpdump -i eth0 -tnn dst port 80 -c 1000 | awk -F"." ‘{print $1"."$2"."$3"."$4}’ | sort | uniq -c | sort -nr |head -20

96、如何查看/var/log/目录下的文件数?

答 :find /var/log -type f | wc -l

97、如何查看linux系统每个IP的连接数?

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

查看系统tcp连接中各个状态的连接数。

1

netstat -an | awk ‘/^tcp/ {++S[$NF]} END {for(a in S) print a, S[a]}’

查看和本机23端口建立连接并状态在established的所有ip

1

netstat -an |grep 23 |grep ESTA |awk ‘{print$5 “\n”}’ |awk ‘BEGIN {FS=":"} {print $1 “\n”}’ |sort |uniq

说明:内网Linux服务器,以23 telnet连接服务为例

查询连接到指定端口的客户端IP
netstat -aon|grep 8096

查看Web服务器进程连接数:
netstat -antp | grep 80 | grep ESTABLISHED -c

查出哪个IP地址连接最多,将其封了。

netstat -na|grep ESTABLISHED|awk {print $5}|awk -F: {print $1}|sort|uniq -c|sort -r +0n

netstat -na|grep SYN|awk {print $5}|awk -F: {print KaTeX parse error: Expected 'EOF', got '}' at position 2: 1}̲|sort|uniq -c|s…NF]} END {for(a in S) print a, S[a]}’

说明:

SYN_RECV表示正在等待处理的请求数;

ESTABLISHED表示正常数据传输状态;

TIME_WAIT表示处理完毕,等待超时结束的请求数。

查看Nginx运行进程数
ps -ef | grep nginx | wc -l
返回的数字就是nginx的运行进程数,如果是apache则执行
ps -ef | grep httpd | wc -l

查看Web服务器(Nginx Apache)的并发请求数及其TCP连接状态:
netstat -n | awk ‘/^tcp/ {++S[$NF]} END {for(a in S) print a, S[a]}’
netstat -n|grep ^tcp|awk ‘{print KaTeX parse error: Expected 'EOF', got '}' at position 3: NF}̲'|sort -nr|uniq…NF]} END {for(key in state) print key,“t”,state[key]}’

98、统计出apache的access.log中访问量最多的5个IP

答 : cat access.log |awk ‘{print $1}’|uniq -c|sort -n |head 5

99、远程桌面连接超出最大连接数

答 :服务器默认为允许连接数为2个,如果登陆后忘记注销,而是直接关闭远程桌面的话,服务器识别此次登陆还是留在服务器端的。

利用mstsc/console指令进行强行登陆了。打开“运行”框,键入“mstsc/v:xxx.xxx.xxx.xxx(服务器IP)/console”,即可强行登陆到远程桌面了。

100、如何查找系统中包含内容mongo的文件,全部打印路径

答 : grep -i “mongo” | wc -l

101、怎么修改内核参数

答 :vi /etc/sysctl.conf 或者 vi /proc/sys

102、shell中在1-39内取随机数

103、限制apache每秒新建连接数为 1,峰值为3

104、显示/etc/inittab中包含了:一个数字:(即两个冒号中间一个数字)的行

105、怎么把脚本添加到系统服务里,即用service来调用?

106、写一个脚本,实现批量添加20个用户,用户名为user01-20,密码为user后面跟5个随机字符

107、写一个脚本,实现判断192.168.1.0/24网络里,当前在线的IP有哪些,能Ping通则认为在线

108、如何让history命令显示具体时间?

答案 : history

export HISTTIMEFORMAT=’%F %T’

https://jingyan.baidu.com/article/a948d6512f3ad70a2dcd2ee2.html

109、mysql连接数太多怎么办?如何设置最大连接数?

答案 : 使用root登录mysql数据库,并输入密码

mysql> mysql -u root -p

查看下当前mysql数据的最大连接数:

mysql> show variables like ‘max_connections’;

设置最大连接数为5000

mysql> SET GLOBAL max_connections = 5000;

查看是否设置成功。

mysql> SHOW VARIABLES LIKE “max_connections”;

退出mysql

mysql> exit;

110、统计80端口连接数

netstat -nat | grep -i “80” | wc -l

统计httpd协议连接数

ps -ef | grep httpd | wc -l

统计已连接上的,状态为“established’

netstat -na | grep ESTABLISHED | wc -l

查出每个IP地址连接数

netstat -na | grep ESTABLISHED | awk ‘{print$5}’ | awk -F : ‘{print$1}’ |sort |uniq -c | sort -r

111、查看Linux系统最大打开文件数限制

cat /proc/sys/fs/file-max

网络端口限制修改

在vi /etc/sysctl.conf中加上下面这一行

net.ipv4.ip_local_port_range = 1024 65000

sysctl修改内核参数马上生效命令如下

sysctl -p

设置系统的链接数,通过vi /etc/security/limits.conf命令

112、linux如何挂在windows下的共享目录
mount.cifs //192.168.1.3/server /mnt/server -o user=administrator,pass=123456
linux 下的server需要自己手动建一个 后面的user与pass 是windows主机的账号和密码 注意空格 和逗号

113、查看http的并发请求数与其TCP连接状态
netstat -n | awk ‘/^tcp/ {++b[$NF]} END {for(a in b) print a, b[a]}’
还有ulimit -n 查看linux系统最大的tcp连接,这里默认1024,不修改这里web服务器修改再大也没用。若要用就修改很几个办法,这里说其中一个:
修改/etc/security/limits.conf

  • soft nofile 10240
  • hard nofile 10240
    重启后生效

114、用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

115、查看当前系统每个IP的连接数

ls /var/log/ -lR| grep “^-” |wc -l

116、查看当前系统每个IP的连接数
netstat -n | awk ‘/^tcp/ {print $5}’| awk -F: ‘{print $1}’ | sort | uniq -c | sort -rn

http://blog.51cto.com/yuangeqingtian/1191651

117、shell下32位随机密码生成
cat /dev/urandom | head -1 | md5sum | head -c 32 >> /pass
将生成的32位随机数 保存到/pass文件里了

118、统计出apache的access.log中访问量最多的5个IP

cat access_log | awk ’{print $1}’ | sort | uniq -c | sort -n -r | head -5

119、编写脚本实现以下功能

每天早上5点开始做备份

要备份的是/var/mylog里所有文件和目录可以压缩进行备份

备份可以保存到别一台器上192、168、1、2 FTP帐号 aaa 密码 bbb

要示每天的备份文件要带有当天的日期标记

答案 :[root@haojiu ~]#cat /root/mylogbak.sh

#!/bin/bash

#scripts for dirbakup and upload to ftp server.

#author by haojiu

#create by

bakdir=mylog

date=date +%F

cd /var

tar zcf KaTeX parse error: Expected group after '_' at position 9: {bakdir}_̲{date}.tar.gz ${bakdir}

sleep 1

ftp -n <<- EOF

open 192.168.142.129 #远程ftp服务器IP

user aaa bbb

put mylog_*.tar.gz

bye

EOF

rm -rf mylog_*.tar.gz #这步之前可以做一个判断,判断文件上传成功再执行rm,留给各位发挥吧。

添加crontab:

crontab -l

00 05 * * * /bin/bash /root/mylogbak.sh #每天早上5点开始执行备份脚本

120、ps aux 中的VSZ代表什么意思,RSS代表什么意思
VSZ:虚拟内存集,进程占用的虚拟内存空间
RSS:物理内存集,进程战用实际物理内存空间

121、检测并修复/dev/hda5fsck用来检查和维护不一致的文件系统。若系统掉电或磁盘发生问题,可利用fsck命令对文件系统进行检查。

用法:fsck -P /dev/hda5

122、忘记密码时如何修改密码

密码修改操作步骤:1、重启系统(reboot、init 6、shutdown -r now)

如何修改启动时默认运行级别 :

[root@localhost ~]# vim /etc//inittab
进入文件后将5改为3之后 , 保存 , 重启 。

123、如何检测并修复/dev/hda5?
fsck用来检查和维护不一致的文件系统。若系统掉电或磁盘发生问题,可利用fsck命令对文件系统进行检查

124、介绍下Linux系统的开机启动顺序
加载BIOS–>读取MBR–>Boot Loader–>加载内核–>用户层init一句inittab文件来设定系统运行的等级(一般3或者
5,3是多用户命令行,5是界面)–>init进程执行rc.syninit–>启动内核模块–>执行不同级别运行的脚本程序–>执行/etc/rc.d/rc.local(本地运行服务)–>执行/bin/login,就可以登录了。

125、符号链接与硬链接的区别
符号链接,也就是软连接 当做是 windows系统里的 快捷方式。
硬链接 就好像是 又复制了一份,举例说明:
ln 3.txt 4.txt 这是硬链接,相当于复制,不可以跨分区,但修改3,4会跟着变,若删除3,4不受任何影响。
ln -s 3.txt 4.txt 这是软连接,相当于快捷方式。修改4,3也会跟着变,若删除3,4就坏掉了。不可以用了。

126、保存当前磁盘分区的分区表
dd 命令是以个强大的命令,在复制的同时进行转换
dd if=/dev/sda of=./mbr.txt bs=1 count=512

127、如何在文本里面进行复制、粘贴,删除行,删除全部,按行查找和按字母查找?
以下操作全部在命令行状态操作,不要在编辑状态操作。
在文本里 移动到想要复制的行 按yy 想复制到哪就移动到哪,然后按P 就黏贴了
删除行 移动到改行 按dd
删除全部 dG 这里注意G一定要大写
按行查找 :90 这样就是找到第90行
按字母查找 /path 这样就是 找到path这个单词所在的位置,文本里可能存在多个,多次查找会显示在不同的位置。

128、手动安装grub
grub-install /dev/sda

修改内核参数
vi /etc/sysctl.conf 这里修改参数
sysctl -p 刷新后可用

129、在1-39内取随机数
expr $[RANDOM%39] +1
RANDOM随机数
%39取余数范围0-38

130、限制apache每秒新建连接数为1,峰值为3
每秒新建连接数 一般都是由防火墙来做,apache本身好像无法设置每秒新建连接数,只能设置最大连接:
iptables -A INPUT -d 172.16.100.1 -p tcp –dport 80 -m limit –limit 1/second -j ACCEPT

查看apache当前并发访问数 :   netstat -an |grep ESTABLISHED |wc -l

查看apache有多少个进程数 :   ps aux |grep httpd|wc -l

统计httpd进程数 : ps -ef|grep httpd|wc -l

统计80端口连接数/当前所有80端口的请求总数 : netstat -nat|grep -i 80|wc -l

打印系统当前网络链接状态 : netstat -an

apache 访问日志access.log 统计IP 和每个地址访问的次数,按访问量列出前10 名 : cat access_log | awk ‘{print $1}’ | uniq -c|sort -rn|head -10

131、显示/etc/inittab中以#开头,且后面跟了一个或者多个空白字符,而后又跟了任意非空白字符的行
grep “#{1,}[]” /etc/inittab

132、显示/etc/inittab中包含了:一个数字:(即两个冒号中间一个数字)的行
grep “:[0-9]{1}:” /etc/inittab

133、怎么把脚本添加到系统服务里,即用service来调用?
在脚本里加入
#!/bin/bash

chkconfig: 345 85 15

description: httpd

然后保存
chkconfig httpd –add 创建系统服务
现在就可以使用service 来 start or restart

134、写一个脚本,实现批量添加20个用户,用户名为user01-20,密码为user后面跟5个随机字符

#!/bin/bash
#description: useradd
for i in seq -f”%02g” 1 20;do
useradd user i e c h o u s e r i echo “user i-echo $RANDOM|md5sum|cut -c 1-5”|passwd –stdinuser$i >/dev/null 2>&1
done

135、写一个脚本,实现判断192.168.1.0/24网络里,当前在线的IP有哪些,能ping通则认为在线

#!/bin/bash
for ip in seq 1 255
do
ping -c 1 192.168.1.$ip > /dev/null 2>&1
if [ ? e q 0 ] ; t h e n e c h o 192.168.1. ? -eq 0 ]; then echo 192.168.1. ip UP
else
echo 192.168.1.$ip DOWN
fi
}&
done
wait

136、写一个脚本,判断一个指定的脚本是否是语法错误;如果有错误,则提醒用户键入Q或者q无视错误并退出其它任何键可以通过vim打开这个指定的脚本

[root@localhost tmp]# cat checksh.sh
#!/bin/bash
read -p “please input check script-> ” file
if [ -f $file ]; then
sh -n $file > /dev/null 2>&1
if [ $? -ne 0 ]; then
read -p “You input $file syntax error,[Type q to exit or Type vim to edit]” answer
case $answer in
q | Q)
exit 0
;;
vim )
vim f i l e ; ; e x i t 0 ; ; e s a c f i e l s e e c h o file ;; *) exit 0 ;; esac fi else echo “ file not exist”
exit 1
fi

137、写一个脚本,要求如何:

创建一个函数,能接受两个参数:
1)第一个参数为URL,即可下载的文件;第二个参数为目录,即下载后保存的位置;
2)如果用户给的目录不存在,则提示用户是否创建;如果创建就继续执行,否则,函数返回一个51的错误值给调用脚本;
3)如果给的目录存在,则下载文件;下载命令执行结束后测试文件下载成功与否;如果成功,则返回0给调用脚本,否则,返回52给调用脚本;

[root@localhost tmp]# cat downfile.sh
#!/bin/bash
url=$1
dir=$2
download()
{
cd $dir >> /dev/null 2>&1
if [ ? n e 0 ] ; t h e n r e a d p ? -ne 0 ];then read -p “ dir No such file or directory,create?(y/n)” answer
if [ “$answer” == “y” ];then
mkdir -p $dir
cd $dir
wget $url 1> /dev/null 2>&1
else
return “51”
fi
fi
if [ $? -ne 0 ]; then
return “52”
fi
}
download $url $dir
echo $?

138、写一个脚本,详细需求如下:

1、创建一个函数,可以接受一个磁盘设备路径(如/dev/sdb)作为参数;在真正开始后面步骤之前提醒用户有危险,并让用户选择是否继续;而后将此磁盘设备上的所有分区清空(提示,使用命令dd if=/dev/zero of=/dev/sdb bs=512 count=1实现,注意其中的设备路径不要写错了;
如果此步骤失败,返回67给主程序;
接着在此磁盘设备上创建两个主分区,一个大小为100M,一个大小为1G;如果此步骤失败,返回68给主程序;
格式化此两分区,文件系统类型为ext3;如果此步骤失败,返回69给主程序;
如果上述过程都正常,返回0给主程序;

2、调用此函数;并通过接收函数执行的返回值来判断其执行情况,并将信息显示出来;

local Darray=(ls /dev/sd[a-z])
for i in D a r r a y ; d o [ [ {Darray};do [[ “ i” == “KaTeX parse error: Expected 'EOF', got '&' at position 7: 1” ]] &̲& Sd=i &&break
done
else
return66
fi

#当匹配成功,进入选择,告诉用户,是否继续,输错的话进入无限循环,当用户选择Y,则清空目标分区,且跳出while循环

while :;do
read -p “Warning!!!This operation will clean $Sd data.Next=y,Quit=n [y|n]:” Choice
case C h o i c e i n y ) d d i f = / d e v / z e r o o f = Choice in y) dd if=/dev/zero of= Sd bs=512 count=1 &> /dev/null &&break || return 67 ;;
n)
exit 88 ;;
*)
echo “Invalid choice,please choice again.” ;;
esac
done

#使用echo传递给fdisk进行分区,如果此命令失败,则跳转出去,错误值68,需要注意的是,有时候这个返回值很诡异,笔者之前成功与否都是返回的1,后来重启之后,就好了,如果慎重的话,可以对创建的分区,进行判断,不过就需要使用其他工具截取相关字段了,虽有些小麻烦,但无大碍

echo-e “n\np\n1\n\n+100M\nn\np\n2\n\n+1024M\nw\n”|fdisk /dev/sdb&> /dev/null || || return 68

#格式化之前,让内核重新读取磁盘分区表,值得注意的是,有的系统版本,使用partprobe无效,譬如笔者的环境是rhel5.8,而rhel6.0以后,这个命令就很危险了,而使用partx -a /dev/sdb则效果更好…此项需慎重,如果格式化失败,则告知把失败的分区定义成变量,且跳出函数,并带出错误值69

partprobe
Part=fdisk -l /dev/$Sd|tail -2|cut -d” ” -f1
for M in ${Part};do
mke2fs -j KaTeX parse error: Expected 'EOF', got '&' at position 3: M &̲> /dev/null && …M &&return 69
done
return 0
}

#下面代码,调用函数,接收函数返回值,根据返回值进行判断哪里出错。

Disk_Mod 1 R e s = 1 Res= ?
[ $Res-eq 0 ] && exit 0
[ $Res-eq 66 ] && echo “Error! Invalid input.”
[ $Res-eq 67 ] && echo “Error! Command -> dd fdisk mke2fs

139、如何让history命令显示具体时间?
HISTTIMEFORMAT=”%Y-%m-%d %H:%M:%S”
export HISTTIMEFORMAT
重新开机后会还原,可以写/etc/profile

140、防止sql注入攻击 3种方法

答案 :1.开启php的魔术模式,,magic_quotes_gpc = on即可,当一些特殊字符出现在网站前端的时候,就会自动进行转化,转化成一些其他符号导致sql语句无法执行。

2.网站代码里写入过滤sql特殊字符的代码,对一些特殊字符进行转化,比如单引号,逗号,*,(括号)AND 1=1 、反斜杠,select union等查询的sql语句都进行安全过滤,限制这些字符的输入,禁止提交到后端中去。

3.开启网站防火墙,IIS防火墙,apache防火墙,nginx防火墙,都有内置的过滤sql注入的参数,当用户输入参数get、post、cookies方式提交过来的都会提前检测拦截,也可以向国内专业做网站安全的公司去咨询。

141、对连接的IP按连接数量进行排序:
netstat -ntu | awk ‘{print $5}’ | cut -d: -f1 | sort | uniq -c | sort -n

142、用tcpdump嗅探80端口的访问看看谁最高:
tcpdump -i eth0 -tnn dst port 80 -c 1000

143、iptables屏蔽ip:

如果只是想屏蔽IP的话“3、开放指定的端口”可以直接跳过。
屏蔽单个IP的命令是 iptables -I INPUT -s 123.45.6.7 -j DROP
封整个段即从123.0.0.1到123.255.255.254的命令 iptables -I INPUT -s 123.0.0.0/8 -j DROP
封IP段即从123.45.0.1到123.45.255.254的命令 iptables -I INPUT -s 124.45.0.0/16 -j DROP
封IP段即从123.45.6.1到123.45.6.254的命令是 iptables -I INPUT -s 123.45.6.0/24 -j DROP

144、对于web服务器(Nginx、Apache等)来说,并发连接数是一个比较重要的参数,下面就通过netstat命令和awk来查看web服务器的并发连接数以及TCP连接状态。
netstat -n | awk ‘/^tcp/ {++S[$NF]} END {for(key in S) print key,"\t",S[key]}’ FIN_WAIT2 38 CLOSING 3 SYN_RECV 1 CLOSE_WAIT 1 TIME_WAIT 261 ESTABLISHED 71 LAST_ACK 2 FIN_WAIT1 9

145、http协议,get和post的基本区别,接着tcp/ip协议,三次握手,窗口滑动机制。

答案 : get : 客户端请求指定资源信息,服务器返回指定资源

        post  :  将客户端的数据提交到服务器

三次握手(Three-Way Handshake)即建立TCP连接,就是指建立一个TCP连接时,需要客户端和服务端总共发送3个包以确认连接的建立。在socket编程中,这一过程由客户端执行connect来触发

四次挥手(Four-Way Wavehand)即终止TCP连接,就是指断开一个TCP连接时,需要客户端和服务端总共发送4个包以确认连接的断开。在socket编程中,这一过程由客户端或服务端任一方执行close来触发

三次握手建立一个连接 :

第一次握手:建立连接时,客户端发送syn包(syn=j)到服务器,并进入SYN_SEND状态,等待服务器确认;
SYN:同步序列编号(Synchronize Sequence Numbers)
第二次握手:服务器收到syn包,必须确认客户的SYN(ack=j+1),同时自己也发送一个SYN包(syn=k),即SYN+ACK包,此时服务器进入SYN_RECV状态;
第三次握手:客户端收到服务器的SYN+ACK包,向服务器发送确认包ACK(ack=k+1),此包发送完毕,客户端和服务器进入ESTABLISHED状态,完成三次握手.
完成三次握手,客户端与服务器开始传送数据

    (1)第一次挥手:Client发送一个FIN,用来关闭Client到Server的数据传送,Client进入FIN_WAIT_1状态。
    (2)第二次挥手:Server收到FIN后,发送一个ACK给Client,确认序号为收到序号+1(与SYN相同,一个FIN占用一个序号),Server进入CLOSE_WAIT状态。
    (3)第三次挥手:Server发送一个FIN,用来关闭Server到Client的数据传送,Server进入LAST_ACK状态。
    (4)第四次挥手:Client收到FIN后,Client进入TIME_WAIT状态,接着发送一个ACK给Server,确认序号为收到序号+1,Server进入CLOSED状态,完成四次挥手。

为什么建立连接是三次握手,而关闭连接却是四次挥手呢?
这是因为服务端在LISTEN状态下,收到建立连接请求的SYN报文后,把ACK和SYN放在一个报文里发送给客户端。而关闭连接时,当收到对方的FIN报文时,仅仅表示对方不再发送数据了但是还能接收数据,己方也未必全部数据都发送给对方了,所以己方可以立即close,也可以发送一些数据给对方后,再发送FIN报文给对方来表示同意现在关闭连接,因此,己方ACK和FIN一般都会分开发送。

窗口滑动机制

TCP的滑动窗口主要有两个作用,一是提供TCP的可靠性,二是提供TCP的流控特性。同时滑动窗口机制还体现了TCP面向字节流的设计思路。

可靠:对发送的数据进行确认

流控制:窗口大小随链路变化。

来源 : https://blog.csdn.net/sssnmnmjmf/article/details/68486261

146、mysql,储存引擎有哪些?悲观锁和乐观锁问题使用场景、分布式集群实现的原理。

答 :1、MyISAM存储引擎 2、InnoDB存储引擎 3、MEMORY存储引擎 4、MERGE存储引擎

悲观锁和乐观锁问题使用场景 :

1、资源提交冲突,其他使用方需要重新读取资源,会增加读的次数,但是可以面对高并发场景,前提是如果出现提交失败,用户是可以接受的。因此一般乐观锁只用在高并发、多读少写的场景。使用场景例如 : GIT,SVN,CVS等代码版本控制管理器

2、一旦通过悲观锁锁定一个资源,那么其他需要操作该资源的使用方,只能等待直到锁被释放,好处在于可以减少并发,但是当并发量非常大的时候,由于锁消耗资源,并且可能锁定时间过长,容易导致系统性能下降,资源消耗严重。因此一般我们可以在并发量不是很大,并且出现并发情况导致的异常用户和系统都很难以接受的情况下,会选择悲观锁进行。

147、如何保障请求执行顺序

148、分布式事物与分布式锁(扣款不要出现负数)

149、分布式session设置

150、Zookeeper有哪些用/Dubbo的底层原理,Zookeeper是什么

151、熟悉IO么?与NIO的区别,阻塞与非阻塞的区别

答 :IO和NIO之间第一个最大的区别是,IO是面向流的,NIO是面向缓冲区的。

阻塞与非阻塞IO的区别

     IO的各种流是阻塞的。这意味着,当一个线程调用read() 或 write()时,该线程被阻塞,直到有一些数据被读取,或数据完全写入。该线程在此期间不能再干任何事情了。

       Java NIO的非阻塞模式,使一个线程从某通道发送请求读取数据,但是它仅能得到目前可用的数据,如果目前没有数据可用时,就什么都不会获取,而不是保持线程阻塞,所以直至数据变的可以读取之前,该线程可以继续做其他的事情。 非阻塞写也是如此。一个线程请求写入一些数据到某通道,但不需要等待它完全写入,这个线程同时可以去做别的事情。 线程通常将非阻塞IO的空闲时间用于在其它通道上执行IO操作,所以一个单独的线程现在可以管理多个输入和输出通道(channel)。

NIO和IO如何影响应用程序的设计 :

1.对NIO或IO类的API调用。
2.数据处理。
3.用来处理数据的线程数。

152、私有地址主要用作在局域网中,这类地址是无法再公网中使用的。私有地址有哪三类?

答 :

  • 10.0.0.0-10.255.255.255
  • 172.16.0.0-172.31.255.255
  • 192.168.0.0-192.168.255.255

153、MyBatis如何分页;如何设置缓存;MySQL分页

154、数据库垂直和水平拆分

155、分布式接口的幂等性设计

156、jstack,jmap,jutil分别的意义?如何线上排查JVM的相关问题?

157、线程池的构造类的方法的5个参数的具体意义?

158、使用无界阻塞队列会出现什么问题?

159、接口如何处理重复请求?

160、jvm,jre以及jdk三者之间的关系?

答 :

JVM : 是Java虚拟机,用来运行Java程序,JVM是整个java实现跨平台的最核心的部分,能够运行以Java语言写的程序;JVM是一个虚构出来的计算机,是通过在实际的计算机上仿真模拟各种计算机功能来实现的。

JRE : 是Java运行时环境,里边包含了Java运行时所需要的类库。并不是一个开发环境,所以没有包含任何开发工具

JDK : 是Java开发工具包,里边包含了Java的开发工具。例如java,javac等。在JDK的安装目录下有一个jre目录,里面有两个文件夹bin和lib,在这里可以认为bin里的就是jvm,lib中则是jvm工作所需要的类库,而jvm和 lib合起来就称为jre。

JRE=JVM+libs【Java运行时所需要的类库】
JDK=JRE+java开发工具

161、Linux在一个文本下有一列的IP地址,如何统计每个ip地址出现的次数。

答 :awk ‘{a[$1]+=1;} END {for(i in a){print a[i]" "i;}}’ log/visit.log | sort -t " " -k 1 -n

命令行统计和排列访问日志里的ip数

Grep方法 :

grep -i -o -E -r -e “([0-9]{1,3}.){3}[0-9]{1,3}” access.log | sort -n | uniq -c | sort -n
Awk方法 :

awk ‘{if ($1 ~ /[0-9]+.[0-9]+.[0-9]+.[0-9]+/){ip[$1]++}}END{for(i in ip){print ip[i],"\t",i}}’ | sort -n
日志文件统计IP访问次数排序 :

cat logs/baidu.access.log | awk ‘{print $(NF-1)}’ | sort | uniq -c | sort -k 1 -n -r|head -10

查看一个字符串在文件里出现的次数 : grep -c ‘http’ request.log

统计某一文件中字符串“sent ”出现的次数 : cat nohup.log |grep “sent” |wc -l

统计用户登录的次数 : last | cut -d’ ’ -f1 | sort|uniq -c | sort -rn

shell 中统计字符串出现的次数 :

第一种方法:使用grep命令进行统计
grep -o ‘字符串’ file |wc -l

第二种方法:使用awk命令进行统计
awk -v RS="@#$j" ‘{print gsub(/字符串/,"&")}’ file

第三种方法:另一种使用awk命令进行统计的方法
awk ‘{s+=gsub(/字符串/,"&")}END{print s}’ file

162、netstat命令,问的是如何查看8080端口的链接数

何时会处于time_wait状态

答 : netstat -ant | grep -i "8080" |wc -l

163、如果定位到了Ip地址,如何得到mac地址和端口,arp协议

答 :

164、两地网络断了,如何用一条命令排查?Traceroute

如果HttP的80端口开启,是不是会有一个默认的网页出来?

165、安装linux系统内核默认是放在了哪里,哪个文件下?是/boot下的一个什么文件

Grub2引导,系统启动的第一个进程号是什么?Init

答 :内核头文件放在/usr/include/linux/和/usr/include/sys/

内核一般都在 /usr/src文件下,

166、LVM逻辑卷设置的过程?Mirror镜像卷的作用,镜像卷是什么?调带卷是什么?

答 :逻辑卷创建过程 : 1、分区 2、制作物理卷 3、制作卷组(将物理卷划入卷组) 4.制作逻辑卷 5.格式化逻辑卷 6.挂载 7.写入

Mirror镜像卷的作用 : 使得系统可以经受住硬磁盘或磁盘控制器出故障的考验

调带卷 :

更多介绍 : https://blog.csdn.net/dongfei2033/article/details/75172486

RAID1和镜像卷的区别: RAID1 是磁盘级别的。
镜像卷可以是在同一个磁盘上的。

167、Raid0 Raid1是什么?具体的用途?Raid1的利用率是百分之几?RAID0和RAID1的主要原则和利用场景,真正用它们的目的是什么?

答 : 都是廉价冗余磁盘阵列;

RAID 0读写速度快、阵列容量是加入阵列磁盘的总容量、无数据备份功能,安全性差。

RAID 1读写速度如单盘,容量是单盘的容量,但盘间是相互备份的,安全性高,4块硬盘,做RAID1时不一定就是120G(纠正一下,认为RAID 1只是用两块硬盘的误解,RAID 1是镜像,至少需要两块硬盘,不是只能两块硬盘,可多块硬盘做镜像)。

当把4块硬盘加入到一个阵列中时,RAID1后的容量就是60G,4块硬盘的内容是相同的。只有把4块硬盘,分两组加入到两个阵列后,容量才是120G。

注意 :RAID1只能2块盘做。容量是最小的那块盘容量。如果你一块500G 一块1TB ,那么RAID1以后就是500G

Raid的利用率

RAID0 100%

RAID1 50%

RAID5 磁盘数-1,3盘是 67%、4盘是 75%,5盘是 80%,6盘是 83%, 8盘 88%,16盘 94%
RAID5 最多16盘

RAID0和RAID1的主要原则和利用场景,真正用它们的目的是 :

168、文件系统与系统分区的关系

答 :

系统文件
系统文件指的是存放操作系统主要文件的文件夹,一般在安装操作系统过程中自动创建并将相关文件放在对应的文件夹中,这里面的文件直接影响系统的正常运行,多数都不允许随意改变。

169、windows蓝屏如何处理

答 : 蓝屏重启等。如果出现这种情况,请检查内存主板。

     检查系统安装盘来源是否安全,是否官网镜像或是可靠的网站下载的,有无精简。

    安装最新的系统补丁和Service Pack

170、查看系统中查看使用进程的命令

答案 :top
ps -ef

171、修复故障思想

1、变更要有回滚,在同样的环境测试过
2、对破坏性的操作谨慎小心
3、设置好命令提示
4、备份并验证备份有效性
5、对生产环境存有敬畏之心
6、交接和休假最容易出故障,变更请谨慎
7、搭建报警,及时获得出错信息。搭建性能监控,了解历史,获得趋势,预测未来
8、自动切换需谨慎
9、仔细一点,偏执一点,检查,检查,再检查
10、简单即是美。

172、tcp和udp的区别 ?tcp里边拥塞控制慢启动的原理,滑动窗口默认值? 什么有closewait这个状态,timewait状态影响如何解决。如何理解tcp是流式传输 。

答案 : TCP的优点: 可靠,稳定 TCP的可靠体现在TCP在传递数据之前,会有三次握手来建立连接,而且在数据传递时,有确认、窗口、重传、拥塞控制机制,在数据传完后,还会断开连接用来节约系统资源。

       TCP的缺点: 慢,效率低,占用系统资源高,易被攻击 TCP在传递数据之前,要先建连接,这会消耗时间,而且在数据传递时,确认机制、重传机制、拥塞控制机制等都会消耗大量的时间,而且要在每台设备上维护所有的传输连接,事实上,每个连接都会占用系统的CPU、内存等硬件资源。 而且,因为TCP有确认机制、三次握手机制,这些也导致TCP容易被人利用,实现DOS、DDOS、CC等攻击。

      UDP的优点: 快,比TCP稍安全 UDP没有TCP的握手、确认、窗口、重传、拥塞控制等机制,UDP是一个无状态的传输协议,所以它在传递数据时非常快。没有TCP的这些机制,UDP较TCP被攻击者利用的漏洞就要少一些。但UDP也是无法避免攻击的,比如:UDP Flood攻击……

      UDP的缺点: 不可靠,不稳定 因为UDP没有TCP那些可靠的机制,在数据传递时,如果网络质量不好,就会很容易丢包。 基于上面的优缺点,那么: 什么时候应该使用TCP: 当对网络通讯质量有要求的时候,比如:整个数据要准确无误的传递给对方,这往往用于一些要求可靠的应用,比如HTTP、HTTPS、FTP等传输文件的协议,POP、SMTP等邮件传输的协议。 

   常见使用TCP协议的应用如下: 浏览器,用的HTTP FlashFXP,用的FTP Outlook,用的POP、SMTP Putty,用的Telnet、SSH QQ文件传输

   UDP: 当对网络通讯质量要求不高的时候,要求网络通讯速度能尽量的快,这时就可以使用UDP。 比如,日常生活中,常见使用UDP协议的应用如下: QQ语音 QQ视频 TFTP

TCP与UDP区别总结:

1、TCP面向连接(如打电话要先拨号建立连接);UDP是无连接的,即发送数据之前不需要建立连接。
2、TCP提供可靠的服务。也就是说,通过TCP连接传送的数据,无差错,不丢失,不重复,且按序到达;UDP尽最大努力交付,即不保证可靠交付。

3、TCP面向字节流,实际上是TCP把数据看成一连串无结构的字节流;UDP是面向报文的。

UDP没有拥塞控制,因此网络出现拥塞不会使源主机的发送速率降低(对实时应用很有用,如IP电话,实时视频会议等)。

4、每一条TCP连接只能是点到点的;UDP支持一对一,一对多,多对一和多对多的交互通信。

5、TCP首部开销20字节;UDP的首部开销小,只有8个字节。
6、TCP的逻辑通信信道是全双工的可靠信道,UDP则是不可靠信道。

173、ps结果从哪调用 ?

答 :du使用fstat系统调用,基于文件获取的数据

   df 使用fstat系统调用,数据是基于分区元数据的,所以只能针对整个分区。由于df直接读取超级块,所以运行速度不受文件多少影响。

174、du和df显示不一致,为什么?

答 :该值差异的存在是由于du与df命令实施上的不同: du -s命令通过将指定文件系统中所有的目录、符号链接和文件使用的块数累加得到该文件系统使用的总块数;而df命令通过查看文件系统磁盘块分配图得出总块数与剩余块数。

df命令获得真正的文件系统数据,而du命令只查看文件系统的部分情况。

df用于报告文件系统的总块数及剩余块数,du -s /用于报告文件系统使用的块数。

(1)当出现du和df差距很大的情况时,考虑是否是有删除文件未完成造成的,方法是lsof命令,然后停止相关进程即可。

(2)可以使用清空文件的方式来代替删除文件,方式是:echo > myfile.iso。

(3)对于经常发生删除问题的日志文件,以改名、清空、删除的顺序操作。

(4)除了rm外,有些命令会间接的删除文件,如gzip命令完成后会删除原来的文件,为了避免删除问题,压缩前先确认没有进程打开该文件。

175、vfs,ext2,ext3,ext4的区别

答 : ext2/ext3文件系统使用索引节点来记录文件信息,作用像windows的文件分配表。索引节点是一个结构,它包含了一个文件的长度、创建及修改时间、权限、所属关系、磁盘中的位置等信息。一个文件系统维护了一个索引节点的数组,每个文件或目录都与索引节点数组中的唯一一个元素对应。

Ext3日志文件系统的特点 : 1、高可用性  2、数据的完整性  3、文件系统的速度   4、数据转换 5、多种日志模式

ext3的优点  : 可用性、数据完整性、速度、易于迁移。

ext4的特点 : 1. 与 Ext3 兼容 2. 更大的文件系统和更大的文件。3. 无限数量的子目录。 4. Extents 5. 多块分配 6. 延迟分配 7. 快速 fsck 8. 日志校验 9. “无日志”(No Journaling)模式 10. 在线碎片整理 11. inode 相关特性 12. 持久预分配 13. 默认启用 barrier

176、统计出一个文件中第一列的ip地址,awk,uniq,sort

178、查看网络端口的状态,看进程

答 : 查看进程 : ps -aux | grep tomcat

查看当前正在运行的进程 : ps -ef | grep java

查看网络端口的状态 :netstat -lntp |grep 22

179、查看网卡的流量,通过这个网卡的流量

查看系统的性能方面的命令

答 :查看网卡流量六种方法   :

方法一、nload工具

方法二、iftop工具

方法三、 ifstat

方法四、iptraf

方法五、watch ifconfig

方法六、watch cat /proc/net/dev

查看通过这个网卡的流量 :watch -n 1 “/sbin/ifconfig eth0 | grep bytes”。

180、数据库

事务的特性、事务是什么,事务的持续性是指什么

在数据库方面,建表时,除了简单的create语句建表,后面还有没有交什么别的参数?

mysql常见引擎的区别

慢查询日志

有没有做过一些对数据库的优化

181、最熟悉的负载均衡架构是什么?

182、如果DNS解析出现错误,解决的思路是什么?DNS的工作原理是什么?

183、tcpdump抓到的包如何分析?

184、nginx的用途。以及和lvs的区别 ?

185、apache和nginx的区别 ?

nginx的优势是处理静态请求,cpu内存使用率低,

apache适合处理动态请求,所以现在一般前端用nginx作为反向代理抗住压力,apache作为后端处理动态请求。

apache是同步多进程模型,一个连接对应一个进程;nginx是异步的,多个连接(万级别)可以对应一个进程 。

Apache 对 PHP 支持比较简单,Nginx 需要配合其他后端来使用 ,Apache 的组件比 Nginx 多。

186、网络的基础BGP,OSPF,TCP、UDP,协议端口?

187、对进程的理解,什么是进程,有哪些状态,进程什么时候会阻塞,阻塞挂起可以直接到运行态吗?进程和线程的区别,什么是死锁,什么情况下会产生死锁。linux进程调度算法有哪些。

188、grep/sed/awk介绍下区别

189、常用的http方法还有哪些

190、从1-n个整数组成的数据集,如何统计这些整数中出现的0-9每个数字出现的次数 ?

191、常用的IPC机制,CPU什么时候会从用户态切换到内核态,列举出常见的系统调用 ?

192、linux如何配置路由,iptables操作,服务器如何运行VRRP ?

193、用BIOS配置过程?

194、keepalived用什么协议做心跳检测?

答 : VRRP协议

VRRP协议状态三种状态 : 初始化,主机,备份机。

Keepalived利用VRRP协议来实现高可用性(HA)的

195、24位掩码的ip主机位多少个?

答 : 一共有256个IP地址。

24位子网掩码:255.255.255.0 ;

转换成十进制:11111111.11111111.11111111.00000000;

1为网络位 0为主机位;

00000000 变化最小为0最大为255;

一共:0-255(256个ip地址)

注意 : 子网掩码的长度32位,左边是网络位,用二进制数字“1”表示,1的数目等于网络位的长度;右边是主机位,用二进制数字“0”表示,0的数目等于主机位的长度。主机号全为1时表示该网络广播地址,全为0时表示该网络的网络号。只有通过子网掩码,才能表明一台主机所在的子网与其他子网的关系,使网络正常工作。

196、路由协议有哪些?

答 : 常见的路由协议有RIP、IGRP(Cisco私有协议)、EIGRP(Cisco私有协议)、OSPF、IS-IS、BGP等。

RIP、IGRP、EIGRP、OSPF、IS-IS是内部网关协议(IGP),适用于单个ISP的统一路由协议的运行,一般由一个ISP运营的网络位于一个AS(自治系统)内,有统一的AS number(自治系统号)。BGP是自治系统间的路由协议,是一种外部网关协议,多用于不同ISP之间交换路由信息,以及大型企业、政府等具有较大规模的私有网络。

注意 :像OSPF 只是到达超大的路由环境才会用到.

197、正向代理与反向区别?

项目中遇到的问题及解决办法

答 :反 向代理的典型用途是为在防火墙内的局域网客户端提供访问Internet的途径。正向代理还可以使用缓冲特性减少网络使用率。反向代理的典型用途是将防火墙后面的服务器提供给Internet用户访问。反向代理还可以为后端的多台服务器提供负载平衡,或为后端较慢的服务器提供缓冲服务。另外,反向代理还可以启用高级URL策略和管理技术,从而使处于不同web服务器系统的web页面同时存在于同一个URL空间下。

198、hostname.ip,路由的设定在哪个文件

答 :vim /etc/sysconfig/network修改hostname

    vi /etc/sysconfig/network-script/

199、查找IP查找当前且目录下的txt结尾这件并删除

答 : find .|xargs grep -ri “.txt”

查找目录下的所有文件中是否含有IBM,并且只打印出文件名
find .|xargs grep -ri “IBM” -l

200、MySQL查询语句、nosql查询语句 mongodb,主从架构区别 ?

答 : select * from Info 查所有数据;

201、IPV4和IPV6的区别

答案 :

IPv6 把IP 地址 128 位
IPv6 地址的编码采用类似于 CIDR 的分层分级结构。
IPv6 的地址是 IPv4 地址的 4 倍。但报头只有它的 2 倍大。

202、路由器和交换机的区别:

(1)工作层次不同

     交换机是工作在OSI中 数据链路层,也就是第二层

      路由器一开始就设计工作在OSI模型的第三层网络层。

(2)数据转发所依据的对象不同

交换机是利用物理地址或者说MAC地址来确定转发数据的目的地址。

路由器则是利用不同网络的ID号(即IP地址)来确定数据转发的地址。

IP地址是在软件中实现的

203、路由器和交换机的区别?

答案 : (1)、工作层次不同

         交换机是工作在OSI/RM开放体系结构的数据链路层,也就是第二层

         而路由器工作在OSI网络7层协议模型中的第3层的第三层(网络层)

       (2)、数据转发所依据的对象不同

        交换机是利用物理地址或者说MAC地址来确定转发数据的目的地址。

        而路由器则是利用不同网络的ID号(即IP地址)来确定数据转发的地址。

       (3)、传统的交换机只能分割冲突域,不能分割广播域;而路由器可以分割广播域

      (4)、路由器提供了防火墙的服务

204、ping不通服务器ip原因?

连接windows服务器时,发现服务器能ping通电脑,但电脑不能ping通服务器

windows 2008服务器 解决办法 :防火墙的ICMP回显被禁止了。打开ICMP回显的方法: 控制面板 > 防火墙 > 高级 > 本地连接 > 设置 > ICMP 勾选上“允许传入的回显请求”,确定就好了。

具体 步骤 :https://blog.csdn.net/x541211190/article/details/78221949?utm_source=blogxgwz4

205、新安装MYSQL后怎样提升MYSQL的安全级别?

答案 :

A.修改mysql默认端口

B.linux下可以通过iptables来限制访问mysql端口的IP地址

C.对所有用户设置较复杂密码并严格指定对应账号的访问IP(可在mysql库中user表中指定用户的访问可访问IP地址)

D.root特权账号的处理(建议给root账号设置强密码,并指定只允许本地登录)

E.开启二进制查询日志和慢查询日志

F.mysql安装目录及数据存储目录权限控制:给mysql安装目录读取权限,给mysql日志和数据所在目录读取和写入权限

G.删除无用mysql账号和删除无用的数据库(安装好的mysql默认会有个test库,可将其删除)

206、MYSQL的主从原理,怎么配置文件

答案 : 整体上来说,复制有3个步骤:

  A.master将改变记录到二进制日志(binary log)中(这些记录叫做二进制日志事件,binary log events);

  B.slave将master的binary log events拷贝到它的中继日志(relay log);

  C.slave重做中继日志中的事件,将改变反映它自己的数据。

补充:mysql主从复制的优点

<1> 如果主服务器出现问题, 可以快速切换到从服务器提供的服务;

<2> 可以在从服务器上执行查询操作, 降低主服务器的访问压力;

<3> 可以在从服务器上执行备份, 以避免备份期间影响主服务器的服务。

207、Mysql复制的基本原理过程如下:

(1)Slave上面的IO线程连接上Master,并请求从指定日志文件的指定位置(或者从最开始的日志)之后的日志内容;

(2)Master接收到来自Slave的IO线程的请求后,通过负责复制的IO线程根据请求信息读取指定日志指定位置之后的日志信息,返回给Slave端的IO线程。返回信息中除了日志所包含的信息之外,还包括本次返回的信息在Master端binary log文件的名称以及在Binary log中的位置;

(3)Slave的IO线程收到信息后,将接收到的日志内容依次写入到Slave端的RelayLog文件(mysql-relay-lin.xxxxx)的最末端,并将读取到的Master端的bin-log的文件名和位置记录到master-info文件中,以便在下一次读取的时候能够清楚的告诉master“我需要从某个bin-log的哪个位置开始往后的日志内容,请发给我”

(4)Slave的SQL线程检测到Relay Log中新增加了内容后,会马上解析该Log文件中的内容成为在Master端真实执行时候的那些可执行的查询或操作语句,并在自身执行那些查询或操作语句,这样,实际上就是在master端和Slave端执行了同样的查询或操作语句,所以两端的数据是完全一样的。

208、为MYSQL添加一个用户?

答案 : mysql> grant select,insert,update,delete on book.* to test2@localhost identified by ‘abc’; #增加test2用户,密码为abc。并只能在localhost这台主机上登录,并且只能访问book这个库中的表,具有查询,插入,更新,删除权限;

语法:mysql> GRANT <权限> ON <库>.<表> TO ‘用户’@‘主机名’ identified by ‘密码’;

209、对WINDOWNS系统打过补丁,如果有100台你会怎么做?

答案 : 在域环境中,应该是将一台服务器作为域控补丁的update服务器,利用“发布与指派”的功能,将补丁批量更新到内网其他服务器;

210、WINDOWNS下怎么为MYSQL做定时完全备份

答案 : 批处理+计划任务+ftp上传至远程服务器

211、在没有硬件防火墙的情况下,怎样提高WINDOS系统安全

答案 : 用ISA防火墙?

212、显示/test目录下的所有目录

答案 : ls -d */

find . -type d -maxdepth 1 (如果不加-maxdepth 参数,将会列出无穷多的子目录。)

ls -F | grep ‘/$’

ls -l | grep ‘^d’|awk ‘{print $9}’

213、将文件/etc/a 下中除了 b文件外的所有文件压缩打包放到/home/a下,名字为a.gz

答案 :

tar --exclude /etc/a/b -zPcvf /home/a/a.gz /etc/a (不加P选项会提示:『tar: Removing leading `/’ from member names』)

验证:

[root@localhost ~]# tar tPvf /home/a/a.gz (忽略掉b文件)

drwxr-xr-x root/root 0 2015-08-21 10:15 /etc/a/

-rw-r–r-- root/root 0 2015-08-21 10:15 /etc/a/d

-rw-r–r-- root/root 0 2015-08-21 10:15 /etc/a/f

-rw-r–r-- root/root 0 2015-08-21 10:15 /etc/a/c

-rw-r–r-- root/root 0 2015-08-21 10:15 /etc/a/e

214、给一个脚本赋予执行权限的命令及选项

答案 : chmod +x a.sh

215、umask 022代表什么意思?

答案 : 新建文件夹或文件的权限是由所谓基本码减去称之为umask的屏蔽位得到的。

按照规定:文件夹的基本码是rwxrwxrwx(777),文件的基本码是rw-rw-rw-(666)

因此新建文件夹是777-022=755(rwxr-xr-x),新建文件是666-022=644(rw-r–r--)。

综上,umask 022表示默认创建新文件权限为755 也就是 rxwr-xr-x(所有者全部权限,属组读写,其它人读写)

216、如何查看某进程所打开的所有文件?

答案 :

取出该进程的进程号,然后用lsof -p pid查看打开的所有文件。(这里以crond进程为例)

[root@localhost ~]# ps -ef |grep crond|grep -v grep |awk ‘{print $2}’ #取出进程号

2550

[root@localhost ~]# lsof -p 2550 #查看该进程打开的所有文件

COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME

crond 2550 root cwd DIR 8,2 4096 2 /

crond 2550 root rtd DIR 8,2 4096 2 /

crond 2550 root txt REG 8,2 64096 820728 /usr/sbin/crond

crond 2550 root mem REG 8,2 65928 524319 /lib64/libnss_files-2.12.so

217、获取eth0网卡上80端口的数据包信息

答案 : [root@localhost ~]# tcpdump -i eth0 port 80

218、删除 /a/b下的所有文件及目录

答案 : [root@localhost ~]# rm -rf /a/b/*

219、常用的网络管理工具(5种以上)

答案 :

Windows下有 : ipconfig(/all,/renew,/release),ping,tracert,nslookup,telnet……

Linux下有           :  ifconfig,ping,traceroute,dig,nslookup,telnet

220、ftp、https、smtp、pops、ssh的端口号

答案 ,ftp端口号21, https端口号443, smtp端口号25, pop3端口号110, ssh端口号22,

221、请用iptables控制来自192.168.1.2主机的80端口请求

iptables -A INPUT -p tcp -s 192.168.1.2 --dport 80 -j ACCEPT (允许来自192.168.1.2这台主机访问80端口)

222、请用shell脚本创建一个组class、一组用户,用户名为stdX X从01-30,并归属class组

答案 :

脚本如下

[root@localhost ~]# cat adduser.sh

#!/bin/bash

#script for adduser.

#create by haojiu

#2015-x-x

groupadd class

user=std

for i in {01…30}

do

useradd -G class u s e r {user} i

done

223、在mysql客户端查询工具中,如何获取当前的所有连接进程信息

答案 : mysql> show full processlist;

224、如何删除已满的数据库日志信息?

答案 :在my.cnf中的[mysqld]段下面加入:expire-logs-days=7(设置自动清除7天钱的logs),重启mysql;

或者登录进mysql,执行:purge binary logs to ‘mysql-bin.000003’; #删除bin-log(删除mysql-bin.000003之前的而没有包含mysql-bin.000003)

如果是mysql主从环境的,删除日志,语句格式如下:

PURGE {MASTER | BINARY} LOGS TO ‘log_name’

PURGE {MASTER | BINARY} LOGS BEFORE ‘date’

225、linux系统添加永久路由的几种方法?

在系统添加下面路由条目
route add -net 192.168.10.0/24 gw 172.16.15.254
route add -net 192.168.177.0/24 gw 172.16.15.254

添加永久静态路由(方法一):
[root@localhost ~]# vi /etc/sysconfig/static-routes
any net 192.168.10.0/24 gw 172.16.15.254
any net 192.168.177.0/24 gw 172.16.15.254

添加永久静态路由(方法二):
vi route-ens33 (ens33是centos7的接口形式)
192.168.177.0/24 via 172.16.15.254 dev ens33
192.168.10.0/24 via 172.16.15.254 dev ens33

226、性能检测常用的10个基本命令

答案 : uptime、dmesg | tail、vmstat 1 、 mpstat -P ALL 1、 pidstat 1、 iostat -xz 1、 free -m、 sar -n DEV 1、 sar -n TCP,ETCP 1(粗略的判断网络的吞吐量,如发起的网络连接数量和接收的网络连接数量)、

top

                              Linux常用性能工具简介

注意 :使用vmstat查看系统的整体性能,mpstat用于查看cpu的性能,pidstat用于查看进程的状态,iostat用于查看io的状态,free用于产看内存的状态,sar用于产看网络的状态等。

更多介绍 :https://mp.weixin.qq.com/s/8bjFHHiKLQw97W1zMOTBSA

227、Linux 查看分区文件系统类型

答案 : 1、df -T (只可以查看已经挂载的分区和文件系统类型)

2、parted -l (输出文件系统类型)

3、blkid (查看已格式化分区的UUID和文件系统。)

4、lsblk -f (也可以查看未挂载的文件系统类型)

更多介绍 :https://mp.weixin.qq.com/s/AAJXquDUlwg_MMYgvDR2tw

228、Linux中如何通过设备号找到设备?

答案 :

查看主设备号:

cat /proc/devices

查看某个主设备号

[root@mylnx01 ~]# cat /proc/devices | grep 253
次设备号查看

[root@mylnx01 ~]# ls -l /dev 或 ll /dev | grep 234 | grep -v grep
通过/dev 没有找到次设备号为253:14的块设备。 如下所示

Jul 19 05:02:01 mylnx01 kernel: BLKWATCH ERR: Attempt to get a sector index out of the bitmap bounds.

dmsetup ls 查看VG设备

ll /dev/ | grep sd #或者命令 ll /dev/ | grep disk查看设备驱动程序使用次设备号。

229、远程网络连接的三个重要需求

  1. 连通性需求

  2. 安全性需求

  3. 优化型需求

230、linux 系统丢包的原因

常见的有:UDP 报文错误、防火墙、UDP buffer size 不足、系统负载过高等

更多介绍 : https://mp.weixin.qq.com/s/BHj7LXQA_AfEcDkWP1Itsg

331、查看网卡是否有丢包的命令

答案 : 1、ethtool -S eth0 # RX(receive 接收报文)和 TX(transmit 发送报文)的统计数据:

2、netstat -s 命令查看,加上 --udp 可以只看 UDP 相关的报文数据

3、 netstat -i 也会提供每个网卡的接发报文以及丢包的情况,正常情况下输出中 error 或者 drop 应该为 0。

332、TCP/IP四层网络模型

TCP/IP的应用

第四层 应用层 : DNS、FINGER、WHIOS、FTP、HTTP、SMTP、SNMP、IRC、GOPHER、USERNET、POP、RPC、FTP、TELNET、TFTP、URI、HTML、SSH、LDAP 典型设备 : 网关

第三层 传输层 : TCP、UDP、DCCP、SCTP、UDP-Lite

第二层 网络层 : ARP、IP(ICMP)、RARP 典型设备 :路由器

第一层 网络接口层 : ARP、RARP

数据链路层 :网卡层 典型设备 :网桥、交换机、网卡

物理层 : 硬件 典型设备 :中继器和集线器

TCP和UDP的区别 :

    tcp :传输控制协议,面向连接的协议,通信前需要建立虚拟链路:结束后拆除链路

    udp : 无连接的协议

TCP的 特性:

建立连接:三次握手

将数据打包成段,效验和(CRC-32)

确认、重传以及超时

排序:逻辑序号

流量控制 : 滑动窗口

注意 : 应用层、表示层、会话层 是应用程序 ; 传输层、网络层 是操作系统 ;数据链路层、物理层 是设备驱动程序与网络接口

TCP/IP的最底层是负责数据传输的硬件

Socket : IPC 的一种实现,允许位于不同主机(甚至同一主机)上不同进程之间进行通信 : 数据交换:Socket API

IP地址进行主机之间通信 ,MAC地址进行设备之间的通信

TCP/IP网络中远程登录常用TELNE和SSH两种协议

浏览器和服务器之间通信所用的 协议HTTP,传输数据的主要格式是HTML,WWW中的HTTP属于OSI应用层的协议,而HTML属于表示层的协议

IP协议的作用是将分组数据包发送到目的主机;IP协议相当于ISO模型的第三层网络层,IP协议基于IP地址转发分包数据。

TCP协议是一种面向有连接的传输层协议,保证两端通信主机之间的通信可达,TCP能够正确处理在传输过程中丢包、传输顺序乱掉等异常情况,还能利用带宽,缓解网络拥堵。

什么是TCP/IP协议? TCP/IP是一个四层的分层体系结构。高层为传输控制协议,它负责聚集信息或把文件拆分成更小的包。低层是网际协议,它处理每个包的地址部分,使这些包正确的到达目的地。 TCP/IP由四个层次组成:网络接口层、网络层、传输层、应用层。 每一层都呼叫它的下一层所提供的网络来完成自己的需求。

OSI七层模型与TCP/IP协议的对应关系。
OSI中的层 功能 TCP/IP协议族
1、应用层 :文件传输,电子邮件,文件服务,虚拟终端 TFTP,HTTP,SNMP,FTP,SMTP,DNS,Telnet
2、表示层 :数据格式化,代码转换,数据加密 没有协议
3、会话层: 解除或建立与别的接点的联系 没有协议
4、传输层:提供端对端的接口 TCP,UDP
5、网络层: 为数据包选择路由 IP,ICMP,RIP,OSPF,BGP,IGMP
6、数据链路层: 传输有地址的帧以及错误检测功能 SLIP,CSLIP,PPP,ARP,RARP,MTU
物理层: 以二进制数据形式在物理媒体上传输数据

传输层 依赖端口号来提供进程地址

TCP/IP协议中一些常用协议英文名:

TCP(Transmission Control Protocol)传输控制协议
IP(Internet Protocol)网际协议
UDP(User Datagram Protocol)用户数据报协议
ICMP(Internet Control Message Protocol)互联网控制信息协议
SMTP(Simple Mail Transfer Protocol)简单邮件传输协议
SNMP(Simple Network manage Protocol)简单网络管理协议
FTP(File Transfer Protocol)文件传输协议
ARP(Address Resolation Protocol)地址解析协议
DNS(Domain Name System,域名系统)域名解析系统

SSL(英文:Secure Sockets Layer的缩写)中文叫“安全套接层”

TLS(英文:Transport Layer Security的缩写)中文叫“传输层安全协议”

333、线上服务可能因为种种原因导致挂掉怎么办?

linux下的后台进程管理利器 supervisor

每次文件修改后再linux执行 service supervisord restart

334、描述数组、链表、队列、堆栈的区别?

数组与链表是数据存储方式的概念,数组在连续的空间中存储数据,而链表可以在非连续的空间中存储数据;

队列和堆栈是描述数据存取方式的概念,队列是先进先出,而堆栈是后进先出;队列和堆栈可以用数组来实现,也可以用链表实现

335、ngnix的正向代理与反向代理?

正向代理 是一个位于客户端和原始服务器(origin server)之间的服务器,为了从原始服务器取得内容,客户端向代理发送一个请求并指定目标(原始服务器),然后代理向原始服务器转交请求并将获得的内容返回给客户端。客户端必须要进行一些特别的设置才能使用正向代理。

反向代理正好相反,对于客户端而言它就像是原始服务器,并且客户端不需要进行任何特别的设置。客户端向反向代理的命名空间中的内容发送普通请求,接着反向代理将判断向何处(原始服务器)转交请求,并将获得的内容返回给客户端,就像这些内容原本就是它自己的一样。

336、 HTTP 中, POST 与 GET 的区别?

1)Get是从服务器上获取数据,Post是向服务器传送数据。

2)Get是把参数数据队列加到提交表单的Action属性所指向的URL中,值和表单内各个字段一一对应,在URL中可以看到。

3)Get传送的数据量小,不能大于2KB;Post传送的数据量较大,一般被默认为不受限制。

4)根据HTTP规范,GET用于信息获取,而且应该是安全的和幂等的。

337、ECS弹性云主机 登录方式:NO VNC 、RDP、SSH;口令模式、证书模式;

338、DDoS攻击方式

答 : CC、SYN flood、UDP flood

ACK Flood攻击、UDP Flood攻击、ICMP Flood攻击、Connection Flood攻击、HTTP Get攻击、UDP DNS Query Flood攻击、

流行的DDoS攻击:1.SYN/ACKFlood攻击 2.TCP全连接攻击 3.刷Script脚本攻击

DDoS攻击现象

(1)、接收到大量的反向解析目标IP主机名的PTR查询请求。

(2)、当DDoS攻击一个站点时,会出现明显超出该网络正常工作时的极限通讯流量的现象。当明显超出此极限值时,就表明存在DDoS攻击的通讯。因此,可以在主干路由器端建立ACL访问控制规则以监测和过滤这些通讯。

(3)、特大型的ICP和UDP数据包。正常的UDP会话一般都使用小的UDP包,通常有效数据内容不超过10字节。正常的ICMP消息也不会超过64到128字节。

(4)、不属于正常连接通讯的TCP和UDP数据包。最隐蔽的DDoS工具随机使用多种通讯协议(包括基于连接的协议)通过基于无连接通道发送数据。那些连接到高于1024而且不属于常用网络服务的目标端口的数据包也是非常值得怀疑的。

(5)、数据段内容只包含文字和数字字符(例如,没有空格、标点和控制字符)的数据包。

(6)、数据段内容只包含二进制和high-bit字符的数据包。但如果这些数据包不属于正常有效的通讯时,可以怀疑正在传输的是没有被BASE64编码但经过加密的控制信息通讯数据包(如果实施这种规则,必须将20、21、80等端口上的传输排除在外)。

预防DDoS攻击

1、扫描网络管理员要定期扫描网络节点

2、配置防火墙

3、充分利用网络设备

4、过滤服务及端口

5、检查访问者的来源

6、过滤所有被保留的IP地址

7、限制SYN/ICMP流量

更详细介绍 :http://netsecurity.51cto.com/art/201211/367445.htm

DDOS攻击原理图

典型DDoS攻击通过攻击特征

DoS攻击、DDoS攻击和DRDoS攻击的区别和共同点?

答 :共同点 : 这三种方法都是利用TCP三次握手的漏洞进行攻击的。

DOS和DDOS都是攻击目标服务器的带宽和连通性,使得目标服务器的带宽资源耗尽,无法正常运行。

DOS与DDOS都是攻击目标服务器、网络服务的一种方式。

区别 : Dos是拒绝服务攻击,而DDOS是分布式拒绝服务攻击;DRDoS:分布式反射拒绝服务

DDOS: 将多个计算机联合起来作为攻击平台,对一个或多个目标发动DDoS攻击,从而成倍地提高拒绝服务攻击的威力。

Dos是利用自己的计算机攻击目标,也是一对一的关系;

         DRDoS靠的是发送大量带有被害者IP地址的数据包给攻击主机,然后攻击主机对IP地址源做出大量回应,形成拒绝服务攻击。

减少DDoS的攻击。下面就是一些防御方法:

  1. 确保服务器的系统文件是最新的版本,并及时更新系统补丁。

  2. 关闭不必要的服务。

  3. 限制同时打开的SYN半连接数目。

  4. 缩短SYN半连接的time out 时间。

  5. 正确设置防火墙

禁止对主机的非开放服务的访问
限制特定IP地址的访问
启用防火墙的防DDoS的属性
严格限制对外开放的服务器的向外访问
运行端口映射程序祸端口扫描程序,要认真检查特权端口和非特权端口。
6. 认真检查网络设备和主机/服务器系统的日志。只要日志出现漏洞或是时间变更,那这台机器就可   能遭到了攻击。

  1. 限制在防火墙外与网络文件共享。这样会给黑客截取系统文件的机会,主机的信息暴露给黑客,   无疑是给了对方入侵的机会。

  2. 路由器

以Cisco路由器为例

Cisco Express Forwarding(CEF)
使用 unicast reverse-path
访问控制列表(ACL)过滤
设置SYN数据包流量速率
升级版本过低的ISO
为路由器建立log server
能够了解DDoS攻击的原理,对我们防御的措施在加以改进,我们就可以挡住一部分的DDoS攻击。

339、DOS(拒绝服务)的攻击方式 ???

答 : 1、SYN FLOOD  2、IP欺骗DOS攻击  3、带宽DOS攻击  4、自身消耗的DOS攻击  5、塞满服务器的硬盘

340、Tomcat的三种运行模式?

答:Tomcat支持三种接收请求的处理方式: BIO, NIO, APR

Tomcat 7以下版本默认情况下是以BIO模式运行的;

Tomcat8以上版本,默认使用的就是NIO模式;

341、网络带宽的监测命令

答 : iptraf、netperf、iperf、tcpdump 和 tcptrace

监控总体带宽使用 --nload、bmon、slurm、bwm-ng、cbm、speedometer和netload

     监控总体带宽使用(批量式) --vmstat、iftraf、dstat、collectl、

     每个套接字连接的带宽使用  - -iftop、iptraf、tcptrack、pktstat、netwatch和trafshow

     每个进程的带宽使用 - -nethogs

342、遇到无法删除的文件该怎么清理?

答  :  可能是该文件还在运行中,可以重启删之,或者运行CMD,输入arrtib-a-s-h-r想要删除的文件夹名,最后输入del想要删除的文件夹名即可删除,运行该命令后无法恢复,请慎用。

343、如何解决系统端口隐患?

答  : 一些不必要端口,而且风险较高的端口大可封掉。一些必要的端口,又有风险的端口,比如:3389、80等端口,可以通过修改注册表的方法将其设置不特殊的秘密端口,这样服务器端口的安全隐患就不复存在了。

344、常见服务器网络卡的原因?

答  :先检查您服务器的使用情况,CPU使用率是否大于50%,内存使用率是否过高,网络使用率是否过高。如果出现上述情况,则表明您的服务器或网络无法承载您目前的服务,请联系技术人员调整您的资源。

如果没有出现上述情况则可能由以下原因造成:

服务器遭遇CC攻击导致,需要联系售后人员做CC防护策略。
服务器遭遇较大的流量攻击,但服务器没有被流量牵引
设备网卡故障、网线故障、上层交换机故障。在出现故障前,您可以对您服务器的相邻ip进行测试,如果相邻ip也同样出现丢包情况,说明是上层交换设备故障。
机房网络故障,这将是大范围的故障

服务器卡的情况下,一般会出现的表现状况:

服务器严重丢包,正常的服务器丢包率为0%,若丢包率高于1%则会出现卡的情况。
部分用户卡,部分用户不卡,可能由于硬件防火墙造成,部分链路堵塞。
另外,上述情况也可能是互联网节点故障造成。

出现卡的情况时,为了技术能准确判断故障,请您做出下列判断:

请先检查您的本地网络是否正常,若非本地网络问题,则可能是服务端故障。本地网络的检测方法:ping测试您的服务器,同时对其他一些网站进行同步ping测试,如果您的 服务器丢包严重,其他的服务器没有丢包情况,则说明故障在您的服务器。

确认您的服务器有没有不卡的用户。通俗而言,全部用户卡,或部分用户卡。具体卡的用户是哪方面用户。

345、服务器无法连接?

答 :

可能出现的情况如下:

由于大流量攻击,导致服务器被流量牵引。
服务器硬件损坏,导致服务器死机或关机。
由于服务器的配置不正确,导致网络中断或无法进入操作系统。
遭遇黑客入侵,系统受到恶意破坏。
上层交换设备故障。
机房网络故障。 测试方法同网络卡类似。

346、11种宽带网络接入技术

答 :1.普通Modem 2.N-ISDN 3.Cable Modem与HFC 4.HDSL与SDSL 5.ADSL与G.lite 6.VDSL 7.HomePNA 8.Ethernet 9.SDH 10.PON与APON 11.IM-DSL

https://mp.weixin.qq.com/s/GzfLESE3WHhTNlu4sEjkzw

347、SVN、GIT版本管理器(工具)的区别

答 : 1.git是分布式的,svn是集中式的

      2.git把内容按元数据方式存储,而svn是按文件

     3.git的内容完整性要优于svn

     4.git 不需联网,svn 需要联网操作

     git下载下来后,在本地不必联网就可以看到所有的log,很方便学习;
     svn却需要联网,没有网络代码没办法提交.

svn 的一些优势 !!!
1.svn支持空目录
2.svn有更好的Windows平台支持
3.svn支持特权访问控制svn lock,在处理很难合并的文件时非常有用
4.svn支持二进制文件,更容易处理大文件(不需要把老版本拷来拷去)
5.提交文件相对简单,因为没有pull/push操作,本地修改通过svn update自动的执行了同步代码的功能。

注意 :版本管理器(工具)例如 :VSS、git、svn、cvs、、

348、常见的Http的状态码

200 - 服务器成功返回网页

401 (Unauthorized/未授权)
404 - 请求的网页不存在

406 (Not Acceptable/无法访问)

408 (Request Timeout/请求超时)
503 - 服务不可用

349、Http怎么处理长连接。

通过轮询来实现长连接

350、Ping的整个过程。ICMP报文是什么。

351、IP地址分类。

答 :

IPv4

分类 :

     A 类:1-127              255.0.0.0

               0 000 0001 - 0 111 1111

             127个A类,127用户回环 ,1-126

             2^7 -1个A类

             容纳多少个主机:2^24-2

             主机位全0 :网络地址

           主机位全1 :广播地址

     B  类:   128-191  255.255.0.0  ,16

         10 00 0000 - 10 11 1111

         128 - 191

         64个C类 , 2^21个C类网

         容纳多少个主机:2^16-2

     C  类 : 192-223

              110 0 0000 - 110 1 1111

              192 - 223

               32个C类,2^21个C类网

              容纳多少个主机:2^8-2

     D  类 : 组播 224 - 239

           1110 0000 - 1110 1111 

     E  类 :    240  - 254

私有地址

   A : 10.0.0.0/8

   B : 172.16.0.0/16    -   172.31.0.0/16

   C : 192.168.0.0/24  -    192.168.255.0/24

352、路由器与交换机区别。

353、服务器的远程桌面连接端口

答 : 3389,可以通过注册表更改端口(大于1024)

354、如何关闭无用的端口?

答 : 通过IPSEC或者是系统自带防火墙来实现。

355、Windows常见命令

答 :Øregedit:打开注册表编辑器。

Ø ping :测试网络连通性。
Ø Ipconfig :查看当前服务器 IP 配置情况
Ø Tracert :路由跟踪,也可使用 pathping
Ø telnet :连接到远程服务器
Ø Netstat :显示协议统计和当前 TCP/IP 网络 连接
Ø Nslookup :查看域名解析
Ø Arp :显示和修改 ARP 使用的“ IP 到物理”地址转换表。
Ø Net session :查看链接
Ø Net view :显示当前网络计算机列表
Ø Runas :允许用户用其他权限运行指定的工具和程序,而不是用户当前登录提供的权限
Ø Route :在本地 ip 路由表中显示和修改条目
Ø Chkdsk :磁盘检测工具
Ø Gpedit.msc :打开组策略编辑器
Ø mstsc: :打开远程桌面连接客户端
taskmgr:打开任务管理器

Linux常见命令

Ø ifconfig :查看和设置网络参数
Ø Ifup ifdown :激活或关闭某个网络适配卡
Ø Netstat :查看服务器监听端口和链接状态
Ø Route :查看路由信息
Ø Traceroute :追踪路由
Ø Passwd :修改用户密码

  • Hwinfo :查看相关硬件信息
  • Dmesg :查看系统内核级别的日志信息
  • Chkconfig :开启和关闭服务相关
  • Fdisk :磁盘分区
  • Mkfs.ext3 :创建文件系统
  • Fsck.ext3 :修复文件系统

356、网络客户端工具

答 : lftp、ftp、lftpget、wget

357、查看tomcat的线程数:ps -Lf pid|wc -l

查看tomcat的并发数:netstat -an|grep 10050|awk ‘{count[$6]++} END{for (i in count) print(i,count[i])}’

358、根据端口号查询对应进程

lsof -Pnl +m -i4 | grep 端口号 #根据此命令查出端口号对应的进程pid,然后使用ps查到进程信息。

netstat -anp | grep 端口号 #根据此命令查出端口号对应的进程pid,然后使用ps查到进程信息

359、关于CPU

答 : # 总核数 = 物理CPU个数 X 每颗物理CPU的核数

总逻辑CPU数 = 物理CPU个数 X 每颗物理CPU的核数 X 超线程数

查看物理CPU个数

cat /proc/cpuinfo| grep “physical id”| sort| uniq| wc -l

查看每个物理CPU中core的个数(即核数)

cat /proc/cpuinfo| grep “cpu cores”| uniq

查看逻辑CPU的个数

cat /proc/cpuinfo| grep “processor”| wc -l

#查看CPU信息(型号)
cat /proc/cpuinfo | grep name | cut -f2 -d: | uniq -c

查看CPU的主频
#cat /proc/cpuinfo |grep MHz|uniq

查看CPU是几核
#cat /proc/cpuinfo |grep “cores”|uniq

360、cpu使用情况以及高使用率进程查询

答 : uptime、vmstat、top、、、、

top -Hp pid 查看使用cpu最高的线程数

free -m 查询内存使用情况

iostat -x 2 5 查看各磁盘的%util情况,越高说明磁盘对应的io越高。

注意 : top命令进入后输入M按内存使用排序,可以找到占用内存较高进程。

         top查询wa的使用情况,查看io占用cpu是否较高。

361、查看路由表的 命令

答 : route -n 或 者 netstat -rn

362、显示接口统计数据

答 : netstat -i 或者netstat -I 网卡名

363、centos 6与centos 7的区别:

答 :

(1)桌面系统
[CentOS6] GNOME 2.x
[CentOS7] GNOME 3.x

(2)文件系统
[CentOS6] ext4
[CentOS7] xfs

(3)内核版本
[CentOS6] 2.6.x-x
[CentOS7] 3.10.x-x

(4)启动加载器
[CentOS6] GRUB Legacy (+efibootmgr)
[CentOS7] GRUB2

(5)防火墙
[CentOS6] iptables
[CentOS7] firewalld

(6)默认数据库
[CentOS6] MySQL
[CentOS7] MariaDB

(7)文件结构
[CentOS6] /bin, /sbin, /lib, and /lib64在/下
[CentOS7] /bin, /sbin, /lib, and /lib64移到/usr下

(8)主机名
[CentOS6] /etc/sysconfig/network
[CentOS7] /etc/hostname
(9)时间同步
[CentOS6]
$ ntp
$ ntpq -p

[CentOS7]
$ chrony
$ chronyc sources

364、如何开放被动模式的 FTP服务 ?

答 : (1) 装载ftp追踪时的专用的模块

       # modprobe nf_conntrack_ftp

  (2) 放行请求报文 : 

          命令连接 : NEW、ESTABLISHED

         数据连接 : RELATED 、ESTABLISHED

        #   iptables -A INPUTIP -d LocalIP -p tcp --dport 21 -m state NEW,ESTABLISHED -j ACCEPT

       #   iptables -A INPUTIP -d LocalIP -p tcp -m state RELATED,ESTABLISHED -j ACCEPT

 (3)放行响应报文

        ESTABLISHED

       # iptables -A OUTPUT -s LocalIP -p tcp -m state --state ESTABLISHED 

-j ACCEPT

365、如何防火墙保存及重载规则 :

从指定文件重载规则 : iptables-restore < /PATH/T/SOMEFILE

保存规则至指定文件 : iptables-save > /PATH/T/SOMEFILE

CentOS 6 :

        service iptables save

                iptables-save > /etc/sysconfig/iptables

      service iptables restart

              iptables-restore > /etc/sysconfig/iptables

CentOS 7 :

    引入了新的iptables前端管理服务工具 : firewalld

   firewalld-cmd

   firewalld-config

366、现在给你三百台服务器,你怎么对他们进行管理?
答 : 管理3百台服务器的方式:
1)设定跳板机,使用统一账号登录,便于安全与登录的考量。
2)使用salt、ansiable、puppet进行系统的统一调度与配置的统一管理。
3)建立简单的服务器的系统、配置、应用的cmdb信息管理。便于查阅每台服务器上的各种信息记录。

367、LVS、Nginx、HAproxy有什么区别?工作中你怎么选择?
LVS: 是基于四层的转发
HAproxy: 是基于四层和七层的转发,是专业的代理服务器
Nginx: 是WEB服务器,缓存服务器,又是反向代理服务器,可以做七层的转发

区别: LVS由于是基于四层的转发所以只能做端口的转发而基于URL的、基于目录的这种转发LVS就做不了。

工作选择:
HAproxy和Nginx由于可以做七层的转发,所以URL和目录的转发都可以做在很大并发量的时候我们就要选择LVS,像中小型公司的话并发量没那么大选择HAproxy或者Nginx足已,由于HAproxy由是专业的代理服务器配置简单,所以中小型企业推荐使用HAproxy。

368、Tomcat和Resin有什么区别,工作中你怎么选择?
区别:Tomcat用户数多,可参考文档多,Resin用户数少,可考虑文档少。最主要区别则是Tomcat是标准的java容器,不过性能方面比resin的要差一些但稳定性和java程序的兼容性,应该是比resin的要好。
工作中选择:现在大公司都是用resin,追求性能;而中小型公司都是用Tomcat,追求稳定和程序的兼容。

369、什么是中间件?什么是jdk?
中间件介绍:
中间件是一种独立的系统软件或服务程序,分布式应用软件借助这种软件在不同的技术之间共享资源。
中间件位于客户机/ 服务器的操作系统之上,管理计算机资源和网络通讯是连接两个独立应用程序或独立系统的软件。相连接的系统,即使它们具有不同的接口。但通过中间件相互之间仍能交换信息。执行中间件的一个关键途径是信息传递通过中间件,应用程序可以工作于多平台或OS环境。
jdk:jdk是Java的开发工具包。它是一种用于构建在 Java 平台上发布的应用程序、applet 和组件的开发环境。

370、讲述一下Tomcat8005、8009、8080三个端口的含义?
8005==》 关闭时使用
8009==》 为AJP端口,即容器使用,如Apache能通过AJP协议访问Tomcat的8009端口
8080==》 一般应用使用

371、什么叫CDN?

  • 即内容分发网络
  • 其目的是通过在现有的Internet中增加一层新的网络架构,将网站的内容发布到最接近用户的网络边缘,使用户可就近取得所需的内容,提高用户访问网站的速度。

372、什么叫网站灰度发布?
灰度发布是指在黑与白之间,能够平滑过渡的一种发布方式AB test就是一种灰度发布方式,让一部用户继续用A,一部分用户开始用B如果用户对B没有什么反对意见,那么逐步扩大范围,把所有用户都迁移到B上面 来灰度发布可以保证整体系统的稳定,在初始灰度的时候就可以发现、调整问题,以保证其影响度。

373、简述DNS进行域名解析的过程?
用户要访问www.baidu.com,会先找本机的host文件,再找本地设置的DNS服务器,如果也没有的话,就去网络中找根服务器,根服务器反馈结果,说只能提供一级域名服务器.cn,就去找一级域名服务器,一级域名服务器说只能提供二级域名服务器.com.cn,就去找二级域名服务器,二级域服务器只能提供三级域名服务器.baidu.com.cn,就去找三级域名服务器,三级域名服务器正好有这个网站www.baidu.com,然后发给请求的服务器,保存一份之后,再发给客户端。

374、RabbitMQ是什么东西?
RabbitMQ也就是消息队列中间件,消息中间件是在消息的传息过程中保存消息的容器、消息中间件再将消息从它的源中到它的目标中标时充当中间人的作用。
队列的主要目的是提供路由并保证消息的传递;如果发送消息时接收者不可用。消息队列不会保留消息,直到可以成功地传递为止,当然,消息队列保存消息也是有期限地。

375、讲一下Keepalived的工作原理?
在一个虚拟路由器中,只有作为MASTER的VRRP路由器会一直发送VRRP通告信息,BACKUP不会抢占MASTER,除非它的优先级更高。当MASTER不可用时(BACKUP收不到通告信息)多台BACKUP中优先级最高的这台会被抢占为MASTER。这种抢占是非常快速的(<1s),以保证服务的连续性;由于安全性考虑,VRRP包使用了加密协议进行加密。BACKUP不会发送通告信息,只会接收通告信息;

376、讲述一下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这种实现方式不需要隧道结构,因此可以使用大多数操作系统做为物理服务器。

缺点:(不能说缺点,只能说是不足)要求负载均衡器的网卡必须与物理网卡在一个物理段上。

377、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及缓存层

  1. 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

378、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仅能支持http、https和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请求。

379、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功能,启用之后可以支持单独的表备份

380、keepalived的工作原理和如何做到健康检查

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 # HTTP/SSL 检查后的摘要信息用工具genhash生成

status_code 200# HTTP/SSL 检查返回的状态码

}

connect_port 80 # 连接端口

bindto

connect_timeout 3 # 连接超时时间

nb_get_retry 3 # 重连次数

delay_before_retry 2 #连接间隔时间

}

381、使用tcpdump监听主机为192.168.1.1,tcp端口为80的数据,同时将输出结果保存输出到tcpdump.log

tcpdump ‘host 192.168.1.1 and port 80’ > tcpdump.log

382、如何将本地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

383、实时抓取并显示当前系统中tcp 80端口的网络数据信息,请写出完整操作命令

tcpdump -nn tcp port 80

384、服务器开不了机怎么解决一步步的排查

A、造成服务器故障的原因可能有以下几点:

B、如何排查服务器故障的处理步骤如下:

385、Linux系统中病毒怎么解决?

1)最简单有效的方法就是重装系统

2)要查的话就是找到病毒文件然后删除中毒之后一般机器cpu、内存使用率会比较高机器向外发包等异常情况,排查方法简单介绍下

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

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

rm -f 命令删除病毒文件

检查计划任务、开机启动项和病毒文件目录有无其他可以文件等

3)由于即使删除病毒文件不排除有潜伏病毒,所以最好是把机器备份数据之后重装一下。

386、公司的内网某台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,个人觉得就要重装系统了

387、你常用的Nginx模块,用来做什么

rewrite模块,实现重写功能

access模块:来源控制

ssl模块:安全加密

ngx_http_gzip_module:网络传输压缩模块

ngx_http_proxy_module 模块实现代理

ngx_http_upstream_module模块实现定义后端服务器列表

ngx_cache_purge实现缓存清除功能

388、请列出你了解的web服务器负载架构

Nginx

Haproxy

Keepalived

LVS

389、查看http的并发请求数与其TCP连接状态

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

还有ulimit -n 查看linux系统打开最大的文件描述符,这里默认1024

不修改这里web服务器修改再大也没用,若要用就修改很几个办法,这里说其中一个:

修改/etc/security/limits.conf

  • soft nofile 10240

  • hard nofile 10240

重启后生效

390、用tcpdump嗅探80端口的访问看看谁最高

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

391、写一个脚本,实现判断192.168.1.0/24网络里,当前在线的IP有哪些,能ping通则认为在线

#!/bin/bash
for ip in seq 1 255
do
{
ping -c 1 192.168.1.$ip > /dev/null 2>&1
if [ ? e q 0 ] ; t h e n e c h o 192.168.1. ? -eq 0 ]; then echo 192.168.1. ip UP
else
echo 192.168.1.$ip DOWN
fi
}&
done
wait

392、已知 apache 服务的访问日志按天记录在服务器本地目录/app/logs 下,由于磁盘空间紧张

现在要求只能保留最近 7 天的访问日志!请问如何解决? 请给出解决办法或配置或处理命令

创建文件脚本:

#!/bin/bash
for n in seq 14
do
date -s “11/0$n/14”
touch access_www_(date +%F).log
done

解决方法:

pwd/application/logs

ll

-rw-r–r--. 1 root root 0 Jan 1 00:00 access_www_2015-01-01.log
-rw-r–r--. 1 root root 0 Jan 2 00:00 access_www_2015-01-02.log
-rw-r–r--. 1 root root 0 Jan 3 00:00 access_www_2015-01-03.log
-rw-r–r--. 1 root root 0 Jan 4 00:00 access_www_2015-01-04.log
-rw-r–r--. 1 root root 0 Jan 5 00:00 access_www_2015-01-05.log
-rw-r–r--. 1 root root 0 Jan 6 00:00 access_www_2015-01-06.log
-rw-r–r--. 1 root root 0 Jan 7 00:00 access_www_2015-01-07.log
-rw-r–r--. 1 root root 0 Jan 8 00:00 access_www_2015-01-08.log
-rw-r–r--. 1 root root 0 Jan 9 00:00 access_www_2015-01-09.log
-rw-r–r--. 1 root root 0 Jan 10 00:00 access_www_2015-01-10.log
-rw-r–r--. 1 root root 0 Jan 11 00:00 access_www_2015-01-11.log
-rw-r–r--. 1 root root 0 Jan 12 00:00 access_www_2015-01-12.log
-rw-r–r--. 1 root root 0 Jan 13 00:00 access_www_2015-01-13.log
-rw-r–r--. 1 root root 0 Jan 14 00:00 access_www_2015-01-14.log

find /application/logs/ -type f -mtime +7 -name “*.log”|xargs rm –f

##也可以使用-exec rm -f {} ;进行删除

ll

-rw-r–r--. 1 root root 0 Jan 7 00:00 access_www_2015-01-07.log
-rw-r–r--. 1 root root 0 Jan 8 00:00 access_www_2015-01-08.log
-rw-r–r--. 1 root root 0 Jan 9 00:00 access_www_2015-01-09.log
-rw-r–r--. 1 root root 0 Jan 10 00:00 access_www_2015-01-10.log
-rw-r–r--. 1 root root 0 Jan 11 00:00 access_www_2015-01-11.log
-rw-r–r--. 1 root root 0 Jan 12 00:00 access_www_2015-01-12.log
-rw-r–r--. 1 root root 0 Jan 13 00:00 access_www_2015-01-13.log
-rw-r–r--. 1 root root 0 Jan 14 00:00 access_www_2015-01-14.log

393、如何优化 Linux系统(可以不说太具体)?

不用root,添加普通用户,通过sudo授权管理
更改默认的远程连接SSH服务端口及禁止root用户远程连接
定时自动更新服务器时间
配置国内yum源
关闭selinux及iptables(iptables工作场景如果有外网IP一定要打开,高并发除外)
调整文件描述符的数量
精简开机启动服务(crond rsyslog network sshd)
内核参数优化(/etc/sysctl.conf)
更改字符集,支持中文,但建议还是用英文字符集,防止乱码
锁定关键系统文件
清空/etc/issue,去除系统及内核版本登录前的屏幕显示

394、请执行命令取出 linux 中 eth0 的 IP 地址(请用 cut,有能力者也可分别用 awk,sed 命令答)

cut方法1:

ifconfig eth0|sed -n ‘2p’|cut -d “:” -f2|cut -d " " -f1

192.168.20.130
awk方法2:

ifconfig eth0|awk ‘NR==2’|awk -F “:” ‘{print $2}’|awk ‘{print $1}’

192.168.20.130
awk多分隔符方法3:

ifconfig eth0|awk ‘NR==2’|awk -F “[: ]+” ‘{print $4}’

192.168.20.130
sed方法4:

ifconfig eth0|sed -n ‘/inet addr/p’|sed -r ‘s#^.ddr:(.)Bc.*$#\1#g’

192.168.20.130

395、请写出下面 linux SecureCRT 命令行快捷键命令的功能?

Ctrl + a
Ctrl + c
Ctrl + d
Ctrl + e
Ctrl + l
Ctrl + u
Ctrl + k
tab
Ctrl+shift+c
Ctrl+shift+v
解答:
Ctrl + a —->光标移动到行首
Ctrl + e —->光标移动到行尾
Ctrl + c —->终止当前程序
Ctrl + d —->如果光标前有字符则删除,没有则退出当前中断
Ctrl + l —->清屏
Ctrl + u —->剪切光标以前的字符
Ctrl + k —->剪切光标以后的字符
Ctrl + y —->复制u/k的内容
Ctrl + r —->查找最近用过的命令
tab —->命令或路径补全
Ctrl+shift+c —->复制
Ctrl+shift+v —->粘贴

396、每天晚上 12 点,打包站点目录/var/www/html 备份到/data 目录下(最好每次备份按时间生成不同的备份包)

cat a.sh

#/bin/bash
cd /var/www/ && /bin/tar zcf /data/html-date +%m-%d%H.tar.gz html/

crontab –e

00 00 * * * /bin/sh /root/a.sh

397、Linux开机启动流程详细步骤是什么?系统安装完,忘记密码如何破解?

开机步骤
a、首先是bios加电自检、初始化,这个过程会检测相关硬件(cpu、内存、显卡、硬盘等)

    然后读取一个启动顺序,以硬盘为例,会读取硬盘中的MBR。
b、加载内核读取/boot里边的配置文件。
c、启动初始化进程,开始运行/sbin/init
d、读取/etc/inittab确定运行级别
e、根据/etc/rc.d/rcN.d加载开机启动程序,rcN.d都是链接文件,都指向/etc/rc.d/init.d再运行/etc/rc.d/rc.local
f、用户登录(3种方式ssh、命令行、图形化)
g、进入loginshell,以命令行为例,首先读取/etc/profile这个全局配置文件

    然后再针对当前用户读取家目录中的 ~/.bash_profile和~/.bash_login和~/.profile
h、最后一步就是打开non-loginshell

进入图形化后手动新建一个终端,但这个shell不读取/etc/profile



忘记密码
a、重启系统,在GRUB界面,选取忘记密码的系统,按e键进入编辑模式
b、选项Kernel.....按e键进行编辑
c、在编辑界面rhgbquiet后加空格,然后输入"single"或"1"回车
d、按b启动进入单用户模式
f、进入系统后passwd回车输入新密码(如果有selinux,先暂时关闭setenforce0)

398、企业中Linux服务器系统分区标准是什么?(硬盘为300G,内存16G)

答:
/boot200M
/swap16G
/70G
/data剩下的全部空间

399、某一天突然发现Linux系统文件只读,该怎么办呢?完整操作步骤。

答:
首先把系统关机,然后以光盘启动进入救援模式(linuxrescue)

执行"fsck.ext3-y/dev/sda2"(假如只读的分区类型为ext3,分区为/dev/sda2)

400、安装一台系统使用DVD光盘安装,如何安装50台Linux系统如何安装呢?思考一下。

答:
a、可以多用几张DVD一台一台的安装。
b、可以用Kickstart批量安装(客户端从网络启动)

401、用虚拟机安装了一台Linux系统,突然想克隆一台服务器,克隆后发现无法上网,如何解决?

答:
a、编辑网卡配置文件/etc/sysconfig/network-scripts/ifcfg-eth0,将HWADDR和MAC地址这两行删除。
b、修改文件/etc/udev/rules.d/70-persistent-net.rules,删除之前eth0所在的行,将下一行eth1修改为eth0
c、reboot

402、Linux网卡配置文件路径是什么?要使服务器上外网,必须满足的条件有哪些?需要配置什么?

答:
网卡配置文件路径:/etc/sysconfig/network-scripts/ifcfg-eth*(*代表数字)
要上外网需要:能够链接internet的网线(或无线)、有网卡
需要配置:IP、netmask、gateway、dns(自动或手动都ok,服务器一般自动)

403、一般可以使用什么软件远程linux服务器?通过什么上传文件和下载文件?

答:
远程连接linux的软件:xshell、SecureCRT、putty、vnc(图形化)
上传和下载文件:lrzsz、sftp

404、/mnt目录主要用于什么?/root目录跟root用户有什么关系?/根目录与/boot目录有什么联系?

答:
/mnt一般用于挂载外接设备
/root是一个目录,是root用户的家目录
/boot目录是/目录下的一个子目录

405、某一天误操作,执行了rm-rf*,会有哪些情况发生?请举例。

答:
a、如果当前目录为"/tmp",那么这个目录下的东西会全部删除(默认不包含隐藏文件)
b、如果当前目录为"/",那么系统上的数据将会丢失,且无法启动,系统崩溃(谨慎使用这个命令)

406、在/tmp/目录下创建test.txt文件,内容为:Hello,World!,用一个命令写出来。

答:
echo "Hello,World!" > /tmp/test.txt

407、给test.txt文件除所有者之外增加执行权限,最终以数字写出文件的权限。

答:
655
默认是644,可以通过"chmod 655 /tmp/test.txt"

408、将普通用户test加入root组的命令是?

答:
usermod -G root test

409、查看linux服务器IP的命令,同时只显示包含ip所在的行打印出来。

答:
以eth0为例
只打印所在的行:ifconfig eth0 | grep "inetaddr:"
只打印ip:ifconfig eth0 | grep "inetaddr:" | awk -F: '{print$2}' | awk -F ' ' '{print$1}'

410、如何查看文件内容,命令有哪些?查看文件第1行到3行,查看文件最后一行。

答:
查看文件内容:vim、cat、head、tail
查看第1到行:head -3 file
查看最后一行:tail -1 file

411、每次开机在/tmp目录下创建一个当天的日期文件夹(提示:当前日期表示的方法为:date+%Y%m%d)

答:
echo "mkdir/tmp/ `date+%Y%m%d`" >> /etc/rc.d/rc.local

412、如何修改Linux启动级别为字符模式并永久生效,如何临时、永久关闭selinux及防火墙,请分别写出操作方法。

答:
更改字符模式:修改/etc/inittab一行为id:3:initdefault:
临时关闭selinnuxsetenforce0
临时关闭防火墙iptables-F
永久关闭selinux修改/etc/selinux/config一行为SELINUX=permissive
永久关闭防火墙 iptables -F; /etc/init.d/iptablessave

413、当前test.txt所属的用户为root,组为abc,请将test.txt使拥有者为abc,组为root,写出命令。

答:
chown abc:root test.txt

414、查找linux系统下以txt结尾,30天没有修改的文件大小大于20K同时具有执行权限的文件并备份到/data/backup/目录下。

答:
find / -name *txt -mtime +30 -type f -size +20k -perma= x -exec cp {} /data/backup/\;

415、用vi命令编辑test.txt,如何跳转到末行,首行,行首、行末,如何在光标行下一行插入

如何复制5行,删除10行,查找jingfeng的字符、把jingfeng替换为jfedu.net
答:
末行:G
首行:gg
行首:^(Shift+6)
行尾:$(Shift+4)
光标下插入一行:o
复制5行:5yy
删除10行:10dd
替换::%s/jingfeng/jfedu.net/g

416、git,SVN,github的区分

SVN也是版本控制系统,它是一个本地的版本控制工具。

git是免费,开源的分布式版本控制系统,在线的版本控制工具;

只不过git现在更流行,现在再用SVN比较落伍。所以,git算是程序员必备技能;

github是基于git来进行版本控制,git只是github上用来管理项目的一个工具而已,github的功能不仅仅就这点。
版本控制软件中Trunk和Branch的区别:

Trunk—软件开发过程中的主线,保存了从版本库建立到当前的信息。

Branch—软件开发过程中的分支,保存了从版本库的某一特定点(不一定是版本库建立时)到当前的信息。分支主

417、

第一部分 - 查找名称查找文件的基本查找命令

find / -type d -name test 在/目录中查找名称为test的所有目录

find / -type f -name test.php 在当前工作目录中查找名为test.PHP的所有PHP文件。

find -type -f -name “*.php” 查找目录中的所有PHP文件

第二部分 - 根据他们的权限查找文件

ll 查找权限为777的所有文件

find -type -f ! -perm 777 查找所有文件未经许可777

find / -perm 2644 查找权限设置为644的所有SGID位文件

find / -perm 1551 查找权限为551的所有Sticky Bit设置文件。

find / -perm /u=s 查找所有SUID集文件

find / -perm /u=s 查找所有SGID设置文件

find / -perm /u=r 查找所有只读文件

find / -perm /a=x 查找所有可执行文件

find / -type f -perm 0777 -print -exec chmod 644 {} ; 查找所有777个权限文件,并使用chmod命令将权限设置为644

find / -type d -perm 0777 -print -exec chmod 755 {} ; 查找所有777个权限目录,并使用chmod命令将权限设置为755。

find -type f -name “test.c” -exec rm -f {} ; 找到一个名为test.c的文件并将其删除

find -type f -name “*.mp3” -exec rm -f {} ; 查找和删除多个文件,如.mp3或.txt,然后使用。

find / tmp -type f -empty 在特定路径下查找所有空文件

find /tmp -type f -name “.*” 要查找所有隐藏的文件

第三部分 - 基于所有者和组的搜索文件

find / -user root -name test.c 在所有者root的/ root目录下查找名为test.c的所有或单个文件

find ~ -user neil 查找~目录下属于用户neil的所有文件

find /home -group developer 查找/ home目录下属于Group Developer的所有文件

find ~ -user neil -iname “.c” 查找~目录下的用户neil的所有.txt文件

第四部分 - 根据日期和时间查找文件和目录

find / -user root -name test.c 查找50天后修改的所有文件

find / -atime 50 查找50天后访问的所有文件

find / -mtime +50 -mtime -100 查找所有被修改超过50天以及少于100天的文件

find / cmin -60 查找最近1小时内更改的所有文件

find / mmin -60 查找最近1小时内修改的所有文件

find / amin -60 查找最近1小时内访问的所有文件

第五部分 - 根据大小查找文件和目录

find / -size 50M 要找到所有50MB的文件

find / -size +50M -size -100M 找到大于50MB且小于100MB的所有文件

find / -size +100M -exec rm -rf {} ; 查找所有100MB文件并使用一个命令删除它们

find / -type f -name *.mp3 -size +10M -exec rm {} ; 查找超过10MB的所有.mp3文件,并使用一个命令删除它们

418、系统信息:

硬件信息:

日志管理常用命令:

419、保存帐号/私钥加密工具存储。比如truecrypt,lpassword

答 :

基于本地存储。切勿用网盘,也不建议用lastpass等
ssh私钥添加密码
420、常见的抓包工具

答 :wireshark 、Charles、Fiddler、

421、六款主流免费网络嗅探软件wireshark , tcpdump , dsniff , Ettercap , NetStumbler

422、数据库索引可以明显提高哪一操作的效率?
正确答案: A

A SELECT
B INSERT INTO … VALUES …
C UPDATE
D DELETE

423、数据库:以下哪种锁定方式能提供最佳的并行访问性能?
正确答案: D

A 列锁定
B 表锁定
C 块锁定
D 行锁定

424、从DELETE 语句中省略WHERE 子句,将产生什么结果?
正确答案: B

A DELETE 语句将失败因为没有记录可删除
B DELETE 语句将从表中删除所有的记录
C DELETE 语句将提示用户进入删除的标准
D DELETE 语句将失败,因为语法错误

425、raceroute一般使用的是哪种网络层协议?
正确答案: D

A vrrp
B udp
C arp
D icmp

426、ospf协议中哪种lsa只能在本区域内传播?
正确答案: A

A 2
B 3
C 5
D 7

427、在linux系统中,下列哪些信号无法捕获?
正确答案: B

A SIGHUP
B SIGKILL
C SIGQUIT
D SIGUSR1

428、Linux下,如何查看一个端口被什么进程占用?
正确答案: B

A netstat -an|grep 端口号
B netstat -tnlp | grep 端口号
C iostat -an | grep 端口号
D iostat -dxt | grep 端口号

429、列表如何去掉重复元素?
正确答案: B

A 列表无法去重
B 先把list转换为一个去重的集合,然后在list化
C 先把list转换为一个去重的元组,然后在list化
D 列表不会有重复

430、Python的列表(List)和元组(Tuple)区别是什么?
正确答案: A

A 列表可变,元组不可变
B 没有区别
C 限度限制不一样
D 列表可以被迭代,元组无法迭代

431、关于Python类的继承正确的说法是?
正确答案: C

A python类无法继承
B 可以继承但是,无法执行父类的构建函数
C 可以有多个父类
D 只能有一个父类

432、下关于端口的描述哪些是正确的?
正确答案: A B C D

A FTP使用TCP 20 端口
B FTP使用TCP 21 端口
C DNS使用TCP 53 端口
D DNS使用 UDP 53端口

433、下面关于http协议中的GET 和 POST 方式的区别,哪些是错误的?
正确答案: A C

A 他们都可以被收藏,以及缓存
B GET请求参数放在URL中
C GET只用于查询请求,不能用于请求数据
D GET不应该处理敏感数据的请求

434、一个简单的网站可能由这三部分组成:一个 web服务器(提供网页和http 服务),一个后台服务器(比如java 后台程序,负责计算),一个mysql数据库服务器(存储用户数据)。然而我们知道,这样一个网站也是很脆弱的,上述三个服务器的任何一个出现问题(服务器问题,或者服务器的网络问题,或者上面运行的程序问题),都会导致网站访问不了。显然这样是无法符合美团大众点评给用户的服务承诺的。现在,假定你是公司的技术经理,你认为你会针对上述3个部分,做一些什么样的加强或改善工作,以帮助提高网站的可用性呢?(尽可能多的列举)

答 :

435、从哪几个方面评价一个hash函数的好坏?列举几种常见的hash函数?

参考答案:hash函数好坏的评判标准 1.高效,节省cpu,才能提高并发,作为中间层,需要高效的根据key来计算hash 2.冲突尽可能的小,小到可以建立唯一索引 3.尽可能的节省空间。例如,要把这个结果存储到数据库中,在给这个hash后的结果建立索引,那么我们希望这个列越小越好,以便节省数据存储空间。特别是数据库中建立索引的时候,被索引的字段自然是越小越好 4.要均匀,特别是有多个节点的时候,保证每个key分布的均匀,比较重要,否则负载没法均衡 5.rehash的时候,保证key的重新分布尽可能的小,避免给后端带来较大的冲击 常见hash函数 比如,md5,sha-1,crc16,crc32等

437、软件SDN与硬件SDN的对比和选用

典型问题:

1.软件和硬件SDN,在性能上会有多大的差异,对于后期运维管理而言,会有什么区别?

2.在城商行规模的网络架构中,软件SDN还是硬件SDN组网更适合部署?

答:性能差距主要是因为软件SDN的网络数据处理全部是由物理计算节点完成,而硬件SDN的网络数据处理大部分是在SDN交换机上完成的。相对于物理机来说,交换机无疑在数据处理上更有优势,不会与业务虚拟机争夺计算力,更符合其网络设备的角色定位。

我们之前简单做过一些测试,单拿对VxLAN包的解封装这一项来说,如果没有物理机上没有安装支持VxLAN解封装的网卡,软件SDN在物理机侧万兆网络最多能跑到30%左右,而硬件SDN则能无压力打满。

对城商行来说,数据中心运维人力上不如大中银行,因此生产上采用硬件SDN比较好,稳定性会更好。(@yuanruxu)

微分段从能力上来讲都差不多,只不过NSX是在物理机上实现,应该是在流量出方向的进行限制,而华为是在交换机上实现,是在流量的入方向进行过滤。(@kingdonwang)

城商行规模的网络架构中,硬件SDN更好一些。硬件SDN不挑服务器,软件SDN对服务器虚拟化有一定要求;硬件方案的性能比软件好;行业经验,之前一些大行大保险公司采用软件SDN方案,出现过无法接受的性能瓶颈和故障。

438、SDN控制器高可用能力

典型问题:

1.对于多Region的支持,SDN控制器的高可用是如何实现的?

2.SDN控制器集群的故障检测和故障处理的流程是什么?

答:控制器高可用和多region的支持应该是两个层面的问题,多region的对接是控制器架构上实现的问题,并非高可用。华为ac是可直接管理多个region的,我们就是这么用的,估计其他硬件SDN方案的控制器也可以;至于软件SDN方案,原生Neutron估计是不行的,ODL、onos可能可以,但是你要考虑其稳定性和性能问题。

控制器故障后对现有网络通信不会有影响,可以做到不丢包。至于恰好在故障切换过程中新建的流表,我感觉如果真的这么赶巧的话,是无法新建流表的,这个时候变动的节点应该是无法通信的,直到控制器切换动作完成之后,才能有新的流表下发下来。

439、SDN在银行的应用架构设计

1.针对金融行业SDN如何和现有架构融合?

答:在上SDN的过程中,金融行业数据中心分区分块的整体网络架构是不会改变的。即便不新建,只是改造,改变的只是单个区域内的网络部署方式,不会对其它没有上SDN的区域产生影响。改造的话工作量也是看具体需求,当前区域有没有上云,采用硬件SDN还是软件SDN,防火墙负载均衡怎样管理,需求不同改动量也是不一样的。

上SDN投入和风险是有的,除了设备资金的投入外,运维人员的技能升级也是不能少的,比如VxLAN、openflow、l2vpn等知识是之前的传统数据中心网络运维很少用到的。收益的话就是网络的性能和稳定性的提升,运维的自动化,以及对业务需求的敏捷支持,这也要看企业当前对这方面的需求是否强烈以及未来的技术规划。

金融行业的SDN一般都是部署在数据中心的某一/多个分区,这并不影响传统网络的分区架构!大多数金融机构都是在数据中心新建一个分区部署SDN网络,一般是从测试分区最先引入。分区引入SDN后无需更改现网架构,原有网络分区设备也无需更换。生产引入SDN之后,能够对业务快速上线有很大的帮助!如果要说风险的话,从技术上来说SDN使用VxLAN作为底层协议的,比传统的VLAN协议更先进可靠!(VxLAN的二层广播域比VLAN小的多)。如果上了SDN之后,需要网络运维管理人员对SDN的相关技术有一定的了解,并且能够灵活的操作SDN控制器。

不管是开发测试,还是生产,直接新建SDN功能区,和传统网络用border-leaf连起来就行。讨论生产网络如何迁移上SDN云环境的方案,是关键步骤。

440、SDN可以节约银行网络设备平台成本,但是与openstack对接带来的收益可能不如风险更明显,大家如何考虑?

答:从现有的银行网络分区的架构来看,SDN并不能降低网络设备采购成本。SDN价值主要是使企业可以应对上云后所产生的灵活多变的网络需求,提升运维效率和网络的稳定性。如果不与云平台对接,上SDN也没有意义了。当然也存在你说的对接风险问题,这就需要企业根据自身情况进行评估。

从长远来看,数据中心大部分业务区都能通过SDN实现网络共享。当前部分银行只在某个区域建设SDN,是考虑到新技术的成熟度以及应用、业务的过渡性。所以从当前来看,带来的收益并不一定很明显,但从长远来看,银行科技人员熟练掌握SDN技术之后,数据中心大部分区域都可以部署SDN,带来的收益将会非常明显。

441、从传统网络架构如何迁移到SDN的网络架构?

答:网络设备本身就支持SDN的话,从传统架构迁移到SDN,硬件成本主要是要新增SDN控制器,此外还有对接云平台、防火墙/负载均衡的开发成本,运维人员的技能学习的成本等。

在迁移的过程中,业务的连续性是会受到影响的。

双活数据中心防火墙、负载均衡的状态同步一般是由云管平台去解决,当前跨中心的场景还较少有针对业务的SDN网络案例。

442、DN集中式网关和分布式网关设计有哪些差异?有没有最佳实践方案?

答:集中式网关顾名思义,有一个专门的集中节点对三层流量进行处理,虽易于维护,但有两方面的局限性:一是性能,从网流路径上来看是三层流量必须经过的一个点,会造成流量路径的增长;二是稳定性,集中网关处理性能有限,大流量场景下可能造成网络拥塞,甚至导致网络故障。当前SDN方案一般都是采用分布式网关的设计,硬件SDN方案将网关放在leaf交换机上,跨网段互访流量直接在直连的leaf交换机上完成三层转换;软件SDN方案则是把网关放在各物理节点的软件交换机上,流量在出物理节点的时候已经完成了三层转换。

先说一下应用情况,在银行这边SDN集中式网关部署有一家,这家是最早使用SDN的银行!其他绝大多数银行均是采用分布式硬件网关的设计方式。我们再说集中式网关和分布式网关的区别:集中式网关就是所有VM的网关集中部署,一般部署在汇聚(Spine/Border)上,这样的话汇聚交换机的可靠性就要求非常高。另外还有一个比较大的缺点:集中式方案下的同一个接入交换机(Leaf)不同网段地址的互访流量还需要到汇聚交换机那边绕一圈,而分布式方案则没有这个缺点。

443、SDN控制器耦合问题和两地三中心技术优劣势?

答:网络厂商给出的SDN方案,控制器和设备都是紧耦合的。理论上来讲可以通过开源SDN控制器去管理多厂商设备进行组件fabric,但强烈不推荐,这样的话对接工作量大,且风险较高,不稳定,得不偿失。SDN的优势是网络控制灵活、管理简单,但要说在两地三中心的场景下还有什么其他优势的话,好像还没有什么特殊的东西。除非跨中心的骨干网络SDN化,或者多中心全部由SDN控制器纳管,做成一张网,不然和传统网络也差不多。(@yuanruxu)

SDN本质上是网络控制和管理,不会影响原有网络架构。目前SDN控制器厂商基本都是管理自家的设备,主要在于控制器和设备之间的接口比较多,各自的设计理念有细微差别,产品配套上就会耦合。开源SDN只能用于实验性质的项目,无法商用,开源SDN在维护性、可靠性和演进性上能力不足。从实质上来看,当前SDN并不会改变网络架构,只是让网络控制和管理变得更容易一些。

444、SDN实践中,关于controller控制器与各个网络设备的管理流量是通过业务网络还是额外的带外管理网络走?

答:不同的网流最好是分开,针对SDN控制起来流量可单分一个控制网,云平台的管理流量和SDN的管理流量从这个网来走。与其它网络平面可进行逻辑或者物理上的隔离。

445、SDN网络运维管理

典型问题:

1.采用sdn后,是不是vmware管理员和网络管理员的工作内容有明确的区分?

2.SDN网络流量可视化如何更好地实现应用故障诊断?

答:一般计算资源分配和网络开通是两个流程,所以VMWare管理员和网络管理员的工作边界和之前应该是一样的。

网络监控有两个层面,一个层面是对网络流量统计、分析工具,可看到网络的实时流量、时延、丢包、抖动等情况;另一个层面就是数据包监控,这种可以在业务出现问题的情况下进行数据包的溯源操作,找出故障原因。

SDN的网络模型与传统的网络模型不一样,SDN通过VxLAN协议在Underlay基础之上构建Overlay网络,例如华为的SDN控制器能够提供业务网络-虚拟网络-物理网络的三层互视,更好的帮助故障诊断。另外华为的FabricInsight软件能够实现对Overlay的VxLAN报文进行采集分析,通过TCP的头部识别VM与VM之间的应用丢包/时延情况。

446、删除磁盘上所有的数据

答 :dd if=/dev/zero of=/dev/sdb bs=512 count=1

sync #将数据同步到硬盘中

447、

#!/binn/bash

echo 'n

p

1

+20M

n

p

2

+512M

n

p

3

+128M

t

3

82

w’ | fdisk /dev/hda

448、统计/usr/bin/目录下的文件个数;

ls /usr/bin | wc -l

449、取出当前系统所有用户的shell ,要求,每种shell只显示一次,并且按顺序进行显示;

cut -d: -f7 /etc/passwd | sort -u

450、取出/etc/inittab文件的第6行;

head -6 /etc/inittab | tail -1

注意  : #head -6 /etc/inittab 取出倒数第六行

451、取出/etc/passwd文件中倒数第9个用户名和shell,显示到屏幕上并将其保存至/tmp/users文件中;

tail -9 /etc/passwd | head -1 | cut -d: -f1,7 | tee /tmp/users

452、显示/etc目录下所有以pa开头的文件,并统计其个数;
# ls -d /etc/pa* |wc -l

453、不使用文本编辑器,将alias cls=clear 一行内容添加至当前用户的.bashrc文件中;

echo printf “alias cls=clear” >> ~/.bashrc

454、如何显示/var/log目录下每个文件的内容类型

file /var/log/*

455、

456、

457、

458、

459、

460、

461、

462、

463、

464、

465、

466、

467、

468、

469、

470、

参考链接 :

https://www.jianshu.com/p/d9fe6be01667

https://mp.weixin.qq.com/s/o1m4I1F6Wz9b-rpqVPnEog

运维工程师笔试真题:美团点评 2017 春招真题:https://mp.weixin.qq.com/s/ORcpOsW1-L8giIN2CQsBOQ

资料 :

Linux运维跳槽必备的60道面试精华题 :https://mp.weixin.qq.com/s/kNTTM-6HimZgBpq0LhaWog

运维类面试题整理 : https://blog.csdn.net/sinat_37757403/article/details/76039915

原 linux面试问题汇总 :https://blog.csdn.net/sinat_37757403/article/details/76039907

原 北京2014年Linux运维工程师常见面试题 : https://blog.csdn.net/sinat_37757403/article/details/76039905

原 2017年企业运维经典面试题汇总 : https://blog.csdn.net/sinat_37757403/article/details/76039900

原 2016运维面试问题总结 :https://blog.csdn.net/sinat_37757403/article/details/76039898

转 Linux面试题 : https://blog.csdn.net/sinat_37757403/article/details/75879194

Linux运维工程师中级面试题 : http://blog.51cto.com/zhaochj/1600917

原 20171114美团面试题 : https://blog.csdn.net/wtxwd/article/details/78541458

转 笔试面试(3)阿里巴巴2014笔试题详解(9月22北京) : https://blog.csdn.net/wtxwd/article/details/38514243

chmod ugo+rwx directory1 设置目录的所有人(u)、群组(g)以及其他人(o)以读(r )、写(w)和执行(x)的权限
chmod go-rwx directory1 删除群组(g)与其他人(o)对目录的读写执行权限
chown user1 file1 改变一个文件的所有人属性
chown -R user1 directory1 改变一个目录的所有人属性并同时改变改目录下所有

原 网易java杭研院3面总结 : https://blog.csdn.net/wtxwd/article/details/39612955


  1. -l ↩︎

猜你喜欢

转载自blog.csdn.net/qq_40907977/article/details/85019627