运维面试题

NETWORK
1 请描述 TCP/IP 协议中主机与主机之间通信的三要素
参考答案
IP 地址(IP address)
子网掩码(subnet mask)
IP 路由(IP router)
2 请描述 IP 地址的分类及每一类的范围
参考答案
A 类 1-26
B 类 128-191
C 类 192-223
D 类 224-239 组播(多播)
E 类 240-254 科研
3 请描述 A、B、C 三类 IP 地址的默认子网掩码
参考答案
A 类 255.0.0.0
B 类 255.255.0.0
C 类 255.255.255.0
4 请描述预留给企业的私有网络使用的私有 IP 有哪三段
参考答案
A 类 10.0.0.1-10.255.255.254
B 类 172.16.0.1-172.16.31.254
C 类 192.168.0.1-192.168.255.254
5 组建一个企业网络按照 TCP/IP 五层参考模型的标准,每个层次需要选购
哪些相应层次的设备
参考答案
应用层 计算机
传输层 防火墙
网络层 路由器
数据链路层 交换机
物理层 网卡
6 请分别描述 T568A、 T568B 的线序
参考答案
T568A:白绿、绿、白橙、蓝、白蓝、橙、白棕、棕
T568B:白橙、橙、白绿、蓝、白蓝、绿、白棕、棕
7 请简要描述交换机的工作原理
参考答案
初始状态
根据源 MAC 地址学习
除源端口外的端口广播未知数据帧
接收方回应
交换机实现单播通信
8 MAC 地址的长度,组成及单播、组播、广播地址的表示方式
参考答案
MAC 地址长度 48 位,前 24 位代表厂商,后 24 位代表网卡编号,MAC 地址的第 8 位为 0 时表示该 MAC 地址为单播地
址,为 1 时表示组播地址,48 位都为 1 表示广播地址。
9 请简要描述网络层有哪些常见协议
参考答案
ARP 协议
RARP 协议
代理 ARP
ICMP 协议
10 什么是 TTL,作用并简要描述 TTL 的原理
参考答案
TTL 是数据生命周期
作用:避免数据在网络中无限循环转发
原理:当网络中的数据包每经过一个路由器 TTL 值减 1,当 TTL 值为 0 时,数据包丢弃。
11 请描述 SMTP 及 POP3 分别是什么协议、作用及端口号
参考答案
SMTP:简单邮件传输协议,用于发送和接收邮件,端口号 25。
POP3:邮局协议版本 3,用于客户端接收邮件,端口号 110。
12 请描述 http 及 https 分别是什么协议、作用及端口号
参考答案
HTTP:超文本传输协议,用于传输 Internet 浏览器使用的普通文本、超文本、音频和视频等数据,端口号为 TCP
的 80。
HTTPS:安全超文本传输协议,基于 HTTP 开发,提供加密,可以确保消息的私有性和完整性,端口号为 443 工作区
子系统。
CISCO
1 ISL 和 802.1Q 有哪些异同
参考答案
相同点:都是显式标记,即帧被显式标记了 VLAN 的信息。
不同点:IEEE 802.1Q 是公有的标记方式,ISL 是 Cisco 私有的。ISL 采用外部标记的方法,802.1Q 采用内部标记
的方法,ISL 标记的长度为 30 字节,802.1Q 标记的长度为 4 字节。
2 RIP 的最大跳数是
A. 15
B. 16
C. 12
D. 18
参考答案
最大路数为 A 选项。
这是因为,RIP 度量值为跳数 ,最大跳数为 15 跳,16 跳为不可达。
3 三层交换机的作用
参考答案
三层交换机是具有网络层功能的交换机,三层交换=二层交换+三层转发,使用三层交换技术实现 VLAN 间通信。
4 请描述基于 CEF 的快速转发有哪两个信息表
参考答案
转发信息库(FIB):FIB 类似于路由表,包含路由表中转发息的镜像。当网络的拓扑发生变化时,路由表将被更新,
而 FIB 也将随之变化,这些信息是根据路由表中的信息得到的。
邻接关系表:存储第 2 层编址信息,对于每个 FIB 条目,邻接关系表中都包含相应的第 2 层地址。
5 什么是 STP 及作用
参考答案
STP :生成树协议
作用:逻辑上断开环路,防止广播风暴的产生。当线路故障,阻塞接口被激活,恢复通信,起备份线路的作用。
6 什么是 HSRP 及作用
参考答案
HSRP:热备份路由选择协议
作用:确保了当网络边缘设备或接入链路出现故障时,用户通信能迅速并透明地恢复,以此为 IP 网络提供冗余性。
通过使用同一个虚拟 IP 地址和虚拟 MAC 地址,LAN 网段上的两台或者多台路由器可以作为一台虚拟路由器对外提供
服务。
7 交换机端口有哪 5 种 STP 状态
参考答案
转发(Forwarding)
学习(Learning)
侦听(Listening)
阻塞(Blocking)
禁用(Disabled)
8 请描述访问控制列表有哪三种类型
参考答案
标准访问控制列表
扩展访问控制列表
命名访问控制列表
9 请描述扩展访问控制的作用及列表号
参考答案
作用:
可以根据源 IP 地址,目的 IP 地址,指定协议,端口等过滤数据包。
扩展访问控制列表号:
100-199
10 请简要描述访问控制列表的处理过程
参考答案
如果匹配第一条规则,则不再往下检查,路由器将决定该数据包允许通过或拒绝通过。
如果不匹配第一条规则,则依次往下检查,直到有任何一条规则匹配。
如果最后没有任何一条规则匹配,则路由器根据默认的规则将丢弃该数据包。
11 请简要描述 NAT 的作用
参考答案
通过将内部网络的私有 IP 地址翻译成全球唯一的公网 IP 地址,使内部网络可以连接到互联网等外部网络上。
12 请描述 NAT 的优点及缺点
参考答案
优点:
节省公有合法 IP 地址
处理地址重叠
增强灵活性
安全性
缺点:
延迟增大
配置和维护的复杂性
不支持某些应用,可以通过静态 NAT 映射来避免
13 请描述 NAT 三种实现方式的区别
参考答案
静态转换的对应关系一对一且不变,并且没有节约公用 IP,只隐藏了主机的真实地址。
动态转换虽然在一定情况下节约了公用 IP,但当内部网络同时访问 Internet 的主机数大于合法地址池中的 IP 数量
时就不适用了。
端口多路复用可以使所有内部网络主机共享一个合法的外部 IP 地址,从而最大限度地节约 IP 地址资源。
SYSTEM
1 什么是绝对路径?什么是相对路径?
参考答案
绝对路径:以 / 开始的完整路径
相对路径:以当前工作目录为参照的路径
2 常见通配符的含义。
在命令行环境中,通配符 * 、?、[n-m] 、{n,m} 各自的含义是什么?
参考答案

  • :匹配任意个数的任意字符
    ? :匹配任意单个字符
    [n-m] :匹配从 n 到 m 这个连续范围内的任意单个字符
    {n,m} :匹配字符串 n 或 m
    3 Linux 中管道“|”的作用?
    参考答案
    将前一个命令的输出结果,交由后面命令处理,当做后面命令的参数
    4 简述 find 命令的格式及常见用法。
    参考答案
    命令格式:find [查找范围] [查找条件]
    常见的查找条件设置:
    -type:按文件类型查找
    -name:按文件名称查找
    -size:按文件大小查找
    -mtime:按内容修改的时间
    5 vim 编辑器的工作模式及切换。
    vim 编辑器包括哪几种模式,各自的作用是什么,如何切换?
    参考答案
    主要包括三种工作模式:
    命令模式:启动 vim 编辑器后默认进入命令模式,该模式中主要完成如光标移动、字符串查找,以及删除、复制、
    粘贴文件内容等相关操作。
    输入模式:该模式中主要的操作就是录入文件内容,可以对文本文件正文进行修改、或者添加新的内容。处于输入
    模式时,vim 编辑器的最后一行会出现“—插入 --”的状态提示信息。
    末行模式:该模式中可以设置 vim 编辑环境、保存文件、退出编辑器,以及对文件内容进行查找、替换等操作。处
    于末行模式时,vim 编辑器的最后一行会出现冒号“:”提示符。
    6 YUM 简介。
    什么是 YUM,其作用是什么,主要支持哪几种方式提供软件源?
    参考答案
    是一种基于“C/S”结构的 RPM 软件更新机制,所有的软件包由集中的软件仓库提供,能够自动分析并解决软件包
    之间的依赖关系。
    支持的软件源主要包括:
    本地文件夹:file://… …
    FTP 服务器:ftp://… …
    HTTP 服务器:http://
    2 客户端配置文件。
    在建立 .repo 仓库配置文件时,常见的配置条目如下所示,请补充各自的作用。
    [Server]:( )
    name:( )
    baseurl:( )
    enabled:( )
    gpgcheck:( )
    gpgkey:( )
    参考答案
    自定义源的名称,具有唯一性
    本软件源的描述字串
    指定 YUM 服务端的 URL 地址
    是否启用此频道
    是否验证待安装的 RPM 包
    用于 RPM 验证的密钥文件
    3 客户端配置文件路径与命名。
    为 RHEL6 服务器指定要使用的 YUM 源时,建立的配置文件一般应放在( )目录下,其扩展名应该是( )。
    参考答案
    /etc/yum.repos.d、.repo
    7 编译源码包过程介绍。
    采用源码包编译的方式安装软件包时,有哪些基本过程、各自的作用是什么?
    参考答案
    tar 解包:解压、释放安装包内的文件
    ./configure 配置:针对当前系统环境指定安装目录、选择功能等设置。
    make 编译:将源代码编译成二进制的可执行程序、库文件等数据。
    make install:将编译好的程序文件、配置文档等复制到对应的安装目录。
    8 Linux 目录结构介绍。
    Linux 系统的根目录下主要包括哪些文件夹,各自的作用是什么?
    参考答案
    /boot:存放 Linux 内核、引导配置等启动文件。
    /bin:存放最基本的用户命令,普通用户有权限执行。
    /dev:存放硬盘、键盘、鼠标、光驱等各种设备文件。
    /etc:存放各种配置文件、配置目录。
    /home:存放普通用户的默认工作文件夹(即宿主目录、家目录)。
    /root:Linux 系统管理员(超级用户)root 的宿主目录。
    /sbin:存放最基本的管理命令,一般管理员用户才有权限执行。
    /usr:存放额外安装的应用程序、源码编译文件、文档等各种用户资料。
    /var:存放日志文件、用户邮箱目录、进程运行数据等变化的文档。
    /tmp:存放系统运行过程中使用的一些临时文件。
    9 find 命令的扩展。
    在 Linux 中 find 常见的选项都有哪些?都有什么作用?
    参考答案
    -type:按文件类型查找
    -name:按文件名称查找
    -size:按文件大小查找
    -mtime:按内容修改的时间
    -iname:根据名称查找,忽略大小写
    -uid:根据 uid 查找,属于这个用户的文件
    -gid :根据 gid 查找,属于这个组的文件
    -user :根据用户名查找,查找属于这个用户的
    -group :根据组名查找,查找属于这个组的
    -nouser :查找这个文件不属于任何用户的
    -nogroup :查找这个文件不属于任何组的
    -maxdepth :限制目录查找的深度
    -inum :根据文件 i 节点编号查找
    10 简述 autofs 服务。
    作用、主要配置文件、配置要点?
    参考答案
    1)autofs 的作用:
    autofs 即触发挂载,它是一种看守程序。如果检测到用户正试图访问一个尚未挂载的文件系统,它就会自动检测该
    文件系统,如果存在,那么 autofs 会自动将其挂载。另一方面,如果它检测到某个已挂载的文件系统在一段时间
    内没有被使用,那么 autofs 会自动将其卸载。因此一旦运行了 autofs 后,用户就不再需要手动完成文件系统的挂
    载和卸载。
    2)autofs 的配置文件:/etc/auto.master 与/etc/auto.misc
    11 简述 LVM 的含义及特点。
    LVM 的含义及优势?/boot 是否可建立在 LVM 卷上,为什么?
    参考答案
    1)LVM:用来整合磁盘空间和文件系统的一种逻辑机制,通过将多个物理分区/磁盘从逻辑上组合成一个更大的整
    体,从这个整体中划分出不同的逻辑分区,用来创建文件系统。
    2)LVM 的主要优势如下所述:
    逻辑分区的大小可以根据需要扩大和缩减,因此生产系统上的文件系统也可以在线改变大小(在卷组容量范围内),
    不会导致系统中断
    物理存储空间(硬盘、分区)由 LVM 统一组织为卷组,可以方便的加入或移走分区,以扩大或减小卷组的容量,充
    分利用硬盘空间
    文件系统建立在 LVM 逻辑卷之上,可以跨越分区、跨越磁盘,方便使用
    3)/boot 不能建立在 LVM 之上,因为/boot/目录下存放着引导程序,而 Linux 启动不支持从 LVM 卷上读取引导程序。
    12 简述 RAID 的含义及特点。
    RAID 的含义及优势?RAID0、RAID1、RAID5 分别指什么、各自的特点?
    参考答案
    1)RAID:廉价冗余磁盘阵列,指通过硬件/软件技术将多个较小/低速的磁盘整合成一个大磁盘使用的一种存储技
    术,其不仅可存储数据,还可以实现一定程度的冗余保障,具有“速度快、安全性高”的优势。
    2)RAID0、RAID1、RAID5 的含义及特点如下:
    RAID0:条带模式,由两个或两个以上的磁盘组成,同一份文档分散在不同的磁盘中,并行写入,提高写效率。
    RAID1:镜像模式,由至少两个磁盘组成,同一份文件被分别写入到不同的磁盘中,每份磁盘数据一样,实现容错,
    提高读效率。
    RAID5:分布式奇偶校验的独立磁盘模式,结合 RAID0 和 RAID1 的好处,同时避免它们的缺点。由至少 3 块以上大
    小相同的磁盘组成,实现冗余。
    13 RHEL6.x 系统包括哪几种运行级别。
    各自的特点是什么?
    参考答案
    默认包括 7 种运行级别:
    0:关机
    1:单用户模式
    2:字符界面的多用户模式(不支持网络)
    3:字符界面的完整多用户模式
    4:未分配使用
    5:图形界面的多用户模式
    6:重启
    14 请描述 RHEL6.x 系统的引导过程?
    参考答案
    加载 BIOS,检查硬件信息
    读取并执行第一个开机设备内 MBR
    运行 grub 引导加载 kernel
    内核启动/sbin/init 程序
    init 系统初始化
    确定默认的运行级别
    触发 runlevel 事件,运行/etc/rc.d/rc
    最后执行/etc/rc.d/rc.local
    加载终端或 X-Window 接口
    15 SSH 协议简介。
    OpenSSH 服务器使用的协议、默认端口、主配置文件分别是什么?SSH 与 Telnet 应用的区别在哪里?
    参考答案
    OpenSSH 使用 TCP 协议,默认端口是 22,主配置文件/etc/ssh/sshd_config。
    SSH 的英文全称是 Secure SHell,即安全外壳。SSH 会把传输过程中的数据加密,且支持压缩以提高传输速度;而
    Telnet 在网络上以明文传送口令和数据,安全级别低,容易受到攻击。
    16 Linux 常见的系统日志文件都有哪些,各自的用途?
    参考答案
    /var/log/messages 内核及公共消息日志
    /var/log/cron 计划任务日志
    /var/log/dmesg 系统引导日志
    /var/log/maillog 邮件系统日志
    /var/log/secure 记录与访问限制相关日志
    17 常见的 linux 开机设置文件。
    /etc/fstab 与/etc/initab、/etc/rc.local 三个配置文件的作用?
    参考答案
    /etc/fstab:实现开机自动挂载设备的配置文件
    /etc/initab:定义开机进入默认级别的配置文件
    /etc/rc.local:定义开机自定义任务的配置文件
    18 FTP 协议简介。
    FTP 服务器在传输层使用的协议、默认端口、FTP 主目录绝对路径?
    参考答案
    FTP 服务器在传输层使用的协议是 tcp
    默认的端口号为 21
    FTP 主目录为/var/ftp
    19,suid,sgid,sticky bit 的作用?
    suid, 以属主的身份运行程序
    sgid, 在目录中创建的文件继承所在目录的属主
    sticky bit 用户只能修改,删除自己的文件
    20.解释下什么是 GPL,GNU,自由软件?
    GPL:(通用公共许可证):一种授权,任何人有权取得、修改、重新发布自由软件的权力。
    GNU:(革奴计划):目标是创建一套完全自由、开放的的操作系统。
    自由软件:是一种可以不受限制地自由使用、复制、研究、修改和分发的软件。主要许可证有 GPL 和 BSD 许可证两
    种。
    21.如何选择 Linux 操作系统版本?
    一般来讲,桌面用户首选 Ubuntu;服务器首选 RHEL 或 CentOS,两者中首选 CentOS。
    根据具体要求:
    ①安全性要求较高,则选择 Debian 或者 FreeBSD。
    ②需要使用数据库高级服务和电子邮件网络应用的用户可以选择 SUSE。
    ③想要新技术新功能功能可以选择 Feddora,Feddora 是 RHEL 和 CentOS 的一个测试版和预发布版本。
    ④根据现有状况,绝大多数互联网公司选择 CentOS。现在比较常用的是 6 系列,现在市场占有大概一半左右。另外
    的原因是 CentOS 更侧重服务器领域,并且无版权约束。
    22.初学者在 Linux 系统的开机启动项如何选择?
    建议选择五个开机启动项:
    ①.crond: 该服务用于周期地执行系统及用户配置的计划任务。有要周期性执行的任务计划需要开启,此服务是
    生产场景必须要用的一个软件。
    ②.iptables: iptables 包过滤防火墙,有外网 IP 时,考虑开启。
    ③.network: 启动系统时,若想激活/关闭启动时的各个网络接口,则应(必须)考虑开启。
    ④.sshd: 远程连接 Linux 服务器时需要用到这个服务程序,所以必须要开启,否则将无法远程连接到 Linux 服务
    器。
    ⑤.rsyslog: 是操作系统提供的一种机制,系统的守护程序通常会使用 rsyslog 将各种信息收集写入到系统日志
    文件中,CentOS6 以前此服务的名字为 syslog。
    ⑥.sysstat: 是一个软件包,包含监测系统性能及效率的一组工具,这些工具对于 Linux 系统性能数据很有帮助,
    比如 CPU 使用率、硬盘和网络吞吐数据等,这些数据的分析,有利于判断系统运行是否正常,所以它是提高系统运
    行效率、安全运行服务的助手。
    23.请描述 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,去除系统及内核版本登陆前的屏幕显示。
    24.描述 Linux 运行级别 0-6 的各自含义
    0:关机模式
    1:单用户模式<==破解 root 密码
    2:无网络支持的多用户模式
    3:有网络支持的多用户模式(文本模式,工作中最常用的模式)
    4:保留,未使用
    5:有网络支持的 X-windows 支持多用户模式(桌面)
    6: 重新引导系统,即重启
    25.描述 Linux 系统从开机到登陆界面的启动过程
    ⑴开机 BIOS 自检,加载硬盘。
    ⑵读取 MBR,MBR 引导。
    ⑶grub 引导菜单(Boot Loader)。
    ⑷加载内核 kernel。
    ⑸启动 init 进程,依据 inittab 文件设定运行级别
    ⑹init 进程,执行 rc.sysinit 文件。
    ⑺启动内核模块,执行不同级别的脚本程序。
    ⑻执行/etc/rc.d/rc.local
    ⑼启动 mingetty,进入系统登陆界面。
    26.描述 Linux 下软链接和硬链接的区别
    在 Linux 系统中,链接分为两种,一种是硬链接(Hard link),另一种称为符号链接或软链接(Symbolic Link)。
    ①默认不带参数的情况下,ln 创建的是硬链接,带-s 参数的 ln 命令创建的是软链接。
    ②硬链接文件与源文件的 inode 节点号相同,而软链接文件的 inode 节点号,与源文件不同,
    ③ln 命令不能对目录创建硬链接,但可以创建软链接。对目录的软链接会经常使用到。
    ④删除软链接文件,对源文件和硬链接文件无任何影响。
    ⑤删除文件的硬链接文件,对源文件及软链接文件无任何影响。
    ⑥删除链接文件的源文件,对硬链接文件无影响,会导致其软链接失效(红底白字闪烁状)。
    ⑦同时删除源文件及其硬链接文件,整个文件才会被真正的删除。
    ⑧很多硬件设备的快照功能,使用的就是类似硬链接的原理。
    ⑨软链接可以跨文件系统,硬链接不可以跨文件系统。
    27.生产场景如何对 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,看容量要求加盘即可。
    28.描述 Linux 下文件删除的原理
    Linux 系统是通过 link 的数量来控制文件删除的,只有当一个文件不存在任何 link 的时候,这个文件才会被删除。
    一般来说每个文件两个 link 计数器来控制 i_count 和 i_nlink。当一个文件被一个程序占用的时候 i_count 就加 1。
    当文件的硬链接多一个的时候 i_nlink 也加 1。删除一个文件,就是让这个文件,没有进程占用,同时 i_link 数量
    为 0。
    29.请简单描述 VI 编辑器的使用
    ①vi 编辑器是 linux 系统下最最基本和最常用的标准文本编辑器。
    ②vi 编辑器有三种工作模式:普通模式、编辑模式、命令模式。
    ③普通模式下的键盘输入任何字符都是当作命令来执行的,也可以输入命令进行光标的移动,字符、单词、行的复
    制、粘帖以及删除等操作。
    ④编辑模式主要用于文本的输入。在该模式下,用户输入的任何字符都被作为文件的内容保存起来。
    ⑤命令模式下,用户可以对文件进行一些如字符串查找、替换、显示行号等操作还是必须要进入命令模式的。
    ⑥在普通模式下输入冒号即可进入命令模式,此时 vi 窗口的状态行会显示出冒号,等待用户输入命令。“i”插入
    模式,即可以进行编辑。用户输入完成后,按【Esc】之后编辑器又返回到普通模式下,在命令模式下,保存退出,
    可以使用的命令为 wq 和 x。前面加!表示强制退出,强制保存等。
    30.请简单说出用户管理的相关命令及用途
    #组管理命令
    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 #用户切换工具
    31.请简述基础正则表达式 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 就不需要转义了。
    32.请简述基础正则表达式 sed 高级参数的使用(计时 4 分钟)
    解答:
    -n 取消默认输出
    -p 打印
    -d 删除
    -e 允许多项编辑
    sed 取行,要特别注意 sed -n ‘s###g’ filename 的使用,sed 的( )的功能可以记住正则表达式的一部分,其中,
    \1 为第一个记住的模式即第一个小括号中的匹配内容,\2 第二记住的模式,即第二个小括号中的匹配内容,sed
    最多可以记住 9 个。
    实际字符的选取最好要唯一,正则表达式是贪婪的,总是尽可能的匹配更远的符合匹配的内容。另外注意字符串中
    的空格。
    33.请给出查看当前哪些用户在线的 Linux 命令
    w #显示目前系统登录用户
    who #显示目前已登录用户信息
    last #列出目前与过去登入系统的用户相关信息
    lastlog #检查某特定用户上次登录时间
    whoami #打印与当前生效的用户 ID 关联的用户名
    finger #用户信息查找程序
    id #显示指定用户或当前用户的用户与组信息
    34.请你描述下 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
35.请简述修改/etc/sudoers 配置文件的注意事项
①别名的名称可以包含大写字母。数字、下划线。如果是字母必须要大写,(别名为一群拥有相同属性的集合)。
②一个别名下面可以有多个成员,成员间通过半角(,)逗号隔开。成员必须有效实际存在。
别名成员受别名类型 Host_Alias、User_Alias、Runas_Alias、Cmnd_Alias 制约,定义什么类型的别名,就要有相
什么类型的成员匹配。
③用户组前面必须加%号。命令别名下的成员必须是文件或目录的绝对路径。
④指定切换用户要用()括号括起来,如果省略,则默认 root 用户,如果括号里是 ALL,则代表能切换到所有用户。
⑤命令路径要使用全路径。
⑥别名规则每行算一个规则,一行容不下时用\续行。另外超过一行,用反斜线换行。
⑦一般不建议先给 all 权限,后面排除。用什么权限,就给什么权限。(注意权限,语法)。
如果不需要密码直接运行命令的应该加 NOPASSWD 参数。
⑧禁止某类程序或命令执行,要在命令动作前面加上“!”号,并放在允许执行命令之后。
36.请描述如何实现 linux 系统集权分治的权限分级精细管理?
① 收集以及制定用户和权限的匹配信息,原则是给于最小权限,但是又能完成所承担的工作职责。
② 各个用户组设置对应权限,用什么给什么,精细到每一条指令上根据分组情况。
③ 创建规划权限分组的用户.添加相关用户组。并修改 etc/sudoers 配置文件。
④ 增加 sudo 的权限开放,确定相关用户加入如 soduers 权限列表,并详细设置所开放权限内容,并选择是否需要
密码的相关执行权限开放。(注意 ALL 权限,以及密码修改权限设置)。
⑤ 不建议先给 all 权限,后面排除。建议使用白名单。
⑥实战调试测试相关权限是否正确配置完成。
⑦编写操作说明,及相关注意事项。
⑧调试完毕,邮件周知所有相关人员系统权限设置生效,并附带操作说明及相关注意事项。
37.请写出下面 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 执行屏幕锁定
38.请描述服务器账户日志审计的 5 种解决方案。
⑴通过环境变量 syslog 对全部全部日志进行审计(信息量太大,不推荐)
⑵sudo 配合 syslog 服务,进行 sudo 操作日志进行审计(信息较少,效果不错)
⑶在 bash 解释器嵌入一个监视器,让所有用户使用修改过的 bash 程序,作为解释程序。
⑷齐治的堡垒机(商业产品)。
39.如果一台办公室内主机无法上网(打不开网站),请给出你的排查步骤?
①首先确定物理链路是否联通正常。
②查看本机 IP,路由,DNS 的设置情况是否达标。
③telnet 检查服务器的 WEB 有没有开启以及防火墙是否阻拦。
④ping 一下网关,进行最基础的检查,通了,表示能够到达服务器。
⑤测试到网关或路由器的通常情况,先测网关,然后再测路由器一级一级的测试。
⑥测试 ping 公网 ip 的通常情况(记住几个外部 IP),
⑦测试 DNS 的通畅。ping 出对应 IP。
⑧通过以上检查后,还在网管的路由器上进行检查。
40.描述 Linux shell 中单引号、双引号及不加引号的简单区别
单引号:所见即所得,即将单引号内的内容原样输出,或者描述为单引号里面看到的是什么就输出什么。
双引号:把双引号里面的内容给输出出来,如果内容中有命令、变量等,会先把,变来那个、命令解析出结果,然
后输出最终内容。
双引号内的命令或者变量写法’命令或变量’或$(命令或变量)
无引号:把内容输出出来,可能不会键含有空格的字符串,视为一个整体输出,如果内容中有命令、变量等,会先
把变量、命令解析出来,然后输出最终内容,如果字符串中带有空格等特殊字符,则不能完整输出,需要改加双引
号。一般连续的字符串,数字,路径等可以用,不过最好用双引号,替代之。
41.请简述 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
运行的通常二者设置大致相同,所以通常前者会调用后者。
42.请描述下列路径的内容是做什么的?
/var/log/messages 系统日志文件
/var/log/secure 系统安全文件(显示登录信息的文件)
/var/spool/clientmqueue 例行性任务回执邮件存放文件
/proc/interrupts 当前系统中断报告文件
/etc/fstab 开机自动挂载磁盘的配置文件
/etc/profile 环境变量存放的文件
43.请给出 Linux 中 eth0 的 IP 地址和广播地址的指令,需使用 cut、awk、grep、
sed 指令。
第一种方法:使用 grep 和 cut 取值
第二种方法:使用 grep 和 awk(默认分隔符为空格)取值
第三种方法:使用 grep 和 awk(多分隔符)
第四种方法:使用 sed 和 awk
第五种方法:使用 grep 和 awk(多分隔符与加号+)
第六种方法:awk (分隔符及取行)
第七种方法:grep 网卡文件
第八种方法:head 取行 awk 分割
44.请输出你知道的 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 切换用户角色,-切换环境变量
Service
1 简述部署 Discuz!论坛的工作流程
参考答案
1)部署 LAMP 软件并启动相应服务;
2)创建网站数据库及数据库管理员账户及密码;
3)将 Discuz!压缩包中的 upload 下的内容解压到 httpd 站点根路径下,并调整好适当的权限;
4)最后,在浏览器输入网址后,进行第一次的初始化工作。
2 简要说明 PXE 安装系统流程
参考答案
客户端向 DHCP 服务器请求分配 IP 地址;
DHCP 服务器为客户端分配 IP 地址,告知 Boot server;
客户端向 Boot server 请求下载启动文件;
Boot server 向客户端提供启动文件;
客户端向文件共享服务器请求应答文件;
客户端根据应答文件信息,安装操作系统
3 简单描述虚拟化技术常见的虚拟网络类型
参考答案
桥接模式:Guest 与 Host 连接到同一个交换机上,通过桥接物理网卡,相当于直连到 Host 所在网络。
隔离模式:Guest 可访问同一虚拟交换机上的其他 Guest,但无法访问 Host 所在外部网络。
NAT 模式:Guest 的网关指向 Host 的 virtbr0 的 IP 地址,允许虚拟机共享真机的网络连接。
路由模式:由 Host 充当路由器,开启转发,需要额外设置外网与 Guest 之间互访的路由。
2 RHEL6 上实现 KVM 虚拟化需要安装哪些软件组
参考答案
Virtualization、Virtualization Client
Virtualization Tools、Virtualization Platform
4 简述 DNS 递归和迭代查询的作用
参考答案
对于一台 DNS 服务器来说:
若允许递归,则当客户端请求解析的域名非本 DNS 管辖时,本 DNS 会向其他 DNS 服务器代询;
若不允许递归,则当客户端请求解析的域名非本 DNS 管辖时,本 DNS 会放弃代询 —— 但是,如果目标地址位于已
知的某个授权子域,本 DNS 会告知客户端对应的子 DNS 服务器的地址信息(即迭代)。
5 为什么使用 LAMP?
答案: 因为 LAMP 具有 Web 资源丰富、轻量、快速开发等特点,与微软的.NET 架构相比,LAMP 具有通用、跨平
台、高性能、低价格优势、因此 LAMP 无论是性能、质量还是价格都是企业搭建网站的首选平台。
6 DNS 的解析过程?
答案:第一步:客户机提出域名解析请求,并将该请求发送给本地的域名服务器。
第二步:当本地的域名服务器收到请求后,就先查询本地的缓存,如果有该纪
录项,则本地的域名服务器就直接把查询的结果返回。
第三步:如果本地的缓存中没有该纪录,则本地域名服务器就直接把请求发
给根域名服务器,然后根域名服务器再返回给本地域名服务器一个
所查询域(根的子域)的主域名服务器的地址。
第四步:本地服务器再向上一步返回的域名服务器发送请求,然后接受请求
的服务器查询自己的缓存,如果没有该纪录,则返回相关的下级的
域名服务器的地址。
第五步:重复第四步,直到找到正确的纪录。
第六步:本地域名服务器把返回的结果保存到缓存,以备下一次使用,同时还
将结果返回给客户机。
7 DNS 的工作原理?
答案:域名解析有正向解析和反向解析之说,正向解析就是将域名转换成对应的 IP
地址的过程,它应用于在浏览器地址栏中输入网站域名时的情形;而反向解析是
将 IP 地址转换成对应域名的过程,但在访问网站时无须进行反向解析,即使在
浏览器地址栏中输入的是网站服务器 IP 地址,因为互联网主机的定位本身就是
通过 IP 地址进行的,只是在同一 IP 地址下映射多个域名时需要。另外反向解析
经常被一些后台程序使用,用户看不到。
除了正向、反向解析之外,还有一种称为“递归查询”的解析。“递归查询”
的基本含义就是在某个 DNS 服务器上查找不到相应的域名与 IP 地址对应关系时,
自动转到另外一台 DNS 服务器上进行查询。通常递归到的另一台 DNS 服务器对
应域的根 DNS 服务器。因为对于提供互联网域名解析的互联网服务商,无论从
性能上,还是从安全上来说,都不可能只有一台 DNS 服务器,而是由一台或者
两台根 DNS 服务器(两台根 DNS 服务器通常是镜像关系),然后再在下面配置
了多台子 DNS 服务器来均衡负载的(各子 DNS 服务器都是从根 DNS 服务器中
复制查询信息的),根 DNS 服务器一般不接受用户的直接查询,只接受子 DNS
服务器的递归查询,以确保整个域名服务器系统的可用性。
当用户访问某网站时,在输入了网站网址(其实就包括了域名)后,首先就
有一台首选子 DNS 服务器进行解析,如果在它的域名和 IP 地址映射表中查询到
相应的网站的 IP 地址,则立即可以访问,如果在当前子 DNS 服务器上没有查找
到相应域名所对应的 IP 地址,它就会自动把查询请求转到根 DNS 服务器上进行
查询。如果是相应域名服务商的域名,在根 DNS 服务器中是肯定可以查询到相
应域名 IP 地址的,如果访问的不是相应域名服务商域名下的网站,则会把相应
查询转到对应域名服务商的域名服务器上。
8 NTP 简介?
答案:
NTP(Network Time Protocol, 网络时间协议)是由 RFC 1305 定义的时间同步协议,用来
在分布式时间服务器和客户端之间进行时间同步,NTP 基于 UDP 保温进行传输,使用 UDP
端口号为 123。
使用 NTP 的目的是对网络内所有具有时钟的设备进行时钟同步,使网络内所有设备的时钟
保持一致,从而使设备能够提供基于统一时间的多种应用。
对于运行 NTP 的本地系统,既可以接受来自其他时钟源的同步,又可以作为时钟源同步其
他的时钟,并且可以喝其他设备互相同步。
9 NTP 工作原理?
答案:
NTP 的基本工作原理如图 1-1 所示。Device A 和 Device B 通过网络相连,他们都有自己独
立的系统时钟,需要通过 NTP 实现各自系统时钟的自动同步。为便于理解,作如下假设:
在 Device A 和 Device B 的系统时钟同步之前,DeviceA 的时钟设定
为 10:00:00am,DeviceB 的时钟设定为 11:00:00am。
设备 B 作为 NTP 时间服务器,即设备 A 将使自己的时钟与设备 B
的时钟同步。
报文在设备 A 和设备 B 之间单向传输所需要的时间是 1 秒
图 1-1 NTP 原理图
系统时钟同步过程如下:
设备 A 发送一个 NTP 报文给设备 B,该报文带有它离开设备 A 时的
时间戳,该时间戳为 10:00:00am(T 1 )。
当此 NTP 报文到达设备 B 时,设备 B 加上自己的时间戳,该时间戳
为 11:00:01am(T 2 )。
当此 NTP 报文离开设备 B 时,设备 B 再加上自己的时间戳,改时间
戳为 11:00:02(T 3 )。
当设备 A 接收到该响应报文时,设备 A 的本地时间为
10:00:03am(T 4 )。
至此,设备 A 已经拥有足够的信息来计算两个重要的参数:
报文的往返时延 Delay=(T 4 -T 1 )-(T 3 -T 2 )=2 秒。
设备 A 相对设备 B 的时间差 offset=((T 2 -T 1 )+(T 3 -T 4 ))/2=1
小时。
这样,设备 A 就能够根据这些信息来设定自己的时钟,使之与设备 B 的时钟同步。
以上内容只是对 NTP 工作原理的一个粗略描述,更详细的资料可以参阅 RFC 1305。
10 NTP 的工作模式?
答案:
设备可以采用多种 NTP 工作模式进行时间同步:
客户端/服务端模式
对等体模式
广播模式
组播模式
11 JAVA 概述?
答案:
Tomcat 在严格意义上并不是一个真正的应用服务器,它只是一个可以支持运行 Serlvet/JSP
的 Web 容器,不过 Tomcat 也扩展了一些应用服务器的功能,如 JNDI,数据库连接池,用户事
务处理等等。Tomcat 是 Apache 组织下 Jakarta 项目下的一个子项目,目前 Tomcat 被非常广泛的
应用在中小规模的 Java Web 应用中。
Tomcat 是一种具有 JSP 环境的 Servlet 容器。Servlet 容器是代替用户管理和调用 Servlet
的运行时外壳。作为一个开放源代码的软件, Jakarta -Tomcat 有着自己独特的优势:
首先,它容易得到。事实上,任何人都可以从互联网上自由地下载这个软件。无论从
http://jakarta.Apache.org 还是从其他网站(Jakarta Tomcat 是 Apache 软件基金会
开发的一个开放源码的应用服务器)。
其次,对于开发人员,特别是 Java 开发人员,Tomcat 提供了全部的源代码,包括 Servlet
引擎、JSP 引擎、HTTP 服务器。无论是对哪一方面感兴趣的程序员,都可以从这些由世
界顶尖的程序员书写的代码中获得收益。
最后,由于源代码的开放及世界上许多程序员的卓有成效的工作, Tomcat 已经可以和
大部分的主流服务器一起工作,而且是以相当高的效率一起工作。如:以模块的形式被
载入 Apache,以 ISAPI 形式被载入 IIS 或 PWS,以 NSAPI 的形式被载入 Netscape
Enterprise Server。
由于 Java 的跨平台特性,基于 Java 的 Tomcat 也具有跨平台性。
12 什么是 VPN?
答案:
VPN(Virtual Private Network,虚拟私有网)
以共享的公共网络为基础,构建私有的专用网络
以虚拟的连接,而非以物理连接贯通网络
处于私有的管理策略之下,具有独立的地址和路由规

有所通,有所不通
描述了基于 IP 的 VPN 体系结构
13 VPN 的优势?
答案:
可以快速构建网络,减小布署周期
与私有网络一样提供安全性,可靠性和可管理性
可利用 Internet,无处不连通,处处可接入
简化用户侧的配置和维护工作
提高基础资源利用率
于客户可节约使用开销
于运营商可以有效利用基础设施,提供大量、多种业

14 什么是 DHCP,DHCP 工作原理?
答案:
DHCP(Dynamic Host Configure Protocol,动态主机配置协议),用于向网络中的计算机分配 IP 地址及一些 TCP/ip
配置信息。DHCP 提供了安全,可靠且简单的 TCP/IP 网络设置,避免了 TCP/ip 网络地址的冲突,同时大大降低了工
作负担。
DHCP 的 工作原理:客户机从服务器获取 IP 的四个租约过程,客户机请求 ip,服务器相应请求,客户机选择 ip,
服务器确定租约。

  1. 客户机请求 IP 地址 —— DHCP 客户机在网络中广播一个 DHCP DISCOVER 包,请求 ip 地址 ,DHCP Discover 包
    的源地址为 0.0.0.0 。目的地址为 255.255.255.255,该包 包含客户机的 MAC 和计算机名,使服务器能够确定
    是哪个客户机发送的请求。
  2. 服务器响应请求——当 DHCP 服务器接收到客户机请求 ip 地址的信息时,就在自己的库中查找是否有合法的 ip
    地址提供给客户机,如果有 ,将此 ip 标记,广播一个 DHCP offer 包。这个包中包含:客户机的的 MAC 地址;
    提供的合法 ip;子网掩码;租约期限;服务器标示;其他参数等。因为客户机没有 ip 地址,所以还是以广播
    方式发送的,源地址:0.0.0.0 目的地 255.255.255.255。
  3. 客户机选择 IP 地址——DHCP 客户机接收到第一个 DHCP offer 包中选择 ip 地址,并在次 广播一个 DHCP request
    包到所有服务器,该包中包含为客户机提供的 ip 配置的服务器的服务标示符(ip 地址),服务器查看标示符,
    以确定自己提供的 ip 地址是否被客户机选中,如果客户机接受 ip,则发出 ip 地址的 DHCP 服务器将该地址保
    留,就不能将该地址提供给另一个 DHCP。如果拒绝,提供给下一个 ip 租约请求。这个源地址仍然是 0.0.0.0 目
    的地 255.255.255.255。
  4. 服务器确认 IP 租约——DHCP 租约的最后一步,服务器确认租约,发送一个 DHCP ack/DHCP NACK 包。服务器收
    到 DHCP request 包后,以 dhcp ack 包向客户机广播出去,当客户机收到后,就配置了 ip 地址,完成初始化,
    就可以在 TCP/IP 网络上通信了。客户机收到 DHCP nack 包后会重新发送 DHCP discover 包。这次源地址是服
    务器的 ip 地址 目的地是 255.255.255.255。
    IP 的租约更新:当客户机重启和租期到达 50%时,就需要更新租约,直接想提供的服务器发送 DHCP request 包,要
    求更新租约。客户机无法和服务器取得联系时,继续使用现有 IP,一直等到 85%时,向所有的服务器发送广播 DHCP
    request 包请求更新,如果仍然无法联系,则客户机将开始新的 ip 租约过程 DHCP discover 包
    IP 的租约释放命令 :释放的 ipconfig /release 获取是 :ipconfig /renew 。
    配置 DHCP 服务的要求:服务器具有静态 IP ;在域环境下需要使用活动目录服务授权 DHCP 服务;建立作用域。(如
    果在安装时建立则默认为 6 天,之后创建为 8 天,无线为 2 小时)
    配置选项有服务器选项、作用域选项、保留选项。服务器选项:对所有作用域生效;作用与选项:对当前作用
    域生效;保留选项:对当前作用域中某台客户机生效。
    15 VNC 简介
    答案:VNC( Virtual Network Computing,虚拟网络计算机) 是一款由 AT&T 的欧洲研究实验室开发的远程控制
    软件,允许用户在网络的任何地方使用简单的程序来和一个特定的计算机进行交互。VNC 是基于 UNIX/Linux 操作系
    统的免费开源软件,远程控制能力强大,高效使用,其性能可以和 Windows 系统中的任何远程控制软件媲美。
    16 VNC 的工作流程
    答案:(1)VNC 服务器端启动服务
    (2)VNC 客户端连接到 VNC 服务器
    (3)VNC 服务器传送对话窗口至客户端,要求输入连接密码,以及存取的 VNC 服务器虚拟机桌面。
    (4)在客户端输入连接密码后,VNC 服务器验证客户端是否有存取权限
    (5)如果客户端通过 VNC 服务器的验证,客户端既要求 VNC 服务器显示桌面环境。
    (6)被控端将画面显示控制权交由 VNC 服务器负责
    (7)VNC 服务器将把被控的桌面环境利用 VNC 通信协议送至客户端,并且允许客户端控制 VNC 服务
    器的桌面环境和输入装置。
    17 NFS 简介,什么是 NFS
    答案: 简介:通过配置 NFS 服务器可以让客户端计算机挂载 NFS 服务器上的共享目录,文件就如同于客户机的本
    地硬盘上一样。
    什么是 NFS:
    搭建服务器的基本流程
    1 网络服务器成功连接的分析
    答案:
    (1) 网络:了解网络基础知识与所需服务的通信协议
    (2) 服务器本身:了解搭建网络服务器的目的以配合主机的安装规划
    (3) 服务器本身:了解操作系统的基本操作
    (4) 内部防火墙设置:管理系统的可共享资源
    (5) 服务器软件设置:学习设置技巧与开机是否自动执行
    (6) 细节权限设置:包括 SElinux 与文件权限
    2 常见的服务器设置案例分析
    答案:
    (1) 网络环境
    (2) 对外网络
    (3) 额外服务
    (4) 服务器管理
    (5) 防火墙管理
    (6) 账号管理
    (7) 后台分析
    Shell
    1 自定义 Shell 变量时,变量名有什么规则?
    参考答案
    可以包括数字、字母、下划线,不能以数字开头
    变量名区分大小写
    赋值时等号两边不要有空格
    尽量不要使用关键字和特殊字符
    给同一个变量多次赋值时,最后一次的赋值生效
    2 简述预定义变量KaTeX parse error: Can't use function '$' in math mode at position 2: 、$̲?、$0、$#、$*、$!的作… 保存当前运行进程的(PID)号
    $? 保存命令执行结果的(返回状态)
    $0 保存当前运行的(进程名)或(脚本名)
    $# 保存位置变量的(个数)
    $* 保存所有位置变量的(值)
    $! 保存后台(最后一个进程)的 PID 号
    3 简述三种定界符在变量赋值操作中的特点。
    参考答案
    双引号 " ":允许扩展,以 $ 引用其他变量
    单引号 ’ ':禁用扩展,即便 $ 也视为普通字符
    反撇号 :将命令的执行输出作为变量值
    4 列出常见的整数值比较操作,并说明各自作用。
    参考答案
    -eq 等于(Equal)
    -ne 不等于(Not Equal)
    -ge 大于或等于(Greater or Equal)
    -le 小于或等于(Lesser or Equal)
    -gt 大于(Greater Than)
    -lt 小于(Lesser Than)
    5 简述 Shell 环境常见的中断及退出控制指令。
    参考答案
    break:跳出当前所在的循环体,执行循环体后的语句。
    continue:跳过循环体内余下的语句,重新判断条件以便执行下一次循环。
    exit:退出脚本,默认返回值是 0。
    return:用在函数里 指定返回值。
    shift:用于迁移位置变量,将 $1~$9 依次向左顺序移动。
    6 正则表达式中的+、?、分别表示什么含义?
    参考答案
    这三个字符用来限制关键词的匹配次数,含义分别如下:
    +:最少匹配一次,比如 a+可匹配 a、aa、aaa 等
    ?:最多匹配一次,比如 a?可匹配零个或一个 a
    :匹配任意多次,比如 a可匹配零个或任意多个连续的 a
    7 简述 awk 工具常用的内置变量、各自的作用。
    参考答案
    FS:保存或设置字段分隔符
    $n:即$1、$2、$3……,表示指定分隔的第几个字段
    0 : 保 存 当 前 读 入 的 整 行 文 本 内 容 N F : 记 录 当 前 处 理 行 的 字 段 个 数 ( 列 数 ) N R : 记 录 当 前 已 读 入 行 的 数 量 ( 行 数 ) F N R : 保 存 当 前 处 理 行 在 原 文 本 内 的 序 号 ( 行 号 ) F I L E N A M E : 保 存 a w k 当 前 处 理 的 ( 文 件 名 ) E N V I R O N : 调 用 S h e l l 环 境 变 量 , 格 式 : E N V I R O N [ " 变 量 名 " ] 8 , 什 么 是 s h e l l ? 如 何 查 看 当 前 系 统 支 持 的 S h e l l ? 答 案 : 1 ) 实 现 某 种 功 能 的 , 有 执 行 权 限 的 文 件 2 ) c a t / e t c / s h e l l s 9 , 如 何 切 换 当 前 使 用 的 s h e l l 答 案 : b a s h 10 、 / b i n / b a s h 特 性 有 哪 些 答 案 : 特 性 : 提 供 命 令 补 全 , 命 令 编 辑 和 命 令 历 史 表 等 功 能 11 、 用 户 配 置 文 件 是 哪 几 个 ? 有 什 么 用 ? 答 案 : 1 )   / . b a s h r c   / . b a s h p r o f i l e 可 以 在 里 面 定 义 变 量 , 用 户 每 打 开 一 个 终 端 时 加 载 的 文 件 , 只 针 对 用 户 有 效 12 、 系 统 配 置 文 件 是 哪 几 个 ? 有 什 么 用 ? / e t c / p r o f i l e / e t c / b a s h r c 可 以 在 里 面 定 义 变 量 , 用 户 每 打 开 一 个 终 端 时 加 载 的 文 件 , 针 对 所 有 用 户 生 效 13 、 s h e l l 变 量 类 型 有 哪 些 ? 列 举 出 常 用 的 4 个 预 定 义 变 量 1 ) 1 、 自 定 义 变 量 2 、 系 统 环 境 变 量 3 、 预 定 义 变 量 4 、 位 置 变 量 2 ) 0:保存当前读入的整行文本内容 NF:记录当前处理行的字段个数(列数) NR:记录当前已读入行的数量(行数) FNR:保存当前处理行在原文本内的序号(行号) FILENAME:保存 awk 当前处理的(文件名) ENVIRON:调用 Shell 环境变量,格式:ENVIRON["变量名"] 8, 什么是 shell?如何查看当前系统支持的 Shell? 答案: 1) 实现某种功能的,有执行权限的文件 2)cat /etc/shells 9,如何切换当前使用的 shell 答案: bash 10、/bin/bash 特性有哪些 答案:特性:提供命令补全,命令编辑和命令历史表等功能 11、用户配置文件是哪几个?有什么用? 答案: 1)~/.bashrc ~/.bash_profile 可以在里面定义变量,用户每打开一个终端时加载的文件,只针对用户有效 12、系统配置文件是哪几个?有什么用? /etc/profile /etc/bashrc 可以在里面定义变量,用户每打开一个终端时加载的文件,针对所有用户生效 13、shell 变量类型有哪些?列举出常用的 4 个预定义变量 1)1、自定义变量 2、系统环境变量 3、预定义变量 4、位置变量 2) 0NFNRFNRFILENAMEawkENVIRONShellENVIRON[""]8,shellShell?12cat/etc/shells9使shellbash10/bin/bash11?1 /.bashrc /.bashprofile12/etc/profile/etc/bashrc13shell4112342? $# $
    $$
    14、自定义变量的命名规则?
    1、可以用数字字每下载线,但不能用数字开头和纯数字
    2、同一个变量赋两个值,最后一个值生效
    3、给变量赋值时,两边不能有空格
    4、区分大小写
    15、变量的生命周期,和作用范围?
    1)在脚本里定义的变量,只在脚本执行过程中有效
  1. 默认情况下只在当前 Shell 里可以使用,要想定义的 Shell 在所有的 Shell 里被使用,要把变量定义为全局变

    16、脚本的执行过程?脚本的执行方式?
    1)从左到右 从上到下
  2. sh xx.sh bash xx.sh /xx/xx/sh ./xx.sh
    17、编写脚本的步骤?
    1、明确脚本要实现的功能
    2、需要使用哪些命令
    3、需要使用哪些流程控制
    4、数据是变化的,就要用变量来表示
    18、Shell 条件判断类型?
    1、文件状态
    2、数值比较
    3、字符比较
    4、逻辑比较
    19、eval 在 shell 中有什么作用?请举个例子说明?
    作用:
    #!/bin/bash
    aa=h1
    bb=h2
    var=(aa bb)
    for vas in ${var[@]}
    do
    echo $vas
    eval var_temp=$${vas}
    echo $var_temp
    done
    20、dirname 有什么作用?请举个例子说明?
    作用:获取当前脚本路径
    例子:
    #!/bin/bash
    cd dirname $0
    pwd;ls
    21、ssh -o stricthostkeychecking=no -o ConnectTimeout=60 分别代表什么意
    思?
    ssh 加接时不需要输入 key 检查,然后六十秒为超时时间
    22、说一下-n -z -d -f -e -r -w -x -l !-z 在 shell 中分别代表什么意思?-n 和-z 试
    举一个例子说明
    -n 非空为真
    -z 字符串为空为真
    -d 是目录且存在为真
    -f 是普通文件且存在为真
    -e 存在为真
    -r 可读为真
    -w 可写为真
    -x 可执行为真
    -l 是链接为真
    !-z 不为空
    1)-n 例子:
    JavaApp=( ( p s a u x ∣ g r e p " j a v a " ∣ g r e p " / a p p / g u a j i " ) ) i f [ − n " (ps aux | grep "java" | grep "/app/guaji")) if [ -n " (psauxgrep"java"grep"/app/guaji"))if[n"{JavaApp[0]}" ];then
    echo -e “\033[1;31m 脚本退出 \033[0m”
    exit 1
    fi
    2)-z 例子:
    ssh=$(ssh -o StrictHostKeyChecking=no 2 " l s / " ) i f [ [ − z " 2 "ls /") if [[ -z " 2"ls/")if[[z"ssh" ]];then
    echo -e “\033[1;31m \033[5m 远程主机($2)无法连接,脚本退出. \033[0m”
    exit 1
    fi
    23、正则表达式的 “|”、"\n"、"\r"、"\t"分别代表什么意思
    |表示或的意思
    \n 表示换行,将当前位移置下行开头
    \r 回车,将当前位置移至本行开头
    24、写出获取公网 IP 的两种方法
    ifconfig | grep -Po “(?<=addr:).*(?=Bcast)” | egrep -v
    192.168|172.1[6-9].|172.2[0-9].|172.3[0-1].|10.|127.’
    /sbin/ifconfig | awk -F’[ :]+’ ‘/inet addr:/ {print KaTeX parse error: Expected 'EOF', got '}' at position 2: 4}̲' | egrep -v '^…$表示什么意思?
    获取当前执行脚本的进程名
    26、函数内的 local 是什么意思?举一脚本例子说明
    脚本中局部变量,存在于脚本函数(function)中的变量称为局部变量,要以 local 方式进行声明,使之只在本
    函数作用域内有效,
    防止变量在函中的命名与变量外部程序中变量重名造成程序异常,下面是一脚本例子:
    #!/bin/sh
    a() {
    local s=1
    echo $s
    }
    b() {
    s=2
    echo $s
    }
    s=0
    a
    echo $s
    b
    echo s 27 、 s 27、 s27@和$*的区别
    $@将命令行每个参数视为单独的字符串,等同于"$1"、"$2"、"$3"
    $*将所有的命令行所有参数视为单个字符串,等同于"$1$2$3"
    28、$0、dirname 和 basename 有什么作用?具个例子说明?
    作用:
    dirname 获取脚本路径名
    basename 获取脚本名
    KaTeX parse error: Expected 'EOF', got '#' at position 18: …获取脚本路径和脚本名 例子: #̲!/bin/basha ech… 0’ test#"
    echo “####################”
    echo $0
    echo
    echo “#########################”
    echo “# this is ‘dirname’ test#”
    echo “#####################@@@#”
    cd dirname $0 && pwd
    echo
    echo “##########################”
    echo “# this is ‘basename’ test#”
    echo “##########################”
    echo basename $0
    29、取出 3306 端口号这个数字
    netstat -tlnp| grep 3306 | awk ‘[ :]+’ ‘{print $5}’ #[ :]+ 以空格和点为分隔符,这种分隔符有一个
    或多个
    30、shell 中单引号和双引号与不加与号分别代表什么意思
    单引号:可以说是所见即所得,即将单号引号的内容原样输出
    双引号:把双引号的内容输出出来,如果内容中有命令、变量等,会先把变量、命令解析出结果,然后再输出
    最终内容来
    无引号:把内容输出出来,会将含有空格的字符串视为一个整体输出,如果内容中有命令、变量等,会先把变
    量、命令解析出结果,
    然后再输出内容来,如果字符串中带有空格等特殊字符,则不能完整的输出,需要改加双引号,一般
    连续的字符串,数字
    路径等可以不加任何引号,不过最好用双引号替代之
    31、echo -n 是什么意思?举一脚本例子显示他的功能
    -n 不换行
    #!/bin/bash
    . /etc/init.d/functions
    echo “---------Please wait while we are checking-------------”
    echo -n “6 秒后执行该操作.”
    for ((i=0;i<6;i++))
    do
    echo -n “.”;sleep 2
    #[ $i -eq 3 ] && break
    done
    echo
    action “test success” /bin/true
    32、echo -e “\n” | nohup ping www.baidu.com > filename 2>&1 &这里的-e 和
    “\n” 是什么意思?
    -e 是代表后面输入的内容包含特珠字符需要加的参数
    \n 是代表换行

33、有 1-9 的数字,echo 输出 1-9 的数字时,屏蔽 0-5 的数字再输出
echo ‘1234567890’ | sed ‘s/[0-5]//g’
34、用 nohup 把一个脚本放在后台运行
nohup sh test.sh > filename 2>&1 &
35、用 seq 打印 10 以空格分隔,用 seq 坚着打印 10 到 1
seq -s " " 10
seq 10 -1 1
36、curl -I -s www.baidu.com | head -1 | wc -l 中的-I 和-s 代表什么意思
-s 沉默或安静模式。不显示进度表或错误消息。使卷曲静音
-I 只读取 HTTP 头! HTTP 的服务器功能命令 HEAD 此用来获取
–connetct-timeout 2 2 秒连接超时
37、wget -T 10 -c -q --spider www.baidu.com 这些参数分别代表什么意思?
-T 超时 10 少
-c 断点续传
-q 为执行命令时屏蔽他打印输出的意思,执行命令不会任何内容出来
–spider wget 命令加 spider 参数不会下载任何东西,spider 的主要作用是测试下载链接。
tries
38、生产环境常用的监控 web 的方法是哪种
用 wget 或 curl 的方法作监控
39、生产环境写脚本报错就发邮件的命令是怎么样的
mail -s “uname -n 's httpd status is on” 123456@qq.com < $logfile
40、给文件改名
mv $file 1linux-echo $file | cut -d "-" -f2
ls *.jpg | awk -F ‘_finished’ ‘{print “mv " " $0” “$1”.jpg"}’ | bash
41、查看当前目录的所有文件夹
ls -F | grep /
42、awk 中的 NF 代表什么意思?
NF 代表结尾的意思
43、shell 上: 0、1>、2>、>、2>&1、&>/dev/null 分别代表什么意思
0 表示标准输入
1>表示标准输出
2>表示标准错误输出

默认为标准输出重定向,与 1> 相同
2>&1 意思是把 标准错误输出 重定向到 标准输出.
&>/dev/null 意思是把 标准输出 和 标准错误输出 都重定向到空
Mysql
1 主流数据库服务软件有哪些?开源且跨平台的数据库软件有哪些?
参考答案
主流数据库服务软件有:
甲骨文公司 Oracle
IBM DB2
微软 SQL Server
美国 Sybase 公司 Sybase
加州大学伯克利分校计算机系开发的 PostgreSQL
开源且跨平台的数据库软件有:
MySQL、PostgreSQL:开源且跨平台
Oracle、DB2:跨平台不开源
SQL Server:不跨平台不开源
Sybase:跨平台不开源
2 MySQL 数据库的服务进程叫什么名字?监听端口是多少?默认数据库目
录是?
参考答案
服务进程名是 mysqld;监听端口是 3306;默认数据库目录为 /var/lib/mysql。
3 MySQL默认的3个库叫什么名字?哪个库里的数据不占用物理磁盘空间?
参考答案
3 个默认库:mysql、test 和 information_schema。
其中,information_schema 库的数据不占用磁盘空间,仅保存在内存里。
4 请列出 MySQL 常用的数据类型,并写出定义这些数据类型所使用的关键
字。
参考答案
MySQL 常用的数据类型:
数值类型:所用关键字为 int、float
字符类型:所用关键字为 char、varchar
日期时间类型:所用关键字为 year、time、datetime
枚举类型:所用关键字为 set、enum
5 简述索引的优点与缺点,默认情况下哪个文件保存表的索引信息?
参考答案
索引的优点与缺点如下:
索引就像一本书的目录
加快查询记录的速度
会降低插入、更新记录的速度
默认情况下“表名.MYI” 文件保存表的索引信息
6 简述在表中创建外键字段要满足那些条件?
参考答案
在表中创建外键字段要满足以下条件:
表必须都使用 innodb 存储引擎
表中外键字段的类型要匹配
被参照字段要有明确的索引
7 简述 MySQL 体系结构的组成,并描述每个组成部分的作用。
参考答案
主要包括 8 个部分:
连接池:进程数限制、内存检查、缓存检查等。
SQL 接口:用户通过 sql 客户端发过来的命令,由 sql 接口接收,sql 操作(DML 数据操作语言:查询、修改、升级
数据等;DDL 数据定义语言:创建一个新的数据库、新的索引、删除一个用户等;存储过程、视图触发器。
分析器: 分析查询语句 事务处理 对象访问权限。
优化器: 优化访问路径 、 生成执行树。
缓存和缓冲:保存 sql 查询结果。
存储引擎:用于管理存储的文件系统,将逻辑结构转换为物理结构的程序;不同的存储引擎有不同的功能和存储方
式。
管理工具:备份,恢复,安全,移植,集群等,这些工具一般和文件系统打交道,不需要和 mysql-server 打交道,
它们对应的都是命令。
物理存储设备(文件系统)。
8 简述 MySQL 数据库访问的执行过程。
参考答案
1)客户端发出请求。
2)服务器端开辟线程响应客户端请求。
3)客户端发起 sql 语句查询数据库。
4)查询缓存:记录用户的 sql 查询语句,如果查询内容相同,直接从查询缓存回复。
5)如果缓存没有进入分析器。
6)分析器:分析用户命令语法是否正确,将用户的命令进行切片,一个词一个词用空格隔开,获得用户要查询的
表、内容、用户的权限等。
7)优化器:执行路径的选择,生成执行树。(每个 SQL 语句都有很多执行路径,优化的目的就是在这些执行路径
里选择最优的执行路径)。
8)存储引擎:用于管理存储的文件系统,不同的存储引擎有不同的功能和存储方式。
9 简述 MySQL 数据库中插入、更新、查询、删除表记录的指令格式。
连接到 MySQL 数据库服务器,练习以下表记录操作:
向表中插入记录的语法格式
更新表记录的语法格式
查询表记录的语法格式
删除表记录的语法格式
参考答案
1)向表中插入记录的语法格式
insert (into)表名(字段名列表) values(字段名=值,字段名=值,…);
2)更新表记录的语法格式
update 表名(set) (字段名=值,字段名=值,…) where(条件表达式列表);
3)查询表记录的语法格式
select (字段名列表) (from) 表名 (where) 条件表达式列表;
4)删除表记录的语法格式
delete (from) 表名 (where) ( 条件表达式列表);
10 简述用户授权命令的语法格式。
参考答案
grant 权限列表 on 数据库 to 用户名@“客户端地址”
identified by “密码” with grant option;
11 在 MySQL-MMM 集群中有几种角色,各自的功能是什么?
参考答案
共 3 种角色:客户端、monitor 节点(管理节点)、agent 节点(数据库节点)
客户端:访问集群
管理节点:负责所有的监控工作的监控守护进程,决定故障节点的移除或恢复
数据库节点:运行在 MySQL 服务器上的代理守护进程,提供简单远程服务集、提供给监控节点(可用来更改只读模
式、复制的主服务器等)
12 在 MySQL-MMM 集群中可以有多少台主数据库服务器、多少台从数据库
服务器?
参考答案
在 MySQL-MMM 环境中主数据库有且只能有 2 台,从数据库理论上可以任意多台。
13 在 MySQL-MMM 集群中均衡模式和排他模式的作用是?
参考答案
均衡模式一般用于从数据库,可实现多个虚拟 IP 地址。
排他模式一般用于主数据库,只可设置一个虚拟 IP 地址。
14,简述 mysqldump 备份数据时数据库名的表示方式。
参考答案
–all-databases 所有库
数据库名 指定单个库
数据库名.表名 指定库里的指定表
-B 数据 1 数据库 2 备份多个库
15,什么是 MySQL 集群?
答案:MySQL 集群是一个无共享的(shared-nothing),分布式节点架构的存储方案,其目的是提供容错性和高性
能。数据在单个数据节点(有时也称存储节点)上存储和复制,每个数据节点运行在独立的服务器上并维护数据的
一份拷贝。每个集群还有管理节点。数据更新使用读已提交隔离级别(read-committed isolation)来保证所有节
点数据的一致性,使用两阶段提交机制(two-phased commit)保证所有节点都有相同的数据 (如果任何一个写
操作失败,则更新失败)。
MySQL 集群的最初实现将所有信息都保存在主存内,没有任何永久性存储。后来 MySQL 集群允许数据存储在磁
盘上。通过存储引擎层 MySQL 服务器作为查询引擎,可以使 MySQL 集群的性能达到最佳。这样就可以将 MySQL 应
用透明地迁移到 MySQL 集群中去。
无共享的对等节点使得某台服务器上的更新操作在其他服务器上立即可见。传播更新使用一种复杂的通信机
制,这一机制专用来提供跨网络的高吞吐量。该架构通过多个 MySQL 服务器分配负载,从而最大程度地达到高性能,
通过在不同位置存储数据保证高可用性和冗余。
16,MySQL 集群和 MySQL 有和不同?
答案:你可能会问:“集群和复制之间有什么区别那?” 集群的定义很多,通常认为集群包含成员、消息、冗余
和自动故障转移等功能,而复制仅仅是一个服务器向别一个服务器发送消息(数据)的方式。我们先讨论集群内部
的复制(又称本地复制)。
17,MySQL 集群的特点?
答案:为了实现最高性能。高可用性和冗余等目标。数据在集群内部的对等数据节点之间互相复制。数据复制采用
同步机制,每个数据节点到所有其他数据节点上,数据在多个数据节点上存储。
18,MySQL 集群有一些创建高可用性系统的专用功能,主要包括?
答案:节点回复、日志、检查点、系统恢复、热备份恢复、无单点故障、故障转移、分区、联机操作
19、MySQL 中 myisam 与 innodb 的区别,至少 5 点
【评析】将 Mysql 常见的存储引擎的特点归纳表格如下
点 myisam innodb memory archive
存储限制 256TB 64TB 有 无
事物安全 不 支持 不 不
支持索引 支持 支持 支持 不支持
锁颗粒(锁力度) 表锁 行锁(没有索引的情
况是表锁)
表锁 行锁
数据压缩 支持 不支持 支持 不支持
支持外键 不 支持 不 不
20 什么是读写分离?
MySQL Proxy 最强大的一项功能是实现“读写分离(Read/Write Splitting)”。基本的原理是让主数据库处理事务
性查询,而从数据库处理 SELECT 查询。数据库复制被用来把事务性查询导致的变更同步到集群中的从数据库。 当
然,主服务器也可以提供查询服务。使用读写分离最大的作用无非是环境服务器压力。
21 读写分离的好处
1.增加冗余
2.增加了机器的处理能力
3.对于读操作为主的应用,使用读写分离是最好的场景,因为可以确保写的服务器压力更小,而读又可以接受点时
间上的延迟。
22 读写分离提高性能之原因
1.物理服务器增加,负荷增加
2.主从只负责各自的写和读,极大程度的缓解 X 锁和 S 锁争用
3.从库可配置 myisam 引擎,提升查询性能以及节约系统开销
4.从库同步主库的数据和主库直接写还是有区别的,通过主库发送来的 binlog 恢复数据,但是,最重要区别在于
主库向从库发送 binlog 是异步的,从库恢复数据也是异步的
5.读写分离适用与读远大于写的场景,如果只有一台服务器,当 select 很多时,update 和 delete 会被这些 select
访问中的数据堵塞,等待 select 结束,并发性能不高。 对于写和读比例相近的应用,应该部署双主相互复制
6.可以在从库启动是增加一些参数来提高其读的性能,例如–skip-innodb、–skip-bdb、–low-priority-updates
以及–delay-key-write=ALL。当然这些设置也是需要根据具体业务需求来定得,不一定能用上
7.分摊读取。假如我们有 1 主 3 从,不考虑上述 1 中提到的从库单方面设置,假设现在 1 分钟内有 10 条写入,150
条读取。那么,1 主 3 从相当于共计 40 条写入,而读取总数没变,因此平均下来每台服务器承担了 10 条写入和 50
条读取(主库不承担读取操作)。因此,虽然写入没变,但是读取大大分摊了,提高了系统性能。另外,当读取被
分摊后,又间接提高了写入的性能。所以,总体性能提高了,说白了就是拿机器和带宽换性能。MySQL 官方文档中
有相关演算公式:官方文档 见 6.9FAQ 之“MySQL 复制能够何时和多大程度提高系统性能”
8.MySQL 复制另外一大功能是增加冗余,提高可用性,当一台数据库服务器宕机后能通过调整另外一台从库来以最
快的速度恢复服务,因此不能光看性能,也就是说 1 主 1 从也是可以的。
23 varchar 与 char 的区别;varchar(50)中 50 的涵义;int(20)中 20 的涵义;
char 是定长变量,varchar 是变长变量。 varchar(50)表示这一行的变量最大的存储字节是 50 个字节,int(20)同
理。
【评析】假设有一行是 name char(8),如果有一个数据是叫 AAA,那么它仅仅只有三个字节被存储进去,但是依旧
存储了 8 个字节,多余的 5 个字节空着也就空着了。而是 name varchar(8),同样是 AAA,由于是变长,所以只保存
了 3 个字节,剩下 5 个字节是弹性的,有就用,没有就不用。
在读取方面,char 的读取速度要比 varchar 快,也就是常说的“用读取换容量”,但是还是多用 varchar,当数据
库内容成万上亿的时候,节省的容量是非常非常可观的。
24 计划,mysqldump 以及 xtranbackup 的实现原理;备份恢复时间;备份
恢复失败如何处理。
mysqldump 是采用 sql 级别的备份机制,将数据表导成 sql 脚本文件,在不用的 mysql 版本之间升级时相对比较合
适。
xtranbackup 是 innodb 的 hotbackup 工具,xtrbackup 在启动的时候会复制所有的数据文件,同时会启动一个后台
进程,用于监视事务日志,并且从事务日志复制最新的修改。所以 xtrbackup 在启动的开始,就不懂的将事务日志
的每个数据文件的修改都记录下来。
mysqldump 的备份和恢复时间都很慢,任何数据的更新和变化都会被挂起。
xtrabackup 的恢复时间比 mysqldump 快一点,但是会锁表。
备份恢复失败的话,其实原因很多,主要可能就是参数设置的不对,检查一下参数。
【评析】使用 mysqldump 备份数据表的命令,在 shell 下执行:
mysqldump -u 用户名 -p 密码(可以直接-p) -h 主机名 --databases 数据库名 > 要备份的文件路径
mysqldump -u 用户名 -p 密码 -h 主机名 --all-databases >要备份的文件路径
mysqldump -u 用户名 -p 密码 -h 主机名 --no-data 数据库名 >要备份的文件路径
这里并不全,另写文章专门补充。
25 MySQL 中 InnoDB 引擎的行锁是通过加在什么上完成(或称实现)的?为什
么是这样子的?
InnoDB 的行锁是通过加在索引上实现的,为什么这么设计,我也不知道,去问 mysql 的设计公司。
26 MySQL 数据库备份方式
增量备份、差异备份、完整备份
27 MySQL 主从复制原理?
答案:
分为同步复制和异步复制,实际复制架构中大部分为异步复制。
复制的基本过程如下:
1)、Slave 上面的 IO 进程连接上 Master,并请求从指定日志文件的指定位置(或者从最开始的日志)之后的
日志内容;
2)、Master 接收到来自 Slave 的 IO 进程的请求后,通过负责复制的 IO 进程根据请求信息读取制定日志指定位
置之后的日志信息,返回给 Slave 的 IO 进程。返回信息中除了日志所包含的信息之外,还包括本次返回的信息已
经到 Master 端的 bin-log 文件的名称以及 bin-log 的位置;
3)、Slave 的 IO 进程接收到信息后,将接收到的日志内容依次添加到 Slave 端的 relay-log 文件的最末端,并
将读取到的 Master 端的 bin-log 的文件名和位置记录到 master-info 文件中,以便在下一次读取的时候能够清楚
的告诉 Master“我需要从某个 bin-log 的哪个位置开始往后的日志内容,请发给我”;
4)、Slave 的 Sql 进程检测到 relay-log 中新增加了内容后,会马上解析 relay-log 的内容成为在 Master 端真
实执行时候的那些可执行的内容,并在自身执行。
Mysql 为了解决这个风险并提高复制的性能,将 Slave 端的复制改为两个进程来完成。提出这个改进方案的人
是 Yahoo!的一位工程师“Jeremy Zawodny”。这样既解决了性能问题,又缩短了异步的延时时间,同时也减少了可
能存在的数据丢失量。当然,即使是换成了现在这样两个线程处理以后,同样也还是存在 slave 数据延时以及数据
丢失的可能性的,毕竟这个复制是异步的。只要数据的更改不是在一个事物中,这些问题都是会存在的。如果要完
全避免这些问题,就只能用 mysql 的 cluster 来解决了。不过 mysql 的 cluster 是内存数据库的解决方案,需要将
所有数据都 load 到内存中,这样就对内存的要求就非常大了,对于一般的应用来说可实施性不是太大。
复制常用架构
Mysql 复制环境 90%以上都是一个 Master 带一个或者多个 Slave 的架构模式,主要用于读压力比较大的应用的
数据库端廉价扩展解决方案。因为只要 master 和 slave 的压力不是太大(尤其是 slave 端压力)的话,异步复制
的延时一般都很少很少。尤其是自 slave 端的复制方式改成两个进程处理之后,更是减小了 slave 端的延时。而带
来的效益是,对于数据实时性要求不是特别的敏感度的应用,只需要通过廉价的 pc server 来扩展 slave 的数量,
将读压力分散到多台 slave 的机器上面,即可解决数据库端的读压力瓶颈。这在很大程度上解决了目前很多中小型
网站的数据库压力瓶颈问题,甚至有些大型网站也在使用类似方案解决数据库瓶颈。
28 mysql-mmm 简介
答案:
MMM(Master-Master replication manager for Mysql) 是一套灵活的脚本程序,用来
对 mysql replication 进行监控和故障迁移,并能管理 mysql Master-Master 复制的配置
( 同一时间只有一个节点是可写的 ) 。附带的工具套件可以实现多个 slaves 的 read 负载均衡,
因此你可以使用这个工具移除一组服务器中复制延迟较高的服务器的虚拟 IP ,它还可以备
份数据,两节点之间再同步等等。
Mysql-mmm 是一套脚本程序,基于 perl 实现,通过不同的 perl 脚本实现对 mysql 服
务器的管理与维护。它仅仅是一个管理程序,自己本身并不提供 mysql 服务功能。
被管理的 mysql server 机需要安装相关的 agent 脚本, mysql-mmm 的监控端可以监
管所以安装过此脚本的 mysql server 。
当出现多台可写 mysql server 时, mmm 可以保证在同一时间点只使用一台 mysql
server 进行写入操作,以保证数据有效性,防止写入冲突。所以它并不适用于有大并发写入
要求的生产环境。相反,当有多台可读 mysql server 存在时,它可以通过一些其他软件的
配合,实现负载均衡方式的读取,大大提高 mysql server 的读性能。
在运行过程中,如果某一台 mysql server 处于不可用状态时, mmm 可以将原有操作
请求迁移至其他可用 mysql ,从而实现服务的高可用性。包括写请求迁移,读请求迁移,主
从同步的 master 迁移。
Mysql-mmm 同时也提供了一套很好用的运维管理工具,可以实现简单快捷的数据备份与
维护。简化管理员的日常维护成本。
29 mysql-mmm 组成与原理
答案:
Mysql-mmm 的管理功能主要通过三个脚本来实现
mmm_mond
监控进程,负责所有的监控工作,决定和处理所有节点角色活动 。此脚本需要在监管
机上运行。
mmm_agentd
运行在每个 mysql 服务器上的代理进程,完成监控的探针工作和执行简单的远端服务
设置 。此脚本需要在被监管机上运行。
mmm_control
一个简单的脚本,提供管理 mmm_mond 进程的命令
mysql-mmm 的监管端会提供多个虚拟 IP ( VIP ),包括一个可写 VIP ,多个可读
VIP ,通过监管的管理,这些 IP 会绑定在可用 mysql 之上,当某一台 mysql 宕机时,监管
机会将 VIP 迁移至其他 mysql 。
在整个监管过程中,需要在 mysql 中添加相关授权用户,以便让 mysql 可以支持监理
机的维护。授权的用户包括一个 mmm_monitor 用户和一个 mmm_agent 用户,如果想使
用 mmm 的备份工具则还要添加一个 mmm_tools 用户。
30 多源复制下,支持 master 是 5.6,slave 是 5.7 吗?
答:可以的
【老叶补充】非常不建议跨大版本的 MySQL Replication。
31 半同步复制设置 N 个 slave 应答,如果当前 Slave 小于 N 会怎样?
答:取决于 rpl_semi_sync_master_wait_no_slave 的设置。

  • rpl_semi_sync_master_wait_no_slave = 0
    会立刻变成异步复制。
  • rpl_semi_sync_master_wait_no_slave = 1
    仍然等待应答,直到超时。
    32 gtid 如果出现不支持的语句,怎么解决
    答:从应用中去掉不支持的语句/事务:
    例如:
  • CREATE TABLE … SELECT
    可以该为:
    CREATE TABLE
    INSERT … SELECT
    33 基于 GTID 的复制,可以指定 GTID 复制的起始位置么,还是只能根据现
    有的信息?
    答:GTID 复制就是为了摆脱对 binlog 文件名和位置的依赖。所以不能指定复制的起始位置,也完全没有必要指定。
    34 对一个已经开启 GTID 的数据库再做一个从库,先把 Master 备份下来还
    原到新 slave 上去,直接可以同步了还是先需要做 purge_gtid 的操作再同步
    呢?
    答:需要设置 gtid_purged。整个过程可以通过 mysqldump 完成。
    请 参 考 手 册 :
    http://dev.mysql.com/doc/refman/5.7/en/replication-gtids-failover.html#replication-gtids-failover-copy
    35 线上全是 5.5 的环境,有没有办法搭建 5.5 到 5.7 的复制?
    答:可以,但不能开启 gtid 功能。
    【老叶补充】非常不建议跨大版本的 MySQL Replication,更何况是垮了 2 个大版本,最好是先进行升级。
    36 并行复制 logical_clock,如果不开启 gtid 是不是就不能并行了?
    答:不开启 gtid,也能使用 logical_clock 并行复制。
    37 在主从复制过程中,是主向从推数据还是从拉数据,如果这个传送的过
    程中,出现网络闪断,会不会造成数据包丢失,会执行校验重传嘛?
    答:Slave 的 IO 线程发起到 Master 的连接。
    然后 master 开始发送 events,slave 只是被动的接收。
    slave 和 master 之间使用的是 tcp 连接。tcp 是可靠的连接。网络丢包等都是 tcp 层自动处理的。
    mysql 不需要处理。
    如果 slave 长时间不能收到一个完整的 Event,或者接收 event 时出错。slave
    会进行相应的处理。
    如果 slave 认为,重新建立连接能解决问题。slave 则自动的断开原来的连接,然后重新连接到 master 去。
    如果 slave 认为,这个错误无法自动解决,slave 会停掉 io 线程,并报错。
    38 设置了 binlog_group_commit_sync_delay 参数,在宕机的时候应该不会
    影响 binglog 文件安全吧?
    答:不影响
    39 多源复制是只能在异步模式下使用么?因为半同步的状态是全局的,一
    个通道关闭会导致其它通道出错,有没有考虑将半同步状态改成每个
    channel 的私有配置呢?
    答:只有一个通道可以开启 seimsync,其他的都要使用异步通道。不光是 Semisync,异步通道的状态也要改成每
    个 channel 的私有配置,都有考虑。
    OPERATION
    1 简述 Squid 的优缺点有哪些
    参考答案
    优势:
    通过缓存增加访问速度;
    提高网络的安全性;
    Squid 历史悠久,技术积淀深厚,同时无需支付任何费用。
    缺点:
    性能不足,借助于 windows、linux 等通用操作系统才能实现上网加速等功能。
    2 简述常见 Web 服务器软件有哪些
    参考答案
    Apache、 Nginx、 Lighttpd 、Tomcat、 IBM WebSphere、IIS。
    3 简述什么是 LNMP
    参考答案
    LNMP 是网站运行平台。
    L:操作系统(Linux)
    N:网站服务软件(Nginx)
    M:数据库服务软件(MySQL)
    P:网站开发语言(PHP、perl、python)
    4 地址重写的好处
    参考答案
    缩短 URL,隐藏实际路径提高安全性;
    易于用户记忆和键入;
    易于被搜索引擎收录。
    5 简述什么是 memcached
    参考答案
    memcached 是高性能的分布式缓存服务器,是一个跨平台的、开源的实现分布式缓存服务的软件
    用来集中缓存数据库查询结果,减少数据库访问次数,以提高动态 Web 应用的响应速度
    memcached 支持许多平台:Linux、FreeBSD、Solaris (memcached 1.2.5 以上版本)、Mac OS X、Windows
    2 简述 memcached 什么情况下会删除缓存数据
    参考答案
    当分配的存储空间存满时,有新数据需要存储时,删除最近最少使用的数据。腾出空间存储新数据;
    重新启动 memcached 服务会删除缓存数据;
    运行 memcached 服务的操作系统重启后会删除缓存数据。
    6 部署实施 CDN 的优势是什么
    参考答案
    本地 Cache 加速,提升访问速度和稳定性
    网站镜像,消除不同地区、运营商网络互连的问题
    智能 DNS 解析,自动选择最快的 Cache 服务器
    负载优化,减轻后端源 Web 服务器的压力负载
    集群抗攻击,有效降低 DDOS 攻击的影响
    6,Nginx 的优点?
    答案:
    (1) 它可以高并发连接:官方测试连接数(5 万)实际生产环境中可支撑(2~4 万)
    (2) 内存消耗少
    (3) 成本低廉
    (4) 其他理由(配置文件非常简单,支持 Rewrite 重写规则)
    (5) 内置的健康检查功能
    (6) 节省宽带(支持 GZIP 压缩,可以添加浏览器本地缓存的 Header 头)
    (7) 稳定性高
    (8) 支持热部署
    7 Nginx 和 Apache 的综合对比?
    Web 服务器 Nginx Apache
    反向代理 非常好 好
    Rewrite 规则 非常好 好
    FastCGI 好 差
    热部署 支持 不支持
    系统压力比较 很小 小
    稳定性 非常好 好
    安全性 一般 好
    技术资料 很少 非常多
    静态文件处理 非常好 一般
    虚拟主机 支持 支持
    内存消耗 非常小 很大
    8,什么是 CDN?
    答案:CDN 的全称是内容分发网络。其目的是通过在现有的 Internet 中增加一层新的网络架构,将网站的内容发布
    到最接近用户的网络“边缘”,使用户可以就近取得所需的内容,提高用户访问网站的响应速度。 CDN 有别于镜
    像,因为它比镜像更智能,或者可以做这样一个比喻:CDN=更智能的镜像+缓存+流量导流。因而,CDN 可以明显提
    高 Internet 网络中信息流动的效率。从技术上全面解决由于网络带宽小、用户访问量大、网点分布不均等问题,
    提高用户访问网站的响应速度。
    9,CDN 的类型特点?
    答案:CDN 的实现分为三类:镜像、高速缓存、专线。
    (1)镜像站点(Mirror Site):是最常见的,它让内容直接发布,适用于静态和准动态的数据同步。但是购
    买和维护新服务器的费用较高还必须在各个地区设置镜像服务器,配备专业技术人员进行管理与维护。对于大型网
    站来说,更新所用的带宽成本也大大提高了。
    (2)高速缓存:成本较低,适用于静态内容。Internet 的统计表明,超过 80%的用户经常访问的是 20%的网站
    的内容,在这个规律下, 缓存服务器可以处理大部分客户的静态请求,而原始的服务器只需处理约 20%左右的非
    缓存请求和动态请求,于是大大加快了客户请求的响应时间,并降低了原始服务器的负载。
    (3)专线:让用户直接访问数据源,可以实现数据的动态同步。
    10 CDN 的工作原理?
    答案:
    若是忽略各种缓存,传统的网站访问过程为:
  1. 用户在浏览器中输入要访问的域名;
  2. 浏览器向域名解析服务器发出解析请求,获得此域名对应的 IP 地址;
  3. 浏览器利用所得到的 IP 地址,向该 IP 对应的服务器发出访问请求;
  4. 服务器对此响应,将数据回传至用户浏览器端显示出来。
    与传统访问方式不同,CDN 网络则是在用户和服务器之间增加 Cache 层,将用户的访问请求引导到 Cache 节点而
    不是服务器源站点,要实现这一方式,主要是通过接管 DNS 实现。
    使用 CDN 缓存后的网站访问过程演变为:
  5. 用户在浏览器中输入要访问的域名;
  6. 浏览器向域名解析服务器发出解析请求,由于 CDN 对域名解析过程进行了调整,所以用户端一般得到的是该
    域名对应的 CNAME 记录,此时浏览器需要再次对获得的 CNAME 域名进行解析才能得到缓存服务器实际的 IP 地址。
    在此过程中,全局负载均衡 DNS 解析服务器会根据用户端的源 IP 地址,如地理位置(深圳还是上海)、接入网类
    型(电信还是网通)将用户的访问请求定位到离用户路由最短、位置最近、负载最轻的 Cache 节点(缓存服务器)
    上,实现就近定位。定位优先原则可按位置、可按路由、也可按负载等等;
  7. 再次解析后浏览器得到该域名 CDN 缓存服务器的实际 IP 地址,向缓存服务器发出访问请求;
  8. 缓存服务器根据浏览器提供的域名,通过 Cache 内部专用 DNS 解析得到此域名源服务器的真实 IP 地址,再由
    缓存服务器向此真实 IP 地址提交访问请求;
  9. 缓存服务器从真实 IP 地址得到内容后,一方面在本地进行保存,以备以后使用,同时把得到的数据发送到客
    户端浏览器,完成访问的响应过程;
  10. 用户端得到由缓存服务器传回的数据后显示出来,至此完成整个域名访问过程;
    不论是否使用 CDN 网络,用户客户端设置不需做任何改变,直接使用被加速网站原有域名访问即可。对于要加速的
    网站,只需修改整个访问过程中的域名解析部分,便能实现透明的网络加速服务。
    SECURITY
    1 简述信息安全防护的目标和一般原则。
    参考答案
    信息安全防护的目标:
    保密性,Confidentiality
    完整性,Integrity
    可用性,Usability
    可控制性,Controlability
    不可否认性,Non-repudiation
    信息安全防护的一般原则:
    权限最小化:受保护的敏感信息只应在一个有限的可控的小范围内被分享。
    分权制衡:所有权限应该适当划分给多个授权主体,达到既相互协作又相互制约、相互监督的效果,避免出现权限
    垄断
    安全隔离:将信息主体与客体分离,通过安全通道对双方之间的访问进行控制
    2 根据攻击/防护的对象不同,安全工作一般区分为哪些类别?
    参考答案
    物理安全:各种设备/主机、机房环境
    系统安全:主机或设备的操作系统
    应用安全:各种网络服务、应用程序
    网络安全:对网络访问的控制、防火墙规则
    数据安全:信息的备份与恢复、加密解密
    管理安全:各种保障性的规范、