运维面试

一、日常工作内容:

    看监控、网站流量、CDN流量,看邮件有没有普通业务监控报警,看有家中有没有其他需要做的工作
    处理报警,查看报警的原因,和开发一起解决,并且尽量找出避免再次发生的方法,例如添加一些定时清理脚本
    处理发布,基本都是自动化,但是总有发布不成功或者需要回滚的时候,这时候就需要手工介入,找到原因,并跟开发一起讨论最后是否撤销还是重上
    日常一起能够自动化的工作尽量找到自动化的方法
    配合开发搭建测试环境,线上环境,上线代码,以及日常开个权限
    定期机房巡检
    灾备演练计划
    运维流程的设定与标准化
    运维知识库文档的建立
    新技术的学习与研究

我在面试中遇到的运维问题
    **1、什么是运维?什么是游戏运维?**
    2、在工作中,运维人员经常需要跟运营人员打交道,请问运营人员是做什么工作的?
    3、现在给你三百台服务器,你怎么对他们进行管理?
    4、简述raid0 raid1 raid5 三种工作模式的工作原理及特点
    5、LVS、Nginx、HAproxy有什么区别?工作中你怎么选择?
    6、Squid、Varinsh和Nginx有什么区别,工作中你怎么选择?
    7、Tomcat和Resin有什么区别,工作中你怎么选择?
    8、什么是中间件?什么是jdk?
    9、讲述一下Tomcat8005、8009、8080三个端口的含义?
    10、什么叫CDN?
    11、什么叫网站灰度发布?
    12、简述DNS进行域名解析的过程?
    13、RabbitMQ是什么东西?
    14、讲一下Keepalived的工作原理?
    15、讲述一下LVS三种模式的工作过程?
    16、mysql的innodb如何定位锁问题,mysql如何减少主从复制延迟?
    17、如何重置mysql root密码?
    18、lvs/nginx/haproxy优缺点
    19、mysql数据备份工具
    20、keepalive的工作原理和如何做到健康检查
    21、统计ip访问情况,要求分析nginx访问日志,找出访问页面数量在前十位的ip
    22、使用tcpdump监听主机为192.168.1.1,tcp端口为80的数据,同时将输出结果保存输出到tcpdump.log
    23、如何将本地80 端口的请求转发到8080 端口,当前主机IP 为192.168.2.1
    24、简述raid0 raid1 raid5 三种工作模式的工作原理及特点
    25、你对现在运维工程师的理解和以及对其工作的认识
    26、实时抓取并显示当前系统中tcp 80端口的网络数据信息,请写出完整操作命令
    27、如何优化 Linux系统(可以不说太具体)?
    28、Linux系统中病毒怎么解决
    29、发现一个病毒文件你删了他又自动创建怎么解决
    30、说说TCP/IP的七层模型
    31、你常用的Nginx模块,用来做什么
    32、请列出你了解的web服务器负载架构
    33、查看http的并发请求数与其TCP连接状态
    34、用tcpdump嗅探80端口的访问看看谁最高
    35、光标下插入一行:o
    36、复制5行:5yy
    37、删除10行:10dd
    38、替换::%s/jingfeng/jfedu.net/g
    39、查找linux系统下以txt结尾,30天没有修改的文件大小大于20K同时具有执行权限的文件并备份到/data/backup/目录下。
    40、当前test.txt所属的用户为root,组为abc,请将test.txt使拥有者为abc,组为root,写出命令。
    41、如何修改Linux启动级别为字符模式并永久生效,如何临时、永久关闭selinux及防火墙,请分别写出操作方法。
    41、.每次开机在/tmp目录下创建一个当天的日期文件夹(提示:当前日期表示的方法为:date+%Y%m%d)
    43、.如何查看文件内容,命令有哪些?查看文件第1行到3行,查看文件最后一行。
    44、.查看linux服务器IP的命令,同时只显示包含ip所在的行打印出来。
    45、.将普通用户test加入root组的命令是?
    46、linux如何挂在windows下的共享目录
    47、查看http的并发请求数与其TCP连接状态
    48、查看当前系统每个IP的连接数
    49、查看/var/log中以-开头的日志文件的行数
    50、shell下32位随机密码生成
    51、统计出apache的access.log中访问量最多的5个I
    52、如何查看二进制文件的内容
    53、ps aux 中的VSZ代表什么意思,RSS代表什么意思

我在面试中遇到的运维问题
1、什么是运维?什么是游戏运维?

1)运维是指大型组织已经建立好的网络软硬件的维护,就是要保证业务的上线与运作的正常,
在他运转的过程中,对他进行维护,他集合了网络、系统、数据库、开发、安全、监控于一身的技术
运维又包括很多种,有DBA运维、网站运维、虚拟化运维、监控运维、游戏运维等等
2)游戏运维又有分工,分为开发运维、应用运维(业务运维)和系统运维
开发运维:是给应用运维开发运维工具和运维平台的
应用运维:是给业务上线、维护和做故障排除的,用开发运维开发出来的工具给业务上线、维护、做故障排查
系统运维:是给应用运维提供业务上的基础设施,比如:系统、网络、监控、硬件等等
总结:开发运维和系统运维给应用运维提供了“工具”和“基础设施”上的支撑
开发运维、应用运维和系统运维他们的工作是环环相扣的
————————————————————————————————————————————————————————————
2、在工作中,运维人员经常需要跟运营人员打交道,请问运营人员是做什么工作的?

游戏运营要做的一个事情除了协调工作以外
还需要与各平台沟通,做好开服的时间、开服数、用户导量、活动等计划
————————————————————————————————————————————————————————————————————————————————————————
3、现在给你三百台服务器,你怎么对他们进行管理?

管理3百台服务器的方式:
1)设定跳板机,使用统一账号登录,便于安全与登录的考量。
2)使用saltstark、ansiable、puppet进行系统的统一调度与配置的统一管理。
3)建立简单的服务器的系统、配置、应用的cmdb信息管理。便于查阅每台服务器上的各种信息记录
————————————————————————————————————————————————————————————
4、简述raid0 raid1 raid5 三种工作模式的工作原理及特点

RAID,可以把硬盘整合成一个大磁盘,还可以在大磁盘上再分区,放数据
还有一个大功能,多块盘放在一起可以有冗余(备份)
RAID整合方式有很多,常用的:0 1 5 10
RAID 0,可以是一块盘和N个盘组合
其优点读写快,是RAID中最好的
缺点:没有冗余,一块坏了数据就全没有了
RAID 1,只能2块盘,盘的大小可以不一样,以小的为准
10G+10G只有10G,另一个做备份。它有100%的冗余,缺点:浪费资源,成本高
RAID 5 ,3块盘,容量计算10*(n-1),损失一块盘
特点,读写性能一般,读还好一点,写不好
冗余从好到坏:RAID1 RAID10 RAID 5 RAID0
性能从好到坏:RAID0 RAID10 RAID5 RAID1
成本从低到高:RAID0 RAID5 RAID1 RAID10
单台服务器:很重要盘不多,系统盘,RAID1
数据库服务器:主库:RAID10 从库 RAID5\RAID0(为了维护成本,RAID10)
WEB服务器,如果没有太多的数据的话,RAID5,RAID0(单盘)
有多台,监控、应用服务器,RAID0 RAID5
我们会根据数据的存储和访问的需求,去匹配对应的RAID级别
—————————————————————————————————————————————————————————————————————————————————————————————————————————
5、LVS、Nginx、HAproxy有什么区别?工作中你怎么选择?

LVS: 是基于四层的转发
HAproxy: 是基于四层和七层的转发,是专业的代理服务器
Nginx: 是WEB服务器,缓存服务器,又是反向代理服务器,可以做七层的转发
区别: LVS由于是基于四层的转发所以只能做端口的转发
而基于URL的、基于目录的这种转发LVS就做不了
工作选择:
HAproxy和Nginx由于可以做七层的转发,所以URL和目录的转发都可以做
在很大并发量的时候我们就要选择LVS,像中小型公司的话并发量没那么大
选择HAproxy或者Nginx足已,由于HAproxy由是专业的代理服务器
配置简单,所以中小型企业推荐使用HAproxy
————————————————————————————————————————————————————————————
6、Squid、Varinsh和Nginx有什么区别,工作中你怎么选择?

Squid、Varinsh和Nginx都是代理服务器
什么是代理服务器:
能当替用户去访问公网,并且能把访问到的数据缓存到服务器本地,等用户下次再访问相同的资
源的时候,代理服务器直接从本地回应给用户,当本地没有的时候,我代替你去访问公网,我接
收你的请求,我先在我自已的本地缓存找,如果我本地缓存有,我直接从我本地的缓存里回复你
如果我在我本地没有找到你要访问的缓存的数据,那么代理服务器就会代替你去访问公网
区别:
1)Nginx本来是反向代理/web服务器,用了插件可以做做这个副业
但是本身不支持特性挺多,只能缓存静态文件
2)从这些功能上。varnish和squid是专业的cache服务,而nginx这些是第三方模块完成
3)varnish本身的技术上优势要高于squid,它采用了可视化页面缓存技术
在内存的利用上,Varnish比Squid具有优势,性能要比Squid高。
还有强大的通过Varnish管理端口,可以使用正则表达式快速、批量地清除部分缓存
它是内存缓存,速度一流,但是内存缓存也限制了其容量,缓存页面和图片一般是挺好的
4)squid的优势在于完整的庞大的cache技术资料,和很多的应用生产环境
工作中选择:
要做cache服务的话,我们肯定是要选择专业的cache服务,优先选择squid或者varnish。
————————————————————————————————————————————————————————————
7、Tomcat和Resin有什么区别,工作中你怎么选择?

区别:Tomcat用户数多,可参考文档多,Resin用户数少,可考虑文档少
最主要区别则是Tomcat是标准的java容器,不过性能方面比resin的要差一些
但稳定性和java程序的兼容性,应该是比resin的要好
工作中选择:现在大公司都是用resin,追求性能;而中小型公司都是用Tomcat,追求稳定和程序的兼容
————————————————————————————————————————————————————————————
8、什么是中间件?什么是jdk?

中间件介绍:
中间件是一种独立的系统软件或服务程序,分布式应用软件借助这种软件在不同的技术之间共享资源
中间件位于客户机/ 服务器的操作系统之上,管理计算机资源和网络通讯
是连接两个独立应用程序或独立系统的软件。相连接的系统,即使它们具有不同的接口
但通过中间件相互之间仍能交换信息。执行中间件的一个关键途径是信息传递
通过中间件,应用程序可以工作于多平台或OS环境。
jdk:jdk是Java的开发工具包
它是一种用于构建在 Java 平台上发布的应用程序、applet 和组件的开发环境
————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————
9、讲述一下Tomcat8005、8009、8080三个端口的含义?

8005》 关闭时使用
8009
》 为AJP端口,即容器使用,如Apache能通过AJP协议访问Tomcat的8009端口
8080==》 一般应用使用
————————————————————————————————————————————————————————————
10、什么叫CDN?

即内容分发网络
其目的是通过在现有的Internet中增加一层新的网络架构,将网站的内容发布到
最接近用户的网络边缘,使用户可就近取得所需的内容,提高用户访问网站的速度
——————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————
11、什么叫网站灰度发布?

灰度发布是指在黑与白之间,能够平滑过渡的一种发布方式
AB test就是一种灰度发布方式,让一部用户继续用A,一部分用户开始用B
如果用户对B没有什么反对意见,那么逐步扩大范围,把所有用户都迁移到B上面 来灰度发布可以保证整体系统的稳定,在初始灰度的时候就可以发现、调整问题,以保证其影响度
————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————
12、简述DNS进行域名解析的过程?

用户要访问 www.baidu.com,会先找本机的host文件,再找本地设置的DNS服务器,如果也没有的话,就去网络中找根服务器,根服务器反馈结果,说只能提供一级域名服务器.cn,就去找一级域名服务器,一级域名服务器说只能提供二级域名服务器.com.cn,就去找二级域名服务器,二级域服务器只能提供三级域名服务器.baidu.com.cn,就去找三级域名服务器,三级域名服务器正好有这个网站www.baidu.com,然后发给请求的服务器,保存一份之后,再发给客户端

————————————————————————————————————————————————————————————————————————————————————————————————————————————————————
13、RabbitMQ是什么东西?

RabbitMQ也就是消息队列中间件,消息中间件是在消息的传息过程中保存消息的容器
消息中间件再将消息从它的源中到它的目标中标时充当中间人的作用
队列的主要目的是提供路由并保证消息的传递;如果发送消息时接收者不可用
消息队列不会保留消息,直到可以成功地传递为止,当然,消息队列保存消息也是有期限地
————————————————————————————————————————————————————————————————————————————————————————
14、讲一下Keepalived的工作原理?

在一个虚拟路由器中,只有作为MASTER的VRRP(虚拟路由冗余协议)路由器会一直发送VRRP通告信息,
BACKUP不会抢占MASTER,除非它的优先级更高。当MASTER不可用时(BACKUP收不到通告信息)
多台BACKUP中优先级最高的这台会被抢占为MASTER。这种抢占是非常快速的(<1s),以保证服务的连续性
由于安全性考虑,VRRP包使用了加密协议进行加密。BACKUP不会发送通告信息,只会接收通告信息
————————————————————————————————————————————————————————————
15、讲述一下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这种实现方式不需要隧道结构,因此可以使用大多数操作系统做为物理服务器。
缺点:(不能说缺点,只能说是不足)要求负载均衡器的网卡必须与物理网卡在一个物理段上。
————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————
16、mysql的innodb如何定位锁问题,mysql如何减少主从复制延迟?

mysql的innodb如何定位锁问题:
在使用 show engine innodb status检查引擎状态时,发现了死锁问题
在5.5中,information_schema 库中增加了三个关于锁的表(MEMORY引擎)
innodb_trx ## 当前运行的所有事务
innodb_locks ## 当前出现的锁
innodb_lock_waits ## 锁等待的对应关系
mysql如何减少主从复制延迟:
如果延迟比较大,就先确认以下几个因素:
从库硬件比主库差,导致复制延迟

主从复制单线程,如果主库写并发太大,来不及传送到从库

就会导致延迟。更高版本的mysql可以支持多线程复制
慢SQL语句过多

网络延迟

master负载
主库读写压力大,导致复制延迟,架构的前端要加buffer及缓存层
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
——————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————
17、如何重置mysql root密码?

一、 在已知MYSQL数据库的ROOT用户密码的情况下,修改密码的方法:
1、 在SHELL环境下,使用mysqladmin命令设置:
mysqladmin –u root –p password “新密码” 回车后要求输入旧密码
2、 在mysql>环境中,使用update命令,直接更新mysql库user表的数据:
Update mysql.user set password=password(‘新密码’) where user=’root’;
flush privileges;
注意:mysql语句要以分号”;”结束
3、 在mysql>环境中,使用grant命令,修改root用户的授权权限。
grant all on . to root@’localhost’ identified by ‘新密码’;
二、 如查忘记了mysql数据库的ROOT用户的密码,又如何做呢?方法如下:
1、 关闭当前运行的mysqld服务程序:service mysqld stop(要先将mysqld添加为系统服务)
2、 使用mysqld_safe脚本以安全模式(不加载授权表)启动mysqld 服务
/usr/local/mysql/bin/mysqld_safe --skip-grant-table &
3、 使用空密码的root用户登录数据库,重新设置ROOT用户的密码
#mysql -u root
Mysql> Update mysql.user set password=password(‘新密码’) where user=’root’;
Mysql> flush privileges;
————————————————————————————————————————————————————————————
18、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请求。
——————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————
19、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功能,启用之后可以支持单独的表备份
——————————————————————————————————————————————————————————————————————————————————————————————————————————————————
20、keepalive的工作原理和如何做到健康检查

keepalived是以VRRP协议为实现基础的,VRRP全称Virtual Router Redundancy Protocol,即虚拟路由冗余协议。
虚拟路由冗余协议,可以认为是实现路由器高可用的协议,即将N台提供相同功能的路由器组成一个路由器组
这个组里面有一个master和多个backup,master上面有一个对外提供服务的vip(该路由器所在局域网内
其他机器的默认路由为该vip),master会发组播,当backup收不到vrrp包时就认为master宕掉了
这时就需要根据VRRP的优先级来选举一个backup当master。这样就可以保证路由器的高可用了
keepalived主要有三个模块,分别是core、check和vrrp。core模块为keepalived的核心,负责主进程的启动、维护
及全局配置文件的加载和解析。check负责健康检查,包括常见的各种检查方式,vrrp模块是来实现VRRP协议的
Keepalived健康检查方式配置
HTTP_GET|SSL_GET
HTTP_GET | SSL_GET
{
url {
path /# HTTP/SSL 检查的url可以是多个
digest # HTTP/SSL 检查后的摘要信息用工具genhash生成
status_code 200# HTTP/SSL 检查返回的状态码
}
connect_port 80 # 连接端口
bindto
connect_timeout 3 # 连接超时时间
nb_get_retry 3 # 重连次数
delay_before_retry 2 #连接间隔时间
}

21、统计ip访问情况,要求分析nginx访问日志,找出访问页面数量在前十位的ip

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

22、使用tcpdump监听主机为192.168.1.1,tcp端口为80的数据,同时将输出结果保存输出到tcpdump.log

tcpdump ‘host 192.168.1.1 and port 80’ > tcpdump.log

23、如何将本地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

24、简述raid0 raid1 raid5 三种工作模式的工作原理及特点

RAID 0:带区卷,连续以位或字节为单位分割数据,并行读/写于多个磁盘上,因此具有很高的数据传输率
但它没有数据冗余,RAID 0 只是单纯地提高性能,并没有为数据的可靠性提供保证
而且其中的一个磁盘失效将影响到所有数据。因此,RAID 0 不能应用于数据安全性要求高的场合
RAID 1:镜像卷,它是通过磁盘数据镜像实现数据冗余,在成对的独立磁盘上产生互为备份的数据
不能提升写数据效率。当原始数据繁忙时,可直接从镜像拷贝中读取数据,因此RAID1 可以提高读取性能
RAID 1 是磁盘阵列中单位成本最高的,镜像卷可用容量为总容量的1/2,但提供了很高的数据安全性和可用性
当一个磁盘失效时,系统可以自动切换到镜像磁盘上读写,而不需要重组失效的数据
RAID5:至少由3块硬盘组成,分布式奇偶校验的独立磁盘结构,它的奇偶校验码存在于所有磁盘上
任何一个硬盘损坏,都可以根据其它硬盘上的校验位来重建损坏的数据(最多允许1块硬盘损坏)
所以raid5可以实现数据冗余,确保数据的安全性,同时raid5也可以提升数据的读写性能

25、你对现在运维工程师的理解和以及对其工作的认识

运维工程师在公司当中责任重大,需要保证时刻为公司及客户提供最高、最快、最稳定、最安全的服务
运维工程师的一个小小的失误,很有可能会对公司及客户造成重大损失
因此运维工程师的工作需要严谨及富有创新精神

26、实时抓取并显示当前系统中tcp 80端口的网络数据信息,请写出完整操作命令

tcpdump -nn tcp port 80

27、如何优化 Linux系统(可以不说太具体)?

不用root,添加普通用户,通过sudo授权管理
更改默认的远程连接SSH服务端口及禁止root用户远程连接
定时自动更新服务器时间
配置国内yum源
关闭selinux及iptables(iptables工作场景如果有外网IP一定要打开,高并发除外)
调整文件描述符的数量
精简开机启动服务(crond rsyslog network sshd)
内核参数优化(/etc/sysctl.conf)
更改字符集,支持中文,但建议还是用英文字符集,防止乱码
锁定关键系统文件
清空/etc/issue,去除系统及内核版本登录前的屏幕显示

28、Linux系统中病毒怎么解决

1)最简单有效的方法就是重装系统
2)要查的话就是找到病毒文件然后删除
中毒之后一般机器cpu、内存使用率会比较高
机器向外发包等异常情况,排查方法简单介绍下
top 命令找到cpu使用率最高的进程
一般病毒文件命名都比较乱,可以用 ps aux 找到病毒文件位置
rm -f 命令删除病毒文件
检查计划任务、开机启动项和病毒文件目录有无其他可以文件等
3)由于即使删除病毒文件不排除有潜伏病毒,所以最好是把机器备份数据之后重装一下

29、发现一个病毒文件你删了他又自动创建怎么解决

公司的内网某台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,个人觉得就要重装系统了

30、说说TCP/IP的七层模型

应用层 (Application):
网络服务与最终用户的一个接口。
协议有:HTTP FTP TFTP SMTP SNMP DNS TELNET HTTPS POP3 DHCP
表示层(Presentation Layer):
数据的表示、安全、压缩。(在五层模型里面已经合并到了应用层)
格式有,JPEG、ASCll、DECOIC、加密格式等
会话层(Session Layer):
建立、管理、终止会话。(在五层模型里面已经合并到了应用层)
对应主机进程,指本地主机与远程主机正在进行的会话
传输层 (Transport):
定义传输数据的协议端口号,以及流控和差错校验。
协议有:TCP UDP,数据包一旦离开网卡即进入网络传输层
网络层 (Network):
进行逻辑地址寻址,实现不同网络之间的路径选择。
协议有:ICMP IGMP IP(IPV4 IPV6) ARP RARP
数据链路层 (Link):
建立逻辑连接、进行硬件地址寻址、差错校验等功能。(由底层网络定义协议)
将比特组合成字节进而组合成帧,用MAC地址访问介质,错误发现但不能纠正
物理层(Physical Layer):
是计算机网络OSI模型中最低的一层
物理层规定:为传输数据所需要的物理链路创建、维持、拆除
而提供具有机械的,电子的,功能的和规范的特性
简单的说,物理层确保原始的数据可在各种物理媒体上传输。局域网与广域网皆属第1、2层
物理层是OSI的第一层,它虽然处于最底层,却是整个开放系统的基础
物理层为设备之间的数据通信提供传输媒体及互连设备,为数据传输提供可靠的环境
如果您想要用尽量少的词来记住这个第一层,那就是“信号和介质”

31、你常用的Nginx模块,用来做什么

rewrite模块,实现重写功能
access模块:来源控制
ssl模块:安全加密
ngx_http_gzip_module:网络传输压缩模块
ngx_http_proxy_module 模块实现代理
ngx_http_upstream_module模块实现定义后端服务器列表
ngx_cache_purge实现缓存清除功能

32、请列出你了解的web服务器负载架构

Nginx
Haproxy
Keepalived
LVS

33、查看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
重启后生效

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

https://blog.csdn.net/lgh1117/article/details/80213397
35、光标下插入一行:o
36、复制5行:5yy
37、删除10行:10dd
38、替换::%s/jingfeng/jfedu.net/g

39、查找linux系统下以txt结尾,30天没有修改的文件大小大于20K同时具有执行权限的文件并备份到/data/backup/目录下。

答:
find / -name *txt -mtime +30 -type f -size +20k -perma= x -exec cp {} /data/backup/ ;

40、当前test.txt所属的用户为root,组为abc,请将test.txt使拥有者为abc,组为root,写出命令。

答:
chown abc:root test.txt

41、如何修改Linux启动级别为字符模式并永久生效,如何临时、永久关闭selinux及防火墙,请分别写出操作方法。

答:
更改字符模式:修改/etc/inittab一行为id:3:initdefault:
临时关闭selinnuxsetenforce0
临时关闭防火墙iptables-F
永久关闭selinux修改/etc/selinux/config一行为SELINUX=permissive
永久关闭防火墙 iptables -F; /etc/init.d/iptablessave

41、.每次开机在/tmp目录下创建一个当天的日期文件夹(提示:当前日期表示的方法为:date+%Y%m%d)

答:
echo “mkdir/tmp/ date+%Y%m%d” >> /etc/rc.d/rc.local

43、.如何查看文件内容,命令有哪些?查看文件第1行到3行,查看文件最后一行。

答:
查看文件内容:vim、cat、head、tail
查看第1到行:head -3 file
查看最后一行:tail -1 file

44、.查看linux服务器IP的命令,同时只显示包含ip所在的行打印出来。

答:
以eth0为例
只打印所在的行:ifconfig eth0 | grep “inetaddr:”
只打印ip:ifconfig eth0 | grep “inetaddr:” | awk -F: ‘{print$2}’ | awk -F ’ ’ ‘{print$1}’

45、.将普通用户test加入root组的命令是?

答:
usermod -G root test
46、linux如何挂在windows下的共享目录

mount.cifs //192.168.1.3/server /mnt/server -o user=administrator,pass=123456
linux 下的server需要自己手动建一个 后面的user与pass 是windows主机的账号和密码 注意空格 和逗号
47、查看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
    重启后生效
    48、查看当前系统每个IP的连接数

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

49、查看/var/log中以-开头的日志文件的行数

ls /var/log/ -lR| grep "^-" |wc -l

50、shell下32位随机密码生成

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

将生成的32位随机数 保存到/pass文件里了
51、统计出apache的access.log中访问量最多的5个I

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

52、如何查看二进制文件的内容

我们一般通过hexdump命令 来查看二进制文件的内容。
hexdump -C XXX(文件名) -C是参数 不同的参数有不同的意义
-C 是比较规范的 十六进制和ASCII码显示
-c 是单字节字符显示
-b 单字节八进制显示
-o 是双字节八进制显示
-d 是双字节十进制显示
-x 是双字节十六进制显示等等等等
53、ps aux 中的VSZ代表什么意思,RSS代表什么意思

VSZ:虚拟内存集,进程占用的虚拟内存空间
RSS:物理内存集,进程战用实际物理内存空间

54、检测并修复/dev/hda5fsck用来检查和维护不一致的文件系统。若系统掉电或磁盘发生问题

可利用fsck命令对文件系统进行检查,用法:fsck -P /dev/hda5
————————————————

1、请描述下linux 系统的开机启动过程

开机加电BIOS自检----------->MBR引导----------->grub引导菜单----------->加载内核----------->启动init进程----------->读取inittab文件----------->启动mingetty进程----------->登录系统

2、权威DNS和递归DNS含义,智能DNS的实现原理

权威DNS

​ 是经上一级授权对域名进行解析的DNS服务器,同时它可以把解析授权转授给其他服务器,

递归DNS

​ 负责接受用户对任何域名的查询,并返回结果给用户,它可以缓存结果避免用户再向上查询

智能DNS

​ 就是将对用户发起的查询进行判断出是哪个运营商的用户查询,然后将请求转发给相应的运营商IP处理,减少跨运营访问的时间,提高访问速度

3、通过APACHE访问日志access.log统计IP和每个地址访问的次数,列出访问量前10名的IP地址,写出具体命令

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

4、编写脚本实现将/usr/local/test目录下大于100K文件,将它拷贝到/tmp目录下

#!/bin/bash

for file in ls /usr/local/test

do

if [ -f $file ];then

if [ ls -l $file|awk '{print $5}' -gt 10000];then

​ mv $file /tmp/

fi

fi

done

5、将本地的80端口的请求转发到8080端口,本机地址10.0.0.254,写出命令

iptables -t nat -A PRETOUTING -d 10.0.0.254 -p tcp --dprot 80 -j NDAT --to-destination 10.0.0.254:8080

6、如何实现nginx代理的节点访问日志记录的是真实访客的IP,不是代理的IP

配置nginx.conf配置文件增加下同的标记内容

server{

​ listen 80;

​ server_name blog.text.com;

​ location / {

​ proxy_pass http://test_servers;

​ proxy_set_header Host $host;

proxy_set_headerX-Forwarded-For $remote_addr;

​ }

修改完成后,重新加载nginx即可,/application/nginx/sbin/nginx -s reload

7、MYSQL 一主多从,主库宕机,如何合理切换到从库,其它从库如何处理?

1:登陆所有从库查看post信息,使用POST最大的做为新的主库,然后将从为提升为新的主库,登陆从库(新的主库)执行stop slave,

2:修改my.cnf配置文件,开启log-bin并重新启动数据库服务,登陆数据库执行restet master ,show master status\G;查看主库信息,最后创建授权同步用户与权限和网站使用数据库的用户与权限,同步所有机器的/etc/hosts文件(这时就体现了之前全网用域名则不是用IP的作用了,不然还得修改网站程序切换到新主库服务器IP上,否则无法连接到数据库)

2:登陆其它从库,执行change master操作,查看同步状态

8、误操作drop语句导致数据库数据破坏,请给出恢复的实际大体步骤

所有数据恢复的基础都在于备份,必须要有完整的备份,否则恢复无从谈起

误操作导致的数据库破坏需要使用增量恢复的方法进行恢复数据库,具体步骤如下

1、查看备份与binlog文件

2、刷新并备份binlog文件

​ mysqladmin -uroot -pmysql123 -S /data/mysql.sockflush-logs

3、将binlog文件恢复成sql语句

​ mysqlbinlog --no-defaults mysql-bin.000061 mysql-bin.000062 >bin.sql

4、将其中误操作的语句删除(就是drop的动作)

5、解压全备文件,恢复全备文件

gzip -d mysql_backup_2016-10-12.sql.gz

mysql -uroot -pmysql123 -S/data/3306/mysql.sock < mysql_backup_2016-10-12.sql

如果有对表的操作,恢复数据时需要接表名

6、恢复误操作前的binlog文件记录的sql语句

mysql -uroot -pmysql123 -S/data/3306/mysql.sock < bin.sql

最后登陆数据库,查看数据是否恢复成功,如果有确定的误操作时间,就直接恢复这段时间的数据即可

9、列举一个实际生产的例子,网站访问速度慢是因为数据库访问慢导致的

问题情况描述:

突然有一天,有同事反应,网站访问速度很慢,有时候会出现打不开网站的情况,刷新等待好长时间后又正常打开

解决步骤:

登陆数据库执行show full processlist 看到有很多相同的查询动作且征对同一张表,因此确定网站打不开的原因是这个,故将此IP禁止访问。日常工作中避免此类问题发生解决方法如下:可以将数据库读写分离;安装数据缓存服务器,尽量将大部分的请求不直接对接数据库;

10、一个shell 脚本手工可以执行,放入定时任务后不能执行,可能的原因?

手工可以执行,表明脚本本身不存在逻辑上的问题,可能原因有以下几点

1:定时任务书写有错误导致,执行的脚本没有写绝对路径,找不到脚本

2:环境变量问题导致

11、利用shell开发rsync服务启动、停止脚本,并通过chkconfig 进行开关机管理

[root@mysql-1 download]# vi RSstart.sh

#!/bin/sh

##create by mingongge at 2017-01-10

. /etc/init.d/functions

case "$1" in

start)

rsync --daemon

if [ $? -eq 0 ];then

​ action "rsync is started" /bin/true

else

​ action "rsync is started" /bin/false

fi

;;

stop)

pkill rsync

sleep 2

if [ ps -ef|grep rsync|grep -v grep |wc -l -eq 0 ];then

​ action "rsync is stoped " /bin/true

else

​ action "rsync is stoped " /bin/false

fi

;;

restart)

pkill rsync

sleep 2

if [ ps -ef|grep rsync|grep -v grep |wc -l -eq 0 ];then

​ rsync --daemon

​ if [ $? -eq 0 ];then

​ action "rsync is restarted" /bin/true

​ fi

fi

;;

*)

echo "USAGE :{start|stop|restart}"

;;

esac

“RSstart.sh" [New] 36L, 731C written

[root@mysql-1 download]# chmod +x RSstart.sh

[root@mysql-1 download]# sh RSstart.sh

USAGE :{start|stop|restart}

[root@mysql-1 download]# sh RSstart.sh start

rsync is started [ OK ]

[root@mysql-1 download]# ps -ef|grep rsync

root 1088 1 0 Jan09 ? 00:00:00 rsync --daemon

root 3527 2869 0 03:54 pts/0 00:00:00 grep rsync

[root@mysql-1 download]# sh RSstart.sh stop

rsync is stoped [ OK ]

[root@mysql-1 download]# ps -ef|grep rsync

root 3540 2869 0 03:54 pts/0 00:00:00 grep rsync

[root@mysql-1 download]# sh RSstart.sh start

rsync is started [ OK ]

[root@mysql-1 download]# sh RSstart.sh restart

rsync is restarted [ OK ]

[root@mysql-1 download]# ps -ef|grep rsync

root 3558 1 0 03:54 ? 00:00:00 rsync --daemon

root 3564 2869 0 03:55 pts/0 00:00:00 grep rsync

配置开关机管理

然后在脚本最前面加上以下内容

# chkconfig: 2345 21 99

# description: chkconfig rsync service

具体自己测试下,也有可能这个启动,关闭序号有冲突,需要修改

12、请描述OSI7层模型各层名字及功能,并举例在不同层对应的协议

第一层:物理层,利用传输介质为数据提供物理连接, 对应的协议:ARP

第二层:数据链路层:建立和管理各节点间的链接链路 对应的协议:PPTP、CDP

第三层:网络层,是控制数据链路层与上传输层之间的信息转发、建立与维持对应的协议:IP、路由协议

第四层:传输层,提供会话传输服务,确保数据正确传送对应的协议:TCP UDP

第五层:会话层,提供建立会话管理,支持数据交换

第六层:表示层,处理数据(数据格式、编码、加密等),按一定的格式传送至会话层

第七层:应用层,为用户提供各类应用服务(文件、打印、邮件等服务)对应协议:HTTP、FTP、SMTP、POP3

13、linux系统环境下如何查看系统运行了多长时间

[root@mysql-1 download]#uptime

02:05:22 up 2:32, 2 users, load average: 0.00, 0.00, 0.00

[root@mysql-1 download]#top

top -02:07:34 up 2:34, 2 users, load average: 0.00, 0.00, 0.00

Tasks: 73total, 1 running, 72 sleeping, 0 stopped, 0 zombie

Cpu(s): 0.0%us, 0.0%sy, 0.0%ni,100.0%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st

Mem: 486284k total, 174664kused, 311620k free, 6424k buffers

Swap: 1048568k total, 0kused, 1048568k free, 63548k cached

02:05:22 up 2:32, 2 users, load average: 0.00,0.00, 0.00

服务器运行多长时间 登陆用户数 上一分钟、5分钟、15分钟的负载

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

主机路由

route add -host 192.168.197.100 dev eth0

网关路由

route add default gw 192.168.197.1

网络路由

route ad -net 192.168.1.0 netmask 255.255.255.0 deveth1

route ad -net 192.168.1.0 netmask 255.255.255.0 gw192.168.197.1

15、已知test.txt文件内容如下,请取出文件的5-15行内容

[root@i ~]# cat test.txt

1

2

3

4

5bbb

6xxxxxxxxxxx

7123i4i44

8

9

10

11

12

13ffffff

14fffff

15bbbbbb

16

17nnnnnn

方法一:[root@i ~]# grep 15bbbbbb -B 10 test.txt

5bbb

6xxxxxxxxxxx

7123i4i44

8

9

10

11

12

13ffffff

14fffff

15bbbbbb

方法二:[root@i ~]# sed -n '5,15p' test.txt

5bbb

6xxxxxxxxxxx

7123i4i44

8

9

10

11

12

13ffffff

14fffff

15bbbbbb

方法三:[root@i~]# awk '{if(NR<16 && NR>4) print $1}' test.txt

5bbb

6xxxxxxxxxxx

7123i4i44

8

9

10

11

12

13ffffff

14fffff

15bbbbbb

/var/log/messages日志出现kernel:nf_conntrack:tablefull,dropping packet,请问是什么原因导致的,如何解决?

此报错为iptables报错信息,连接跟踪表已满,开始丢包,可能的原因是由于频繁的连接、关闭,或者网络的一些TCP的连接导致的

解决方法:

1、加大跟踪表的大小

2、禁用一些不必跟踪的连接状态

3、禁用模块 ip_vs nf_conntect

2

linux系统nginx与Php环境,发现PHP-FPM进程高,请说出可能的原因以及如何解决

1:php的插件程序与现有的PHP版本存在不兼容情况,解决方法从php.ini中禁止相关插件

2:软件本身存在问题,需要开发协同运维一同处理,查找原因

3:php程序存在死循环现象,使用服务器负载过高,解决方法使用top命令查看

3

磁盘报错:nospace left on device,但是df-h查看空间没有满,为什么?

原因:系统inode满了,因为所有的文件的文件名信息都是存放在inode里面的,文件内容是存放在block里面

可以使用df -i 来查看inode的使用情况

[root@mysql-1 download]# df -i

Filesystem Inodes IUsed IFree IUse% Mounted on

/dev/sda2 1234576 138303 1096273 12% /

tmpfs 60785 1 60784 1% /dev/shm

/dev/sda1 51200 38 51162 1% /boot

4

磁盘空间满了,删除一部分nginx日志后,但是磁盘空间还是满的,为什么?

删除的日志信息,一部分可能还是被进程调用,因此,需要重启nginx服务来释放进程;或者实际生产环境中使用>/log/access.log清空文件

5

查看apache进程数

perfork模式

ps -ef|grep http|grep -v grep|wc -l

worker模式

pstree -a|grep httpd|wc -l

6

提取文件test.log中FAILD与SUCCESSFUL的字符但不包括DONE的行,然后以:为隔符,提取第三列

[root@mysql-1]# cat test.log

FAILD:SUCCESSFUL:DONE:CRITICAL

FAILD:SUCCESSFUL:NO:GOOD

FAILD:NO:DO:QINGYUN

SUCCESSFUL:DONE:CRITICAL::CRITICAL

方法一:

[root@mysql-1]# egrep "FAILD|SUCCESSFUL"test.log |grep -v DONE|awk -F ':' '{print $3}'

NO

DO

方法二:

[root@mysql-1]# egrep "FAILD|SUCCESSFUL"test.log |grep -v DONE|cut -d: -f3

NO

DO

7

公司机房的服务器接近254台了,请你设计一个解决方案,如何划分网段,并实现业务平滑迁移。

第一种方案:变长子网掩码的方法,加大IP地址的可使用范围,全网分发/etc/hosts文件

第二种方案:增加核心交换机,在核心交换机划分VLAN,将新增的服务器加入新的VLAN中,全网分发/etc/hosts文件

8

Nginx反向代理如何实现代理RS节点上的不同虚拟主机,请说出原理和配置方法或思路。

客户端向反向代理发送请求,反向代理按一定的规则转发至目标服务器,并将返回的内容返回给客户端,可分为以下两种:

配置内部不同服务器转发:

upstream app1 {undefined

​ server 192.168.1.10:80 weight=5;

​ server 192.168.1.11:80 weight=5;

​ }

upstream app2 {undefined

​ server 192.168.1.20:80 weight=5;

​ server 192.168.1.21:80 weight=5;

​ }

配置server

​ server{undefined

​ listern 80;

​ server_name app.abc.com

​ }

配置匹配转发规则

location /app1/ {undefined

​ proxy_pass http://example.com/app1;

proxy_set_header Host $host;

}

location/app2/ {undefined

proxy_passhttp://example.com/app2;

proxy_set_header Host $host;

}

做为负载均衡

配置负载均衡服务器池,也就是调度规则

upstream test_servers {undefined

​ server 192.168.1.2:80 weight=5;

​ server 192.168.1.4:80 weight=5;

​ server 192.168.1.6:82 weight=15;

​ }

然后配置server标签,

server {undefined

​ listen 80;

​ server_name www.abc.com;

​ proxy_pass http://test_servers;

​ proxy_set_header Host $host

​ }

​ 配置完成后,重新加载nginx服务

9

说出netstat -an命令结果中最后一列status对应的不同网络连接状态含义

[root@ ~]# netstat -an

Active Internet connections (servers andestablished)

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

tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN

tcp 0 0 139.24.65.45:54296 10.11.68.13:80 ESTABLISHED

tcp 0 52 39.24.65.145:22 36.32.8.85:546 ESTABLISHED

tcp 0 0 139.24.165.45:586 10.11.8.13:80 CLOSE_WAIT

listen 服务启动后首先处于的状态(监听状态)

established 建立连接,表示建立连接的两端可以正常通信了

close_wait 对方主动关闭连接或网络异常而中断,因此状态会变成

time_wait 主动断开连接,收到对方确认后的状态,相当于释放资源,可以设置些种状态的参数,也就是主动断开后,下一次再连接的时间间隔

syn_sent 请求连接的状态,需要访问其它机器时首先发出的同步信号

10

binlog是什么?binlog记录的是什么?有几种模式及优缺点,企业中选择哪种模式做同步?

bInlog:是用于记录所有更新了数据的操作语句,语句以事件的形式保存,它描述数据的更改过程

作用:用于实时备份数据,数据库的主从复制

log_bin 打开记录binlog功能

binlog的查看

mysqlbinlog /home/mysql/binlog/binlog.000003

binlog的删除:可分为自动与手动删除

自动删除

能过binlog参数expire_logs_days来实现

show binary logs;

show variables like "expire_logs_days;"

set gloable expire_logs_days=3;

手工删除

reset master 删除主的binlog

reset slave 删除从的中继日志

三种模式:

Row level模式 :日志会记录每一行数据被修改的形式,然后在从端对相同的数据进行修改

优点:可以不记录执行SQL语句上下文相关的信息,只记录哪一条数据被修改,修改成什么样了

缺点:所有执行的语句都当记录到日志文件中,而且都会以每行记录的修改来记录,会产生大量的日志内容

statement模式:每一条修改数据的SQL都会记录master的bin-log中,slave在复制的时候SQL进程会解析成和原来master端执行过的相同的SQL来执行

优点:解决了上row level模式的缺点,不需要记录每一行数据的变化,减少日志量,可以得高性能

缺点:由于记录的是执行语句,在此模式下会有主从无法复制的问题出现

mixed自动模式:MYSQL会根据执行的每一条具体SQL语句来区分对待记录的日志格式,

企业使用场景:

1、如果不会用到mysql特殊的功能,基本都是默认的模式statement模式

2、如果会到mysql的一些特殊功能,基本都是会使用row level模式

11

请详细描述http协议原理

http协议:是客户端与服务端之间通信传输数据的基础,HTTP协议是基于TCP/IP协议之上的协议

原理包括四个过程:

连接:浏览器与服务器建立连接,打开一个socket的虚拟文件,表明连接建立成功

请求:浏览器通过socket向服务器提交请求(一般是GET或POST请示命令)

应答:浏览器请求提交后,通过HTTP协议传送给服务器,服务器收到后进行处理将结果又通过HTTP回传给客户端,从而在客户端显示出所请求的页面

关闭连接:当应答结束后,浏览器与服务器之间就断开连接

12

请详细描述MySQL主从复制原理。

原理:主库开启binlog功能并授权从库连接主库同步的用户权限 ,将数据库的修改或变化生成bin-log日志,从库通过change mster的语句得到主库的相关信息,从库开启slave并连接主加进行相关验证,验证通过后,主库的IO线程根据从库的请求将相关位置点信息,与最新的blnlog信息发送给从库的IO线程,从库的IO线程将SQL语句的信息放在relay-log中,最后从库的SQL线程将relay-log中的SQL语句应用到从库中,实现主库与从库之间的数据同步,然后不断重新上述动作

13

用一条命令将除了sshd、crond、network、rsyslog几个服务之外的服务全部关闭(无需开机自动)

方法一:

[root@centos6~]# for name in chkconfig --list|grep 3:on|awk '{print $1}'|grep -Ev "sshd|crond|rsyslog|network";dochkconfig $name off;done

[root@centos6~]# chkconfig --list|grep 3:on

crond 0:off 1:off 2:on 3:on 4:on 5:on 6:off

network 0:off 1:off 2:on 3:on 4:on 5:on 6:off

rsyslog 0:off 1:off 2:on 3:on 4:on 5:on 6:off

sshd 0:off 1:off 2:on 3:on 4:on 5:on 6:off

方法二:

[root@centos6 ~]# chkconfig--list|grep 3:on|awk '{print $1}'|grep -Ev"sshd|crond|rsyslog|network"|sed -r "s#(.*)#chkconfig \1off#g"|bash

[root@centos6~]# chkconfig --list|grep 3:on

crond 0:off 1:off 2:on 3:on 4:on 5:on 6:off

network 0:off 1:off 2:on 3:on 4:on 5:on 6:off

rsyslog 0:off 1:off 2:on 3:on 4:on 5:on 6:off

sshd 0:off 1:off 2:on 3:on 4:on 5:on 6:off

14

说明系统/etc/inittab中各个启动级别的含意

[root@centos6~]# tail /etc/inittab

#Default runlevel. The runlevels used are:

# 0 - halt (Do NOT set initdefault to this) 关机

# 1 - Single user mode 单用户模式

# 2 - Multiuser, without NFS (The same as 3,if you do not have networking) 多用户,没有NFS

# 3 - Full multiuser mode 完整多用户模式

# 4 - unused

# 5 - X11 桌面模式

# 6 - reboot (Do NOT set initdefault to this) 重启

#

id:3:initdefault: 默认

01

写一个sed命令,修改/tmp/input.txt文件的内容,要求:(1) 删除所有空行;(2) 一行中,如果包含"11111",则在"11111"前面插入"AAA",在"11111"后面插入"BBB",比如:将内容为0000111112222的一行改为:0000AAA11111BBB2222

[root@~]# cat -n /tmp/input.txt

1 000011111222

2

3 000011111222222

4 11111000000222

5

6

7 111111111111122222222222

8 2211111111

9 112222222

10 1122

11

删除所有空行命令

[root@~]# sed '/^$/d' /tmp/input.txt

000011111222

000011111222222

11111000000222

111111111111122222222222

2211111111

112222222

1122

插入指定的字符

[root@~]# sed 's##AAA\1BBB#g' /tmp/input.txt

0000AAA11111BBB222

0000AAA11111BBB222222

AAA11111BBB000000222

AAA11111BBBAAA11111BBB11122222222222

22AAA11111BBB111

112222222

1122

02每周一下午三点将/tmp/logs目录下面的后缀为*.log的所有文件rsync同步到备份服务器192.168.1.100中同样的目录下面,crontab配置项该如何写:

00 15 * * 1 rsync -avzP /tmp/logs/*.log root@192.168.1.100:/tmp/logs

03找到/tmp/目录下面的所有名称以"_s1.jpg"结尾的普通文件,如果其修改日期在一天内,则将其打包到/tmp/back.tar.gz文件中

find /tmp -type f -name ".*_sj.jpg" -mtime 1|xarges tar zxf /tmp/back.tar.gz

04写出如何给apache增加virtualhost,让访问http://www.test.com和http://www.test.cn的时候,都打开/var/www/html目录下面的文件:

<VirtualHost *:80>

ServerAdmin admini@abc.com

DocumentRoot "/var/www/html"

ServerName www.test.com

ServerAlias test.cn

ErrorLog "logs/bbs-error_log"

CustomLog "logs/bbs-access_log" common

06配置mysql服务器的时候,配置了auto_increment_increment=3,请问这里的3意味着什么?

auto_increment是用于主键自动增长的,从3开始增长,3表示自增的起始值

07用一条命令显示本机eth0网卡的IP地址,不显示其它字符

方法一:

[root@apache ~]# ifconfig eth0|grep "inet addr"|awk -F '[ :]+' '{print $4}'

192.168.1.22

方法二:

[root@apache ~]# ifconfig eth0|awk -F '[ :]+' 'NR==2 {print $4}'

192.168.1.22

方法三:

[root@apache ~]# ifconfig eth0|sed -n '2p'|sed 's#^.addr:##g'|sed 's# Bc.$##g'

192.168.1.22

方法四:

[root@apache ~]# ifconfig eth0|sed -n '2p'|sed -r 's#^.addr:(.) Bc.*$#\1#g'

192.168.1.22

08请详细说明keepalived的故障切换工作原理

这种故障切换是通过VRRP协议来实现的,主节点会按一定的时间间隔发送心跳信息的广播包,告诉备节点自己的存活状态信息,当主节点发生故障时,备节点在一段时间内就收到广播包,从而判断主节点出现故障,因此会调用自身的接管程序来接管主节点的IP资源及服务,当主节点恢复时,备节点会主动释放资源,恢复到接管前的状态,从而来实现主备故障切换

09写出一个curl命令,访问指定服务器61.135.169.121上的如下URL:http://www.baidu.com/s?wd=test,访问的超时时间是20秒:

curl --connect-timeout 20 http://61.135.169.121/s?wd=test

10用netstat命令配合其他shell命令,按照源IP统计所有到80端口的ESTABLISHED状态链接的个数,输出结果类似(第一列为连接数,第二列为IP):

[root@~]# netstat -an|grep ESTABLISHED

tcp 0 52 139.224.199.85:22 101.47.33.86:51763 ESTABLISHED

tcp 0 0 139.224.199.85:45368 106.11.68.13:80 ESTABLISHED

[root@ ~]# netstat -an|grep ESTABLISHED|grep ":80"

tcp 0 0 139.224.199.85:45368 106.11.68.13:80 ESTABLISHED

[root@ ~]# netstat -an|grep ESTABLISHED|grep ":80"|awk 'BEGIN{FS="[[:space:]:]+"}{print $4}'

139.224.199.85

说明:FS 是字段分隔符

如果需要进行整理并排序的话,完整命令如下

[root@ ~]# netstat -an|grep ESTABLISHED|grep ":80"|awk 'BEGIN{FS="[[:space:]:]+"}{print $4}'|sort|uniq -c|sort -nr

Google招聘Linux工程师的20个面试问题及答案

1.如何查看当前的Linux服务器的运行级别?

答: 'who -r' 和 'runlevel' 命令可以用来查看当前的Linux服务器的运行级别。

2.如何查看Linux的默认网关?

答: 用 "route -n" 和 "netstat -nr" 命令,我们可以查看默认网关。

除了默认的网关信息,这两个命令还可以显示当前的路由表。

3.如何在Linux上重建初始化内存盘镜像文件?

答: 在CentOS 5.X / RHEL 5.X中,可以用mkinitrd命令来创建初始化内存盘文件。

举例如下:

如果你想要给特定的内核版本创建初始化内存盘,你就用所需的内核名替换掉 'uname -r' 。

在CentOS 6.X / RHEL 6.X中,则用dracut命令来创建初始化内存盘文件,举例如下:

给特定的内核版本重建初始化内存盘文件则使用以下命令:

4.cpio命令是什么?

答: cpio就是复制入和复制出的意思。

cpio可以向一个归档文件(或单个文件)复制文件、列表,还可以从中提取文件。

5.patch命令是什么?如何使用?

答: 顾名思义,patch命令就是用来将修改(或补丁)写进文本文件里。

patch命令通常是接收diff的输出并把文件的旧版本转换为新版本。

举个例子,Linux内核源代码由百万行代码文件构成,所以无论何时,任何代码贡献者贡献出代码,只需发送改动的部分而不是整个源代码,然后接收者用patch命令将改动写进原始的源代码里。

创建一个diff文件给patch使用,

旧文件和新文件要么都是单个的文件要么都是包含文件的目录,-r参数支持目录树递归。

一旦diff文件创建好,我们就能在旧的文件上打上补丁,把它变成新文件:

6.aspell有什么用 ?

答: 顾名思义,aspell就是Linux操作系统上的一款交互式拼写检查器。

aspell命令继任了更早的一个名为ispell的程序,并且作为一款免费替代品 ,最重要的是它非常好用。

当aspell程序主要被其它一些需要拼写检查能力的程序所使用的时候,在命令行中作为一个独立运行的工具的它也能十分有效。

7.如何从命令行查看域SPF记录?

答: 我们可以用dig命令来查看域SPF记录。举例如下:

8.如何识别Linux系统中指定文件(/etc/fstab)的关联包?

答:

以上命令能列出提供"/etc/fstab"这个文件的包。

9.哪条命令用来查看bond0的状态?

答:

10.Linux系统中的/proc文件系统有什么用?

答: /proc文件系统是一个基于内存的文件系统,其维护着关于当前正在运行的内核状态信息,其中包括CPU、内存、分区划分、I/O地址、直接内存访问通道和正在运行的进程。

这个文件系统所代表的并不是各种实际存储信息的文件,它们指向的是内存里的信息。/proc文件系统是由系统自动维护的。

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

答:

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

答:

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

答:

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

答:

15.strings命令有什么作用?

答: strings命令用来提取和显示非文本文件中的文本字符串。

当用来分析你系统上莫名其妙出现的二进制程序时,可以从中找到可疑的文件访问,对于追查入侵有用处。

16.tee 过滤器有什么作用 ?

答: tee 过滤器用来向多个目标发送输出内容。

如果用于管道的话,它可以将输出复制一份到一个文件,并复制另外一份到屏幕上(或一些其它程序)。

在以上例子中,从ll输出可以捕获到 /tmp/ll.out 文件中,并且同样在屏幕上显示了出来。

17.export PS1 = "$LOGNAME@hostname:$PWD:" 这条命令是在做什么?

答: 这条export命令会更改登录提示符来显示用户名、本机名和当前工作目录。

18.ll | awk '{print $3,"owns",$9}' 这条命令是在做什么?

答: 这条ll命令会显示这些文件的文件名和它们的拥有者。

19.Linux中的at命令有什么用?

答: at命令用来安排一个程序在未来的做一次一次性执行。

所有提交的任务都被放在 /var/spool/at 目录下并且到了执行时间的时候通过atd守护进程来执行。

20.linux中lspci命令的作用是什么?

答: lspci命令用来显示你的系统上PCI总线和附加设备的信息。

指定-v,-vv或-vvv来获取越来越详细的输出,加上-r参数的话,命令的输出则会更具有易读性。


1、CPU的使用率低但负载高的原因

IO线程阻塞
网络状态不佳
并发访问量较高
后端存储断开或宕机

2、查看网卡传输速率

thtool eth0 | mii-tools

3、SSH启用秘钥登录,禁止密码登录

/etc/ssh/sshd_config
PasswordAuthentication no

4、修改用户密码的长度和复杂度

/ect/logins.defs
PASS_MAX_DAYS 90
PASS_MIN_DAY 0
PASS_MIN_LEN 10
PASS_WARN_AGE 7
/etc/pam.d/system-auth
password requisite pam_cracklib.so
retry=5 尝试次数
difok=3 最少不同字符
minlen=10 最小密码长度
ucredit=1 最少大写字母
lcredit=3 最少小写字母
dcredit=3 最少数字
dictpath=/usr/share/cracklib/pw_dict 字典密码

5、DNS域名解析过程

在浏览器输入baidu域名并回车
检查浏览器缓存
检查操作系统缓存
本地域名服务器向根域名服务器查找,根域名服务器返回顶级域名服务器地址
本地域名服务器向顶级域名服务器发请求,返还baidu权限域名服务器的地址
本地域名服务器向baidu权限域名服务器发起请求,得到IP地址
本地域名服务器得到的IP返还操作系统,并保存到缓存内

6、Nginx的负载算法

weight轮询
ip_hash
fair
url_hash

7、Apache和Nginx的区别

Apache是同步多进程模式,一个连接对应一个进程,处理动态和静态比较有优势
Nginx是异步多进程模式,多个连接对应一个进程,处理静态和转发请求比较有优势

8、TCP和UDP区别 (传输层)

TCP基于连接 UDP基于无连接
TCP提供可靠服务 UDP尽最大努力交付
UDP有实时性
TCP(1对1) UDP(1对多)(多对1)
TCP占用资源 UDP占用资源少

9、service和Ingress的区别

service是一种可以访问pod逻辑分组的策略
service通常是通过label selector(标签选择器定义)访问pod组
service是用来解决IP地址随着POD销毁而消失的问题
service支持4层负载均衡,形式ip+port

Ingress支持7层负载均衡和反向代理,对外暴露接口
Ingress可以调度不同业务域、不同URL访问路径的业务流量

10、deployment和damonset的区别

Deployment 为 单个Pod 和 ReplicaSet 提供申明式的定义方法

DaemonSet确保全部或一些Node上运行一个pod的副本
当有Node加入集群时,也会为该Node创建一个pod副本

11、zabbix和Prometheus的监控文件存储在哪
zabbix:

/usr/local/etc/zabbix_agentd.conf
LogFile=/tmp/zabbix_agentd.log

promethues:

通过 http://ip:9100/metrics,可访问到 node_exporter 收集到的系统信息
获取metric信息的url,默认是/metrics,若需要修改则通过此参数
–web.telemetry-path="/metrics"
设置打印日志的格式
-若有自动化日志提取工具可以使用这个参数规范日志打印的格式
–log.format=“logger:stderr”

12、Nginx健康检查

下载nginx_upstream_check_module模块
wget https://codeload.github.com/yaoweibin/nginx_upstream_check_module/zip/master
进入nginx的源码目录
cd nginx-1.11.5
nginx打补丁,-p0,是“当前路径” -p1,是“上一级路径”
patch -p0 < …/nginx_upstream_check_module-master/check_1.11.5+.patch
查看原有配置输出
nginx -V
增加upstream_check模块
./configure --prefix=/usr/local/nginx --add-module=…/nginx_upstream_check_module-master
修改配置文件,让nginx_upstream_check_module模块生效
upstream name {
server 192.168.57.207:8090;
server 192.168.57.85:80;
check interval=3000 rise=2 fall=5 timeout=1000 type=http;
}
查看后端服务器实时的健康状态,在对应server中增加location配置
location /nstatus {
check_status;
access_log off;
}

13、脑裂解决办法

同时使用串行电缆和以太网电缆连接,同时用两条心跳线路,一条线路坏了
另一个还是好的,依然能传送心跳消息
划分一个专门的VLAN用于master node和backup node发送心跳

14、Linux用户登录流程

初始化进程init
打开getty程序
getty打开login 进程
Login程序先根据输入的用户名,在/etc/passwd中得到相应的数据。
再从 /etc/shadow中获取需要的密文
登陆成功,启动shell,开始读取shell启动文件 /etc/profile ~/profile /etc/bashrc ~/.bashrc

15、zabbix监控千台服务器要点

安装主监控服务器
安装Agent被监控点
在浏览器管理更改主动发现
创建自动发现规则
创建Action动作,说明发现主机后自动执行什么动作
通过动作,执行添加主机,链接模板到主机等操作

16、Nginx平滑重启

更改配置不需要重启Nginx,可以向Nginx 发送信号,平滑重启
kill -HUP 住进称号或进程号文件路径
/usr/nginx/sbin/nginx -s reload

————————————————

1.mysql主从原理。

Slave开启I/O线程来请求master服务器,请求指定bin-log
Master端收到请求,Master端I/O线程响应请求通过bin-log将内容返给salve
Slave将收到的内容存入relay-log中继日志中
Slave端SQL实时监测relay-log日志有更新
执行完毕之后,Slave端跟master端数据保持一致!

1
2
3
4
5

2.DNS原理。

当应用想要查询www的信息时,它就需要与本地的域名服务器进行联系,此时本地的域名服务器向
根域的命名服务器发送一个请求,查询www.baidu.com的地址;根命名服务器发现不属于自己的
管辖区,而是属于com下的一个域,它就会通告去联系一个com区的命名服务器以获得更多的信息,
并发送一个所有com名字服务器的地址列表;本地的命名服务器会继续向这些服务器发送解析请
求,而其中负责com域的服务器判别是属于自己的区域,则将重复上述过程,直到找到解析
www这机器的域名服务并获得以www.baidu.com命名计算机的IP地址

1
2
3
4
5
6

3.DR模式原理。

DR模式是通过改写请求报文的目标MAC地址,将请求发给真实服务器的,而真实服务器响应后的处
理结果直接返回给客户端用户。

1
2

4.访问网站流程。

1,浏览器通常指 IE FireFox等,客户端使用的程序
2,每台连接互联网的机器都有一个唯一的IP地址,IP地址是由4个0到256的数组成的
3,浏览器得到域名指向的IP后,浏览器会把我们输入的域名转化为HTTP的服务请求
4,返回的请求通常是一些文件,包括文字信息图片,flash等
5,浏览器将这些信息组织成用户可以查看的网页

1
2
3
4
5

5.tcp三次握手和四次挥手原理。

1、请求连接
2、响应请求连接
3、确认接受响应,建立连接
四次挥手:
1、请求释放
2、收到请求,响应等待
3、完成,响应接受释放
4、响应彻底释放

6.系统架构。
在这里插入图片描述
7.DevOps你是怎么理解的
DevOps不是一种框架、工具或者技术,理解这一点非常重要。它更多的是与组织的文化有关。DevOps还是人们在组织中使用预先定义的过程、利用自动化工具,使日常工作更加高效、手工工作更少的一种方法。

  1. 代码上线流程.

一般是规范运维人员操作步骤,制定统一的上线操作脚本备份文件名称、备份文件路径。使操作人
性化,统一化,自动化。
web代码的上线流程:
开发组内部测试
测试组内外网测试
重要升级---》运维组备份
普通升级---》上线
回滚后上线----》运维组代码回滚
用户应用
有问题-----》运维组代码回滚
上线

9.服务器刚安装好后,需要做哪些方面的调优
1、关闭不需要的服务
2、关闭不需要的tty
3.关闭atime
4、一定要让你的服务器运行在level 3上  
5、优化sshd   
6、优化shell
10.数据库备份如何备份
每天零点crontab定时计划任务定时备份,数据大用xtrbacke,一半用 mysql自带的mysqldump
11.架构设计的第一个原则是什么
.基础设施

  1. 以下服务最高承受的并发,理论上是多少:omcat ,nginx反向代理
    tomcat 150
    Nginx:承受3万并发连接数,胜过Apache 10倍
    13.缓存有哪些,存储有哪些,负载均衡有哪些,数据库有哪些,自动化工具有哪些,消息队列有哪些

强缓存 本地缓存 弱缓存 协商缓存
内存和外存
轮询 weight f5 nginx lvs
关系数据库 非关系型数据库 键值(key-value)数据库
WinRunner Rational Robot
可靠性 灵活的路由 消息集群 队列高可用 多种协议的支持

  1. 用你自己的话阐述什么是消息队列
    消息(Message)是指在应用之间传送的数据,消息可以非常简单,比如只包含文本字符串,也可以更复杂,可能包含嵌入对象。
    消息队列(Message Queue)是一种应用间的通信方式,消息发送后可以立即返回,有消息系统来确保信息的可靠专递,消息发布者只管把消息发布到MQ中而不管谁来取,消息使用者只管从MQ中取消息而不管谁发布的,这样发布者和使用者都不用知道对方的存在。
  2. 漏洞扫描工具有哪些
    FILANGUARD
    MBSA
    NESSUS
    SN1PER
    NEXPOSE
    NIPPER
    OPENVAS
    QUALYSGUARD
    RETINA
    SAINT
    16.用自己的话描述技术的发展趋势
    技术可以给我们带来很多的方便,创新,让我们的生活有了很大的改变,技术可以让我们国家变的强大,走在世界的前端
    17.你最擅长的技能是什么
    监控 容器 优化 日志分析
    18.访问网站产生的并发流量是怎么来的,由什么决定
    服务器硬件支持 mysql数据库优化, PHP+html+nginx
    19.pv uv是什么?
    uv是指通过互联网访问、浏览这个网页的自然人
    pv页面浏览量或点击量,用户每1次对网站中的每个网页访问均被记录1个PV
    20.跳板机的作用,有哪些跳板机工具
    .跳板机最核心的功能是以本机作为跳板来操作远程设备,较为普遍地是通过ssh协议实现远程管理.
    管理工具:
    puppet
    saltstack
    ansible
    rex
    21.虚拟化有哪些,虚拟机和docker有什么区别
    网络虚拟化 CPU虚拟化 服务器虚拟化 存储虚拟化 应用虚拟化。
    虚拟机是在一台物理机器上,利用虚拟化技术,虚拟除多个操作系统,每个操作系统之间是隔离的。
    Docker是开源的应用容器引擎,依然需要先在电脑上安装操作系统,然后安装Docker容易的管理器,才可以。
    21.docker有哪几种网络
    host模式
    container模式
    none模式
    bridge模式
    22.fail2ban的原理是什么

Fail2ban可以监视你的系统日志,然后匹配日志的错误信息(正则式匹配)执行相应的屏蔽
动作
(一般情况下是调用防火墙屏蔽),如:当有人在试探你的HTTP、SSH、SMTP、FTP密码,
只要达到你预设的次数,fail2ban就会调用防火墙屏蔽这个IP,而且可以发送e-mail通知
系统 管理员,是一款很实用、很强大的软件!
————————————————
1.解释下什么是GPL,GNU,自由软件?

GPL:(通用公共许可证):一种授权,任何人有权取得、修改、重新发布自由软件的权力。

GNU:(革奴计划):目标是创建一套完全自由、开放的的操作系统。

自由软件:是一种可以不受限制地自由使用、复制、研究、修改和分发的软件。主要许可证有GPL和BSD许可证两种。

2.如何选择Linux操作系统版本?

一般来讲,桌面用户首选Ubuntu;服务器首选RHEL或CentOS,两者中首选CentOS。

根据具体要求:

①安全性要求较高,则选择Debian或者FreeBSD。

②需要使用数据库高级服务和电子邮件网络应用的用户可以选择SUSE。

③想要新技术新功能功能可以选择Feddora,Feddora是RHEL和CentOS的一个测试版和预发布版本。

④根据现有状况,绝大多数互联网公司选择CentOS。现在比较常用的是6系列,现在市场占有大概一半左右。另外的原因是CentOS更侧重服务器领域,并且无版权约束。

3.初学者在Linux系统的开机启动项如何选择?

建议选择五个开机启动项:

①.crond: 该服务用于周期地执行系统及用户配置的计划任务。有要周期性执行的任务计划需要开启,此服务是生产场景必须要用的一个软件。

②.iptables: iptables包过滤防火墙,有外网IP时,考虑开启。

③.network: 启动系统时,若想激活/关闭启动时的各个网络接口,则应(必须)考虑开启。

④.sshd: 远程连接Linux服务器时需要用到这个服务程序,所以必须要开启,否则将无法远程连接到Linux服务器。

⑤.rsyslog: 是操作系统提供的一种机制,系统的守护程序通常会使用rsyslog将各种信息收集写入到系统日志文件中,CentOS6以前此服务的名字为syslog。

⑥.sysstat: 是一个软件包,包含监测系统性能及效率的一组工具,这些工具对于Linux系统性能数据很有帮助,比如CPU使用率、硬盘和网络吞吐数据等,这些数据的分析,有利于判断系统运行是否正常,所以它是提高系统运行效率、安全运行服务的助手。

4.请描述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,去除系统及内核版本登陆前的屏幕显示。

5.描述Linux运行级别0-6的各自含义

0:关机模式

1:单用户模式<==破解root密码

2:无网络支持的多用户模式

3:有网络支持的多用户模式(文本模式,工作中最常用的模式)

4:保留,未使用

5:有网络支持的X-windows支持多用户模式(桌面)

6: 重新引导系统,即重启

6.描述Linux系统从开机到登陆界面的启动过程

⑴开机BIOS自检,加载硬盘。

⑵读取MBR,MBR引导。

⑶grub引导菜单(Boot Loader)。

⑷加载内核kernel。

⑸启动init进程,依据inittab文件设定运行级别

⑹init进程,执行rc.sysinit文件。

⑺启动内核模块,执行不同级别的脚本程序。

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

⑼启动mingetty,进入系统登陆界面。

7.描述Linux下软链接和硬链接的区别

在Linux系统中,链接分为两种,一种是硬链接(Hard link),另一种称为符号链接或软链接(Symbolic Link)。

①默认不带参数的情况下,ln创建的是硬链接,带-s参数的ln命令创建的是软链接。

②硬链接文件与源文件的inode节点号相同,而软链接文件的inode节点号,与源文件不同,

③ln命令不能对目录创建硬链接,但可以创建软链接。对目录的软链接会经常使用到。

④删除软链接文件,对源文件和硬链接文件无任何影响。

⑤删除文件的硬链接文件,对源文件及软链接文件无任何影响。

⑥删除链接文件的源文件,对硬链接文件无影响,会导致其软链接失效(红底白字闪烁状)。

⑦同时删除源文件及其硬链接文件,整个文件才会被真正的删除。

⑧很多硬件设备的快照功能,使用的就是类似硬链接的原理。

⑨软链接可以跨文件系统,硬链接不可以跨文件系统。

8.生产场景如何对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,看容量要求加盘即可。

9.描述Linux下文件删除的原理

Linux系统是通过link的数量来控制文件删除的,只有当一个文件不存在任何link的时候,这个文件才会被删除。一般来说每个文件两个link计数器来控制i_count和i_nlink。当一个文件被一个程序占用的时候i_count就加1。当文件的硬链接多一个的时候i_nlink也加1。删除一个文件,就是让这个文件,没有进程占用,同时i_link数量为0。

10.请简单描述VI编辑器的使用

①vi编辑器是linux系统下最最基本和最常用的标准文本编辑器。

②vi编辑器有三种工作模式:普通模式、编辑模式、命令模式。

③普通模式下的键盘输入任何字符都是当作命令来执行的,也可以输入命令进行光标的移动,字符、单词、行的复制、粘帖以及删除等操作。

④编辑模式主要用于文本的输入。在该模式下,用户输入的任何字符都被作为文件的内容保存起来。

⑤命令模式下,用户可以对文件进行一些如字符串查找、替换、显示行号等操作还是必须要进入命令模式的。

⑥在普通模式下输入冒号即可进入命令模式,此时vi窗口的状态行会显示出冒号,等待用户输入命令。“i”插入模式,即可以进行编辑。用户输入完成后,按【Esc】之后编辑器又返回到普通模式下,在命令模式下,保存退出,可以使用的命令为wq和x。前面加!表示强制退出,强制保存等。

11.请简单说出用户管理的相关命令及用途

组管理命令

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 #用户切换工具

12.请简述基础正则表达式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就不需要转义了。

13.请简述基础正则表达式sed高级参数的使用

解答:

-n取消默认输出

-p 打印

-d删除

-e允许多项编辑

sed取行,要特别注意sed -n 's###g' filename 的使用,sed的的功能可以记住正则表达式的一部分,其中,\1为第一个记住的模式即第一个小括号中的匹配内容,\2第二记住的模式,即第二个小括号中的匹配内容,sed最多可以记住9个。

实际字符的选取最好要唯一,正则表达式是贪婪的,总是尽可能的匹配更远的符合匹配的内容。另外注意字符串中的空格。

14.请给出查看当前哪些用户在线的Linux命令

w #显示目前系统登录用户

who #显示目前已登录用户信息

last #列出目前与过去登入系统的用户相关信息

lastlog #检查某特定用户上次登录时间

whoami #打印与当前生效的用户ID关联的用户名

finger #用户信息查找程序

id #显示指定用户或当前用户的用户与组信息

15.请你描述下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

16.请列出Linux中你认为重要的文件夹及包含内容

① /目录下的文件夹里面分别是以下内容:

/usr 包含所有的命令和程序库、文档和其他文件及当前linux发行版的主要应用程序

/var 包含正在操作的文件,还有记录文件、加密文件、临时文件等

/home 除了root用户外的所有用户的配置文件,个性化文件和主目录,即家目录

/proc 虚拟目录,该目录实际上指向内存而不是硬盘

/bin 系统执行文件(二进制文件)普通用户可以使用

/sbin 系统执行文件(二进制文件)不能被普通用户使用,通常由root用户使用

/etc 操作系统的配置文件

/root root用户的家目录

/dev 系统设备文件,linux所有设备都是以文件的形式被处理,该目录不包含驱动程序

/lib 程序和核心模块共享库(仅限于/下的程序)

/boot 系统引导、启动文件,通常grub也在这里

/opt 可选应用程序目录

/tmp 临时文件,系统会自动清理

/lost+found 恢复文件(类似回收站)

/media 所有的磁盘(有时有光盘)将以文件夹的形式挂载,光盘镜像也可以挂载

/cd-rom 挂载光盘的地方

② /usr目录下的文件比较重要,其作用下面分类列出:

/usr/X11 X-windows桌面环境

/usr/doc linux系统的文档资料

/usr/share 独立于当前计算机的数据结构,如字典中的词

/usr/bin 类似/bin但是不参与启动,大部分命令都在这里

/usr/local 本地管理员安装的应用程序

/usr/local/bin 用户安装的应用程序(部分)

③ /proc目录的内容

/proc/cpuinfo 处理器的信息

/proc/devices 当前运行内核的所有设备清单

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

/proc/filesystem 当前运行内核所配置的文件系统

/proc/interrupts 当前使用的中断和曾经有多少个中断

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

17.给出正确的关机和重启服务器的命令

⑴shutdown
[-t] 指定在多长时间之后关闭系统 [-r] 重启系统 [-k] 并不真正关机,只是给每个登录用户发送警告信号 [-h] 关闭系统(halt)

⑵halt

halt是最简单的关机命令,其实际上是调用shutdown -h命令。halt执行时,杀死应用进程,文件系统写操作完成后就会停止内核。

halt命令的部分参数如下:
[-f] 没有调用shutdown而强制关机或重启 [-i] 关机或重新启动之前,关掉所有的网络接口 [-p] 关机时调用poweroff,此选项为缺省选项

⑶reboot

reboot工作过程与halt类似,作用是重新启动,而halt是关机。其参数与halt类似。

⑷init

init是所有进程的祖先,其进程号始终为1。init用于切换系统的运行级别,切换的工作是立即完成的。init 0命令用于立即将系统运行级别切换为0,即关机;init 6命令用于将系统运行级别切换为6,即重新启动。

18.请简述修改/etc/sudoers配置文件的注意事项

①别名的名称可以包含大写字母。数字、下划线。如果是字母必须要大写,(别名为一群拥有相同属性的集合)。

②一个别名下面可以有多个成员,成员间通过半角(,)逗号隔开。成员必须有效实际存在。

别名成员受别名类型 Host_Alias、User_Alias、Runas_Alias、Cmnd_Alias制约,定义什么类型的别名,就要有相什么类型的成员匹配。

③用户组前面必须加%号。命令别名下的成员必须是文件或目录的绝对路径。

④指定切换用户要用()括号括起来,如果省略,则默认root用户,如果括号里是ALL,则代表能切换到所有用户。

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

⑥别名规则每行算一个规则,一行容不下时用\续行。另外超过一行,用反斜线换行。

⑦一般不建议先给all权限,后面排除。用什么权限,就给什么权限。(注意权限,语法)。

如果不需要密码直接运行命令的应该加NOPASSWD参数。

⑧禁止某类程序或命令执行,要在命令动作前面加上“!”号,并放在允许执行命令之后。

19.请描述如何实现linux系统集权分治的权限分级精细管理?

① 收集以及制定用户和权限的匹配信息,原则是给于最小权限,但是又能完成所承担的工作职责。

② 各个用户组设置对应权限,用什么给什么,精细到每一条指令上根据分组情况。

③ 创建规划权限分组的用户.添加相关用户组。并修改etc/sudoers配置文件。

④ 增加sudo的权限开放,确定相关用户加入如soduers权限列表,并详细设置所开放权限内容,并选择是否需要密码的相关执行权限开放。(注意ALL权限,以及密码修改权限设置)。

⑤ 不建议先给all权限,后面排除。建议使用白名单。

⑥实战调试测试相关权限是否正确配置完成。

⑦编写操作说明,及相关注意事项。

⑧调试完毕,邮件周知所有相关人员系统权限设置生效,并附带操作说明及相关注意事项。

20.请写出下面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 执行屏幕锁定

21.请描述服务器账户日志审计的5种解决方案。

⑴通过环境变量syslog对全部全部日志进行审计(信息量太大,不推荐)

⑵sudo配合syslog服务,进行sudo操作日志进行审计(信息较少,效果不错)

⑶在bash解释器嵌入一个监视器,让所有用户使用修改过的bash程序,作为解释程序。

⑷齐治的堡垒机(商业产品)。

22.如果一台办公室内主机无法上网(打不开网站),请给出你的排查步骤?

①首先确定物理链路是否联通正常。

②查看本机IP,路由,DNS的设置情况是否达标。

③telnet检查服务器的WEB有没有开启以及防火墙是否阻拦。

④ping一下网关,进行最基础的检查,通了,表示能够到达服务器。

⑤测试到网关或路由器的通常情况,先测网关,然后再测路由器一级一级的测试。

⑥测试ping公网ip的通常情况(记住几个外部IP),

⑦测试DNS的通畅。ping出对应IP。

⑧通过以上检查后,还在网管的路由器上进行检查。

23.描述Linux shell中单引号、双引号及不加引号的简单区别

单引号:所见即所得,即将单引号内的内容原样输出,或者描述为单引号里面看到的是什么就输出什么。

双引号:把双引号里面的内容给输出出来,如果内容中有命令、变量等,会先把,变来那个、命令解析出结果,然后输出最终内容。

双引号内的命令或者变量写法’命令或变量’或$(命令或变量)

无引号:把内容输出出来,可能不会键含有空格的字符串,视为一个整体输出,如果内容中有命令、变量等,会先把变量、命令解析出来,然后输出最终内容,如果字符串中带有空格等特殊字符,则不能完整输出,需要改加双引号。一般连续的字符串,数字,路径等可以用,不过最好用双引号,替代之。

24.请简述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 运行的通常二者设置大致相同,所以通常前者会调用后者。

25.请描述下列路径的内容是做什么的?

/var/log/messages 系统日志文件

/var/log/secure 系统安全文件(显示登录信息的文件)

/var/spool/clientmqueue 例行性任务回执邮件存放文件

/proc/interrupts 当前系统中断报告文件

/etc/fstab 开机自动挂载磁盘的配置文件

/etc/profile 环境变量存放的文件

26.请给出Linux中eth0的IP地址和广播地址的指令,需使用cut、awk、grep、sed指令。

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

第二种方法:使用grep和awk(默认分隔符为空格)取值

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

第四种方法:使用sed和awk

第五种方法:使用grep和awk(多分隔符与加号+)

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

第七种方法:grep 网卡文件

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

27.请输出你知道的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 切换用户角色,-切换环境变量
————————————————

1、什么是运维?什么是游戏运维?

1)运维是指大型组织已经建立好的网络软硬件的维护,就是要保证业务的上线与运作的正常,
在他运转的过程中,对他进行维护,他集合了网络、系统、数据库、开发、安全、监控于一身的技术
运维又包括很多种,有DBA运维、网站运维、虚拟化运维、监控运维、游戏运维等等

2)游戏运维又有分工,分为开发运维、应用运维(业务运维)和系统运维
开发运维:是给应用运维开发运维工具和运维平台的
应用运维:是给业务上线、维护和做故障排除的,用开发运维开发出来的工具给业务上线、维护、做故障排查
系统运维:是给应用运维提供业务上的基础设施,比如:系统、网络、监控、硬件等等

总结:开发运维和系统运维给应用运维提供了“工具”和“基础设施”上的支撑
开发运维、应用运维和系统运维他们的工作是环环相扣的

2、在工作中,运维人员经常需要跟运营人员打交道,请问运营人员是做什么工作的?
游戏运营要做的一个事情除了协调工作以外
还需要与各平台沟通,做好开服的时间、开服数、用户导量、活动等计划

3、现在给你三百台服务器,你怎么对他们进行管理?
管理3百台服务器的方式:
1)设定跳板机,使用统一账号登录,便于安全与登录的考量。
2)使用salt、ansiable、puppet进行系统的统一调度与配置的统一管理。
3)建立简单的服务器的系统、配置、应用的cmdb信息管理。便于查阅每台服务器上的各种信息记录。

4、简述raid0 raid1 raid5 三种工作模式的工作原理及特点

RAID,可以把硬盘整合成一个大磁盘,还可以在大磁盘上再分区,放数据
还有一个大功能,多块盘放在一起可以有冗余(备份)
RAID整合方式有很多,常用的:0 1 5 10

RAID 0,可以是一块盘和N个盘组合

其优点读写快,是RAID中最好的

缺点:没有冗余,一块坏了数据就全没有了

RAID 1,只能2块盘,盘的大小可以不一样,以小的为准

10G+10G只有10G,另一个做备份。它有100%的冗余,缺点:浪费资源,成本高

RAID 5 ,3块盘,容量计算10*(n-1),损失一块盘

特点,读写性能一般,读还好一点,写不好

冗余从好到坏:RAID1 RAID10 RAID 5 RAID0
性能从好到坏:RAID0 RAID10 RAID5 RAID1
成本从低到高:RAID0 RAID5 RAID1 RAID10

单台服务器:很重要盘不多,系统盘,RAID1
数据库服务器:主库:RAID10 从库 RAID5\RAID0(为了维护成本,RAID10)
WEB服务器,如果没有太多的数据的话,RAID5,RAID0(单盘)
有多台,监控、应用服务器,RAID0 RAID5

我们会根据数据的存储和访问的需求,去匹配对应的RAID级别

5、LVS、Nginx、HAproxy有什么区别?工作中你怎么选择?
LVS: 是基于四层的转发
HAproxy: 是基于四层和七层的转发,是专业的代理服务器
Nginx: 是WEB服务器,缓存服务器,又是反向代理服务器,可以做七层的转发

区别: LVS由于是基于四层的转发所以只能做端口的转发
而基于URL的、基于目录的这种转发LVS就做不了

工作选择:

HAproxy和Nginx由于可以做七层的转发,所以URL和目录的转发都可以做
在很大并发量的时候我们就要选择LVS,像中小型公司的话并发量没那么大
选择HAproxy或者Nginx足已,由于HAproxy由是专业的代理服务器
配置简单,所以中小型企业推荐使用HAproxy

6、Squid、Varinsh和Nginx有什么区别,工作中你怎么选择?
Squid、Varinsh和Nginx都是代理服务器

什么是代理服务器:
能当替用户去访问公网,并且能把访问到的数据缓存到服务器本地,等用户下次再访问相同的资
源的时候,代理服务器直接从本地回应给用户,当本地没有的时候,我代替你去访问公网,我接
收你的请求,我先在我自已的本地缓存找,如果我本地缓存有,我直接从我本地的缓存里回复你
如果我在我本地没有找到你要访问的缓存的数据,那么代理服务器就会代替你去访问公网

区别:
1)Nginx本来是反向代理/web服务器,用了插件可以做做这个副业

但是本身不支持特性挺多,只能缓存静态文件
2)从这些功能上。varnish和squid是专业的cache服务,而nginx这些是第三方模块完成
3)varnish本身的技术上优势要高于squid,它采用了可视化页面缓存技术

在内存的利用上,Varnish比Squid具有优势,性能要比Squid高。
还有强大的通过Varnish管理端口,可以使用正则表达式快速、批量地清除部分缓存
它是内存缓存,速度一流,但是内存缓存也限制了其容量,缓存页面和图片一般是挺好的
4)squid的优势在于完整的庞大的cache技术资料,和很多的应用生产环境

工作中选择:
要做cache服务的话,我们肯定是要选择专业的cache服务,优先选择squid或者varnish。

7、Tomcat和Resin有什么区别,工作中你怎么选择?
区别:Tomcat用户数多,可参考文档多,Resin用户数少,可考虑文档少
最主要区别则是Tomcat是标准的java容器,不过性能方面比resin的要差一些
但稳定性和java程序的兼容性,应该是比resin的要好

工作中选择:现在大公司都是用resin,追求性能;而中小型公司都是用Tomcat,追求稳定和程序的兼容

8、什么是中间件?什么是jdk?
中间件介绍:
中间件是一种独立的系统软件或服务程序,分布式应用软件借助这种软件在不同的技术之间共享资源
中间件位于客户机/ 服务器的操作系统之上,管理计算机资源和网络通讯
是连接两个独立应用程序或独立系统的软件。相连接的系统,即使它们具有不同的接口

但通过中间件相互之间仍能交换信息。执行中间件的一个关键途径是信息传递
通过中间件,应用程序可以工作于多平台或OS环境。

jdk:jdk是Java的开发工具包
它是一种用于构建在 Java 平台上发布的应用程序、applet 和组件的开发环境

9、讲述一下Tomcat8005、8009、8080三个端口的含义?
8005》 关闭时使用
8009
》 为AJP端口,即容器使用,如Apache能通过AJP协议访问Tomcat的8009端口
8080==》 一般应用使用

10、什么叫CDN?
- 即内容分发网络
- 其目的是通过在现有的Internet中增加一层新的网络架构,将网站的内容发布到
最接近用户的网络边缘,使用户可就近取得所需的内容,提高用户访问网站的速度

11、什么叫网站灰度发布?
灰度发布是指在黑与白之间,能够平滑过渡的一种发布方式
AB test就是一种灰度发布方式,让一部用户继续用A,一部分用户开始用B
如果用户对B没有什么反对意见,那么逐步扩大范围,把所有用户都迁移到B上面 来
灰度发布可以保证整体系统的稳定,在初始灰度的时候就可以发现、调整问题,以保证其影响度

12、简述DNS进行域名解析的过程?
用户要访问www.baidu.com,会先找本机的host文件,再找本地设置的DNS服务器,如果也没有的话,就去网络中找根服务器,根服务器反馈结果,说只能提供一级域名服务器.cn,就去找一级域名服务器,一级域名服务器说只能提供二级域名服务器.com.cn,就去找二级域名服务器,二级域服务器只能提供三级域名服务器.baidu.com.cn,就去找三级域名服务器,三级域名服务器正好有这个网站www.baidu.com,然后发给请求的服务器,保存一份之后,再发给客户端

13、RabbitMQ是什么东西?
RabbitMQ也就是消息队列中间件,消息中间件是在消息的传息过程中保存消息的容器
消息中间件再将消息从它的源中到它的目标中标时充当中间人的作用
队列的主要目的是提供路由并保证消息的传递;如果发送消息时接收者不可用
消息队列不会保留消息,直到可以成功地传递为止,当然,消息队列保存消息也是有期限地

14、讲一下Keepalived的工作原理?
在一个虚拟路由器中,只有作为MASTER的VRRP路由器会一直发送VRRP通告信息,
BACKUP不会抢占MASTER,除非它的优先级更高。当MASTER不可用时(BACKUP收不到通告信息)
多台BACKUP中优先级最高的这台会被抢占为MASTER。这种抢占是非常快速的(<1s),以保证服务的连续性
由于安全性考虑,VRRP包使用了加密协议进行加密。BACKUP不会发送通告信息,只会接收通告信息

15、讲述一下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这种实现方式不需要隧道结构,因此可以使用大多数操作系统做为物理服务器。

缺点:(不能说缺点,只能说是不足)要求负载均衡器的网卡必须与物理网卡在一个物理段上。

16、mysql的innodb如何定位锁问题,mysql如何减少主从复制延迟?

mysql的innodb如何定位锁问题:
在使用 show engine innodb status检查引擎状态时,发现了死锁问题
在5.5中,information_schema 库中增加了三个关于锁的表(MEMORY引擎)

innodb_trx ## 当前运行的所有事务

innodb_locks ## 当前出现的锁

innodb_lock_waits ## 锁等待的对应关系

mysql如何减少主从复制延迟:
如果延迟比较大,就先确认以下几个因素:
\1. 从库硬件比主库差,导致复制延迟
\2. 主从复制单线程,如果主库写并发太大,来不及传送到从库

就会导致延迟。更高版本的mysql可以支持多线程复制
\3. 慢SQL语句过多
\4. 网络延迟

\5. master负载
主库读写压力大,导致复制延迟,架构的前端要加buffer及缓存层

\6. slave负载
一般的做法是,使用多台slave来分摊读请求,再从这些slave中取一台专用的服务器

只作为备份用,不进行其他任何操作.另外, 2个可以减少延迟的参数:
–slave-net-timeout=seconds 单位为秒 默认设置为 3600秒

#参数含义:当slave从主数据库读取log数据失败后,等待多久重新建立连接并获取数据
–master-connect-retry=seconds 单位为秒 默认设置为 60秒

#参数含义:当重新建立主从连接时,如果连接建立失败,间隔多久后重试
通常配置以上2个参数可以减少网络问题导致的主从数据同步延迟

MySQL数据库主从同步延迟解决方案
最简单的减少slave同步延时的方案就是在架构上做优化,尽量让主库的DDL快速执行

还有就是主库是写,对数据安全性较高,比如sync_binlog=1,innodb_flush_log_at_trx_commit
= 1 之类的设置,而slave则不需要这么高的数据安全,完全可以讲sync_binlog设置为0或者关闭binlog

innodb_flushlog也可以设置为0来提高sql的执行效率。另外就是使用比主库更好的硬件设备作为slave

17、如何重置mysql root密码?

一、 在已知MYSQL数据库的ROOT用户密码的情况下,修改密码的方法:

1、 在SHELL环境下,使用mysqladmin命令设置:

​ mysqladmin –u root –p password “新密码” 回车后要求输入旧密码

2、 在mysql>环境中,使用update命令,直接更新mysql库user表的数据:

​ Update mysql.user set password=password(‘新密码’) where user=’root’;

​ flush privileges;

​ 注意:mysql语句要以分号”;”结束

3、 在mysql>环境中,使用grant命令,修改root用户的授权权限。

​ grant all on . to root@’localhost’ identified by ‘新密码’;

二、 如查忘记了mysql数据库的ROOT用户的密码,又如何做呢?方法如下:

1、 关闭当前运行的mysqld服务程序:service mysqld stop(要先将mysqld添加为系统服务)

2、 使用mysqld_safe脚本以安全模式(不加载授权表)启动mysqld 服务

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

3、 使用空密码的root用户登录数据库,重新设置ROOT用户的密码

#mysql -u root

​ Mysql> Update mysql.user set password=password(‘新密码’) where user=’root’;

​ Mysql> flush privileges;

18、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请求。

19、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功能,启用之后可以支持单独的表备份

20、keepalive的工作原理和如何做到健康检查

keepalived是以VRRP协议为实现基础的,VRRP全称Virtual Router Redundancy Protocol,即虚拟路由冗余协议。
虚拟路由冗余协议,可以认为是实现路由器高可用的协议,即将N台提供相同功能的路由器组成一个路由器组
这个组里面有一个master和多个backup,master上面有一个对外提供服务的vip(该路由器所在局域网内
其他机器的默认路由为该vip),master会发组播,当backup收不到vrrp包时就认为master宕掉了
这时就需要根据VRRP的优先级来选举一个backup当master。这样就可以保证路由器的高可用了
 
keepalived主要有三个模块,分别是core、check和vrrp。core模块为keepalived的核心,负责主进程的启动、维护
及全局配置文件的加载和解析。check负责健康检查,包括常见的各种检查方式,vrrp模块是来实现VRRP协议的
 
Keepalived健康检查方式配置
HTTP_GET|SSL_GET
HTTP_GET | SSL_GET
{
url {
path /``# HTTP/SSL 检查的url可以是多个
digest <STRING> ``# HTTP/SSL 检查后的摘要信息用工具genhash生成
status_code 200``# HTTP/SSL 检查返回的状态码
}
connect_port 80 ``# 连接端口
bindto<IPADD>
connect_timeout 3 ``# 连接超时时间
nb_get_retry 3 ``# 重连次数
delay_before_retry 2 ``#连接间隔时间
}

21、统计ip访问情况,要求分析nginx访问日志,找出访问页面数量在前十位的ip

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

22、使用tcpdump监听主机为192.168.1.1,tcp端口为80的数据,同时将输出结果保存输出到tcpdump.log

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

23、如何将本地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

24、简述raid0 raid1 raid5 三种工作模式的工作原理及特点

RAID 0:带区卷,连续以位或字节为单位分割数据,并行读/写于多个磁盘上,因此具有很高的数据传输率
但它没有数据冗余,``RAID 0 只是单纯地提高性能,并没有为数据的可靠性提供保证
而且其中的一个磁盘失效将影响到所有数据。因此,RAID 0 不能应用于数据安全性要求高的场合
RAID 1:镜像卷,它是通过磁盘数据镜像实现数据冗余,在成对的独立磁盘上产生互为备份的数据
不能提升写数据效率。当原始数据繁忙时,可直接从镜像拷贝中读取数据,因此RAID``1 可以提高读取性能
RAID 1 是磁盘阵列中单位成本最高的,镜像卷可用容量为总容量的1``/2``,但提供了很高的数据安全性和可用性
当一个磁盘失效时,系统可以自动切换到镜像磁盘上读写,而不需要重组失效的数据
RAID5:至少由3块硬盘组成,分布式奇偶校验的独立磁盘结构,它的奇偶校验码存在于所有磁盘上
任何一个硬盘损坏,都可以根据其它硬盘上的校验位来重建损坏的数据(最多允许1块硬盘损坏)
所以raid5可以实现数据冗余,确保数据的安全性,同时raid5也可以提升数据的读写性能

25、你对现在运维工程师的理解和以及对其工作的认识

运维工程师在公司当中责任重大,需要保证时刻为公司及客户提供最高、最快、最稳定、最安全的服务
运维工程师的一个小小的失误,很有可能会对公司及客户造成重大损失
因此运维工程师的工作需要严谨及富有创新精神

26、实时抓取并显示当前系统中tcp 80端口的网络数据信息,请写出完整操作命令

tcpdump -nn tcp port 80

27、服务器开不了机怎么解决一步步的排查

A、造成服务器故障的原因可能有以下几点:

img

B、如何排查服务器故障的处理步骤如下:

img

28、Linux系统中病毒怎么解决

1)最简单有效的方法就是重装系统
2)要查的话就是找到病毒文件然后删除
   中毒之后一般机器cpu、内存使用率会比较高
   机器向外发包等异常情况,排查方法简单介绍下
top 命令找到cpu使用率最高的进程

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

rm -f 命令删除病毒文件
检查计划任务、开机启动项和病毒文件目录有无其他可以文件等
3)由于即使删除病毒文件不排除有潜伏病毒,所以最好是把机器备份数据之后重装一下

29、发现一个病毒文件你删了他又自动创建怎么解决

公司的内网某台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,个人觉得就要重装系统了

30、说说TCP/IP的七层模型

应用层 (Application):
网络服务与最终用户的一个接口。
协议有:HTTP FTP TFTP SMTP SNMP DNS TELNET HTTPS POP3 DHCP
 
表示层(Presentation Layer):
数据的表示、安全、压缩。(在五层模型里面已经合并到了应用层)
格式有,JPEG、ASCll、DECOIC、加密格式等
 
会话层(Session Layer):
建立、管理、终止会话。(在五层模型里面已经合并到了应用层)
对应主机进程,指本地主机与远程主机正在进行的会话
 
传输层 (Transport):
定义传输数据的协议端口号,以及流控和差错校验。
协议有:TCP UDP,数据包一旦离开网卡即进入网络传输层
 
网络层 (Network):
进行逻辑地址寻址,实现不同网络之间的路径选择。
协议有:ICMP IGMP IP(IPV4 IPV6) ARP RARP
 
数据链路层 (Link):
建立逻辑连接、进行硬件地址寻址、差错校验等功能。(由底层网络定义协议)
将比特组合成字节进而组合成帧,用MAC地址访问介质,错误发现但不能纠正
 
物理层(Physical Layer):
是``计算机网络``OSI模型``中最低的一层
物理层规定:为传输数据所需要的物理链路创建、维持、拆除
而提供具有机械的,电子的,功能的和规范的特性
 
简单的说,物理层确保原始的``数据``可在各种物理媒体上传输。``局域网``与``广域网``皆属第1、2层
物理层是``OSI``的第一层,它虽然处于最底层,却是整个开放系统的基础
物理层为设备之间的``数据通信``提供传输媒体及互连设备,为``数据传输``提供可靠的环境
如果您想要用尽量少的词来记住这个第一层,那就是“``信号``和``介质``”

31、你常用的Nginx模块,用来做什么

rewrite模块,实现重写功能
access模块:来源控制
ssl模块:安全加密
ngx_http_gzip_module:网络传输压缩模块
ngx_http_proxy_module 模块实现代理
ngx_http_upstream_module模块实现定义后端服务器列表
ngx_cache_purge实现缓存清除功能

32、请列出你了解的web服务器负载架构

Nginx
Haproxy
Keepalived
LVS

33、查看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
重启后生效

34、用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`

35、写一个脚本,实现判断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` `[ $? -``eq` `0 ]; ``then
echo` `192.168.1.$ip UP
else
echo` `192.168.1.$ip DOWN
fi
}&
done
wait

36、已知 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

37、如何优化 Linux系统(可以不说太具体)?

  1. 不用root,添加普通用户,通过sudo授权管理

  2. 更改默认的远程连接SSH服务端口及禁止root用户远程连接

  3. 定时自动更新服务器时间

  4. 配置国内yum源

  5. 关闭selinux及iptables(iptables工作场景如果有外网IP一定要打开,高并发除外)

  6. 调整文件描述符的数量

  7. 精简开机启动服务(crond rsyslog network sshd)

  8. 内核参数优化(/etc/sysctl.conf)

  9. 更改字符集,支持中文,但建议还是用英文字符集,防止乱码

  10. 锁定关键系统文件

  11. 清空/etc/issue,去除系统及内核版本登录前的屏幕显示

38、请执行命令取出 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

39、请写出下面 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 —->粘贴

40、每天晚上 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


1. Nginx反向代理配置,此类url www.abc.com/refuse,禁止访问,返回403

location /www.abc.com/refuse { 
    return 403;
}
123

2. 如何使用iptables将本地80端口的请求转发到8080端口,当前主机IP为192.168.16.1,其中本地网卡eth0:

[root@luomuqing ~]# iptables -t nat -A PREROUTING -p tcp -i eth0 --dport 8080 -j DNAT --to 192.168.136.130:80
[root@luomuqing ~]# 
12

3. 如何查看Linux系统当前的状态,cpu内存的使用情况及负载

系统 
uname -a # 查看内核/操作系统/CPU信息 
head -n 1 /etc/issue # 查看操作系统版本 
cat /proc/cpuinfo # 查看CPU信息 
hostname # 查看计算机名 
资源 
free -m # 查看内存使用量和交换区使用量 
df -h # 查看各分区使用情况 
du -sh # 查看指定目录的大小 
grep MemTotal /proc/meminfo # 查看内存总量 
grep MemFree /proc/meminfo # 查看空闲内存量 
uptime # 查看系统运行时间、用户数、负载 
cat /proc/loadavg # 查看系统负载 
12345678910111213

4. nginx如何重定义或者添加发往后端服务器的请求头

headers-more-nginx-module 模块用于添加,修改,或者清除 请求/响应头
more_set_headers 用于添加、修改、清除响应头
more_clear_headers 用于清除响应头
more_set_input_headers 用于添加、修改、清除请求头
more_clear_input_headers 用于清除请求头
12345

5. 编写shell脚本,将当前目录下大于10K的文件转移到/tmp目录下

[root@luomuqing ~]# cat a.sh
#!/bin/bash
for Filename in $(ls -l |awk '$5 > 10240 {print $9}')
do
mv $Filename /tmp
done
123456

6. 写出你所了解的门户网站的服务架构,可用什么方式实现的高可用、负载均衡?

软负载: nginx+keepalived
lvs+keepalived 
硬负载: F5、A10
常见的web集群:
apache+tomcat;nginx+tomcat;lvs+nginx+tomcat
12345

7. nginx 日志过滤10点到12点之间访问IP排名和统计

[root@luomuqing ~]# pwd
/usr/local/nginx/logs
[root@luomuqing ~]# ls
access.log  error.log  nginx.pid
[root@luomuqing ~]# cat access.log | grep "16/Jun/2020" | sed -n '/07:39:54/,/08:00:01/p' | awk '{print $1}' | sort | uniq -c | sort -t " " -k2 -n -r
      8 192.168.1.4
123456

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

[root@luomuqing ~]# crontab -e
no crontab for root - using an empty one
crontab: installing new crontab
[root@luomuqing ~]# crontab -l
0 6-12/2 * 11 * /usr/bin/httpd.sh
[root@luomuqing ~]#
123456

9. 分布式文件存储是否有过了解和使用,了解过的有什么特性

FastDFS
解决了大数据量的存储和负载均衡问题,特别适合中小文件为载体的在线服务,比如在线相册,视频网站等等。 网盘社区,广告和应用下载的存储。
分布式文件系统:
优点: 定时备份,如果一台down掉,迅速切换到另一台。扩展能力强,能够保证文件系统的可用性,也能够保证数据的完整性和唯一性
缺点: 系统复杂程度较高,需要更多服务器
常见的分布式文件系统还有: GlusterFS, GoogleFS, TFS, OSS
123456

10. 使用netstat和awk命令统计下网络连接数:

[root@luomuqing ~]# netstat -n | awk '/^tcp/ {++state[$NF]} END {for(key in state) print key,"\t",state[key]}'
ESTABLISHED      3
CLOSING          2
[root@luomuqing ~]# 

补充:
CLOSED:无连接是活动的或正在进行
LISTEN:服务器在等待进入呼叫
SYN_RECV:一个连接请求已经到达,等待确认
SYN_SENT:应用已经开始,打开一个连接
ESTABLISHED:正常数据传输状态
FIN_WAIT1:应用说它已经完成
FIN_WAIT2:另一边已同意释放
ITMED_WAIT:等待所有分组死掉
CLOSING:两边同时尝试关闭
TIME_WAIT:另一边已初始化一个释放
LAST_ACK:等待所有分组死掉
1234567891011121314151617

11. 在linux下,假设nginx日志的路径为opt/logs/access.logs,日志不能自动分割,请写出一个简单的脚本,让日志每天能够定时自动分割

[root@luomuqing ~]# vim eck_nginx_log.sh
[root@luomuqing ~]# cat eck_nginx_log.sh 
#! /bin/bash
base_path='/usr/local/nginx/logs'
log_path=$(date -d yesterday +"%Y%m")
minute=$(date -d "1 minute ago" +"%Y%m%d-%H:%M")
 
mkdir -p $base_path/$log_path
echo $base_path/access.log
mv $base_path/access.log $base_path/$log_path/access_$minute.log
echo $base_path/$log_path/access_$minite.log
kill -USR1 `cat /usr/local/nginx/logs/nginx.pid`
123456789101112
[root@luomuqing ~]# crontab -e
no crontab for root - using an empty one
crontab: installing new crontab
[root@luomuqing ~]# crontab -l
* * 1 * * eck_nginx_log.sh
[root@luomuqing ~]#
123456

12. 写出raid的几种模式,以及他们的特点

raid  名称 特点

raid0 提高读写性能,最少两块容量为N的硬盘,容量为2N

raid1 提高数据安全性,提高读取性能,不能提高写入性能,2003自带raid1功能,最少两块容量为N的硬盘,容量为N

raid10 先提高安全性,再提高性能,最少4块容量为N的硬盘,容量为2N,RAID10比RAID01在安全性方面要强(体现在容错率上)

raid01 先提高性能,再提高安全性,最少4块容量为N的硬盘,容量为2N

raid5 提升安全性,安全性低于raid10(三块盘的情况下),大文件读写没有优势,小文件读写能力低于raid10,最低三块盘,容量为2快盘
1234567891011

13. 写一个脚本,查找15天前以png结尾的文件并删除

[root@luomuqing ~]# vim nginx_find.sh
[root@luomuqing ~]# cat nginx_find.sh 
#!/bin/bash
find /picture/*.png* -type f  -mtime +15 -exec rm  {} \;
1234

14. 对于服务器的监控使用过哪类工具及其特点

zabbix, prometheus, cacti ,nagios
特点略
12

15. 作为运维工程师,你对该职位的认识和理解有哪些,日常工作中应该怎么做

做运维岗位带给你的改变: 
1、可以认识更多的人,同时也能被更多的人认识, 对于一个喜欢沟通和交流的我来说,更能够在这个岗位上干的长久。
2、运维人员临场应变能力和处理突发事件的能力会随着工作经验的增长而增强。更容易养成未雨绸缪,思维上得到锻炼,考虑问题更全面,细致,透彻,且内心承受能来强大
3、运维能力不是高学历可以搞定的,需要的是勤奋努力,善于总结 

其次: 运维不是单纯的运维维护,而是运维规范和规则的制定者以及安全运维规范的忠实维护者和践行者。

在工作中应该做什么?
1. 监控,报警,线上部署
2. 脚本自动化,工具自动化
3. 故障处理

要弄懂底层原理,比如监控: 任何的监控都是: 收集数据,存储数据,数据分析,数据指标展示,告警五个部分。理解了这个,对于任何监控你可以去分析,哪个模块是在分析数据,哪个模块是在收集数据,能不能用其他的代替。

列出查看Linux操作系统服务器资源或服务的命令并说明系统版本

举例:
内存:grep MemTotal /proc/meminfo free -m 查看可用内存

查看系统位数:getconf LONG_BIT

查看是多少核:more /proc/cpuinfo | grep "model name"

磁盘:df -h
系统版本: [root@ecs-c13b diff]# cat /etc/redhat-release
CentOS Linux release 7.5.1804 (Core)

如何重置mysql root密码?

在my.cnf里[mysqld] 下配置 skip_grant_tables=1
然后直接使用mysql登陆数据库
修改密码:
update mysql.user set authentication_string=password('123) where user='root' and host='localhost';
exit;

退出后删除之前添加的内容,重启即可

简述keepalived原理

作用:防止单点故障
keepalived的实现是基于VRRP协议,也就是路由冗余协议

原理:

keepalived可提供vrrp以及health-check功能,可以只用它提供双机浮动的vip(vrrp虚拟路由功能),这样可以简单实现一个双机热备高可用功能;

keepalived是以VRRP虚拟路由冗余协议为基础实现高可用的,可以认为是实现路由器高可用的协议,即将N台提供相同功能的路由器组成一个路由器组,这个组里面有一个master和多个backup,master上面有一个对外提供服务的vip(该路由器所在局域网内其他机器的默认路由为该vip),master会发组播,当backup收不到VRRP包时就认为master宕掉了,这时就需要根据VRRP的优先级来选举一个backup当master。这样的话就可以保证路由器的高可用了。

简单点说(面试用): keepalived 是基于VRRP虚拟路由冗余协议为基础实现高可用的,一个master,几个backup, mater会发组播,当backup收不到vrrp包时会认为master宕机,然后根据VRRP优先级来重新选举一个backup来当maser,以实现高可用。

补充:
keepalived 由三个模块组成,分别是core, check,和vrrp

core:是keepalived的核心,负责主进程的启动和维护,全局配置文件的加载解析等

check: 负责healthchecker(健康检查),包括了各种健康检查方式,以及对应的配置的解析包括LVS的配置解析;可基于脚本检查对IPVS后端服务器健康状况进行检查

vrrp:VRRPD子进程,VRRPD子进程就是来实现VRRP协议的

lvs,nginx,haproxy 有什么区别,工作中你怎么选择?

题外话: 我其实很好奇笔试怎么会出这种题,直接面试不香吗

解答:

LVS: 是基于四层的转发

HAproxy: 是基于四层和七层的转发,是专业的代理服务器

Nginx: 是WEB服务器,缓存服务器,又是反向代理服务器,可以做七层的转发

区别: LVS基于四层的只能做端口转发,而基于目录的,基于url的就不能用LVS

工作中选择:

HAproxy和Nginx由于可以做七层的转发,所以URL和目录的转发都可以做

在很大并发量的时候我们就要选择LVS,像中小型公司的话并发量没那么大

选择HAproxy或者Nginx足已,由于HAproxy由是专业的代理服务器

配置简单,所以中小型企业推荐使用HAproxy

列举你接触过的虚拟化技术或者产品,并列出对应的熟练程度

kvm : 熟练
vmware: 熟练掌握
docker: 熟练掌握
xen: 熟练

1
2
3
4

如何将本地80端口的请求转发到8080端口,当前主机IP为192.168.1.80

iptables -t nat -A PREROUTING -d 192.168.1.80 -p tcp --dport 80 -j DNAT --to-destination 192.168.1.80:8080

1

补充:

iptables 基础

规则rules : 网络管理员预定义的条件
链chains : 数据包传播的路径
表 tables 内置三个表:filter,nat,mangle

filter 系统默认的,INPUT表(进入的包),FORWORD(转发的包),OUTPUT(处理本地生成的包),filter表只能对包进行授受和丢弃的操作。
nat表(网络地址转换),PREROUTING(修改即将到来的数据包),OUTPUT(修改在路由之前本地生成的数据包),POSTROUTING(修改即将出去的数据包)
mangle表,PREROUTING,OUTPUT,FORWORD,POSTROUTING,INPUT

增加,插入,删除和替换规则
-A 增加
-I 插入
-D 删除
-R 替换
-i 网卡名称
-p 协议类型
-s 源IP
–sport源端口号
-d 目的ip
– dport目标端口号
-j 动作

iptables [-t 表名] <-A|I|D|R> 链名 [规则编号] [-i|o 网卡名称] [-p 协议类型] [-s 源ip|源子网] [--sport 源端口号] [-d 目的IP|目标子网] [--dport 目标端口号] [-j 动作]

一、填空题

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

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

  3. Linux 文件系统中每个文件用indoe节点来标识。

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

  5. 链接分为:硬链接 和 符号链接 。

  6. 超级块包含了i 节点表 和 空闲块表 等重要的文件系统信息。

  7. 某文件的权限为:d-rw-_r--_r--,用数值形式表示该权限,则该八进制数为:644 ,该文件属性是目录 。

  8. 前台启动的进程使用Ctrl+c 终止。

  9. 静态 路由 设定后,若 网络 拓扑结构发生变化,需由系统 管理 员 修改路由的 设置 。

  10. 网络管理的重要任务是:控制 和 监控 。

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

  12. 编写的 Shell 程序运行前必须赋予该脚本文件执行 权限。

  13. 系统管理的任务之一是能够在分布式 环境中实现对程序和数据的安全保护、备份、恢复和更新。

  14. 系统交换分区是作为系统虚拟存储器 的一块区域 。

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

  16. 内核配置是系统管理员在改变系统配置硬件 时要进行的重要操作。

  17. 在安装Linux 系统中,使用netconfig 程序对网络进行配置,该安装程序会一步步提示用户 输入主机名、域名、域名 服务 器 、IP 地址、网关地址 和子网掩码 等必要信息。

  18. 唯一标识每一个用户的是用户ID 和用户名 。

20 .RIP 协议 是最为普遍的一种内部协议,一般称为动态路由信息协议 。

  1. 在Linux 系统中所有内容都被表示为文件,组织文件的各种方法称为文件系统 。

  2. DHCP 可以实现动态 IP 地址分配。

  3. 系统网络管理员的管理对象是服务器 、用户 和服务器的进程 以及系统的各种资源。

  4. 网络管理通常由监测、传输和管理 三部分组成,其中管理部分是整个网络管理的中心。

25.当想删除本系统用不上的设备驱动程序 时必须编译内核,当内核不支持系统上的设备驱动程序 时,必须对内核升级 。

26 Ping 命令可以测试网络中本机系统是否能到达一台远程主机 ,所以常常用于测试网络的 连通性 。

  1. vi 编辑器具有两种工作模式: 命令 模式 和 输入模式 。

  2. 可以用ls –al 命令来观察文件的权限,每个文件的权限都用10 位表示,并分为四段,

其中第一段占 1 位,表示 文件类型 ,第二段占3 位,表示文件所有者 对该文件的权限。

  1. 进程与程序的区别在于其动态性,动态的产生和终止,从产生到终止进程可以具有的

基本状态为:运行态 、 就绪态 和 等待态(阻塞态) 。

  1. DNS 实际上是分布在internet 上的主机信息的 数据库 ,其作用是实现IP 地址和主

机名 之间的转换。

  1. Apache 是实现WWW服务器功能 的 应用 程序,即通常所说的―浏览web 服务器‖,

在服务器端为用户提供浏览 web 服务 的就是apache 应用程序。

32.在Linux 系统上做备份可以有两种类型:系统备份 和用户备份 。其中前者是指对 操

作系统 的备份,后者是指对应用程序和用户文件的备份 。

  1. CD-ROM 标准的文件系统类型是iso9660 。

  2. 当lilo.conf 配置完毕后,使之生效,应运行的命令及参数是lilo 。

  3. 在使用ls 命令时,用八进制形式显示非打印字符应使用参数-b 。

  4. Linux 使用支持 Windows 9.x/2000 长文件名的文件系统的类型是 vfat 。

  5. 设定限制用户使用磁盘 空间 的命令是quota 。

38 在Linux 系统中,用来存放系统所需要的配置文件 和子目录的目录是/etc 。

  1. 硬连接只能建立对文件 链接。符号链接可以跨不同文件系统创建。

  2. 套接字文件的属性位是s 。

  3. 结束后台进程的命令是kill 。

  4. 进程的运行有两种方式,即独立运行和使用父进程运行 。

  5. Links 分为硬链接和符号链接 。

  6. 在超级用户下显示Linux 系统中正在运行的全部进程,应使用的命令及参数是ps-aux 。

  7. 管道文件的属性位是p 。

  8. 将前一个命令的标准输出作为后一个命令的标准输入,称之为管道 。

  9. 为脚本程序指定执行权的命令及参数是chmod a+x filename 。

  10. 进行远程登录的命令是telnet 。

  11. 欲发送10个分组报文测试与主机abc.tuu.edu.cn 的连通性,应使用的命令和参数是:ping abc.tuu.edu.cn –c 10 。

  12. DNS 服务器的进程命名为named,当其启动时,自动装载 /etc 目录下的named.conf 文件中定义的DNS 分区数据库文件。

  13. Apache 服务器进程配置文件是httpd.conf 。

52.在 Linux 系统中,压缩文件后生成后缀为.gz 文件的命令是gzip 。

  1. 在用vi 编辑文件时,将文件内容存入test.txt 文件中,应在命令模式下键入 :wtest.txt 。

54 可以在标准输出上显示整年日历的命令及参数是cal -y 。

  1. 在shell 编程时,使用方括号表示测试条件的规则是:方括号两边必须有空格 。

  2. 检查已安装的文件系统/dev/sda5 是否正常,若检查有错,则自动修复,其命令及参数是fsck –a /dev/sda5 。

  3. 在Windows9.x 环境下共享Unix/Linux 中的用户目录的一个工具是Samba 服务器 。

  4. 系统管理员的职责是进行系统资源管理、系统性能管理、设备管理、安全管理和系统性能监测 。

59 在Linux 系统中,测试DNS 服务器是否能够正确解析 域名的的客户端命令,使用命令nslookup 。

  1. 在Linux 系统下,第二个IDE 通道的硬盘(从盘)被标识为sdb 。

  2. 当系统管理员需升级内核版本和改变系统硬件配置时,应重新编译内核 。

  3. 如果只是要修改系统的IP 地址,应修改/etc/rc.d/rc.inet1 配置文件。

  4. 当LAN 内没有条件建立DNS 服务器,但又想让局域网内的用户可以使用计算机名互相访问时,应配置/etc/hosts 文件。

  5. 在vi 编辑环境下,使用Esc 键 进行模式转换。

  6. Slackware Linux 9.0 通常使用ext3 文件系统,系统的全部磁盘块由四 部分组成。

  7. 将/home/stud1/wang 目录做归档压缩,压缩后生成wang.tar.gz 文件,并将此文件保存到/home 目录下,实现此任务的tar 命令格式tar zcvf /home/wang.tar.gz/home/stud1/wang 。

  8. 管道就是将前一个命令的 标准输出 作为后一个命令的标准输入 。

  9. 在使用手工的方法配置网络时,可通过修改/etc/HOSTNAME 文件来改变主机名,若要配置该计算机的域名解析客户端,需配置/etc/resolv.conf 文件。

  10. 启动进程有手动启动和调度启动两种方法,其中调度启动常用的命令为 at 、 batch和 crontab 。

  11. test.bns.com.cn 的域名是bns.com.cn ,如果要配置一域名服务器,应在named.conf 文件中定义DNS 数据库的工作目录。

  12. Sendmail 邮件系统使用的两个主要协议是:SMTP 和 POP ,前者用来发送邮件,后者用来接收邮件。

  13. DHCP 是动态主机配置协议的简称,其作用是:为网络中的主机分配IP 地址 。

  14. 目前代理服务器使用的软件包有很多种,教材中使用的是squid 。

  15. rm 命令可删除文件或目录,其主要差别就是是否使用递归开关-r。

75.mv 命令可以移动文件和目录,还可以为文件和目录重新命名。

  1. 路由选择 协议(RIP)的跳数表示到达目的地之前必须通过的网关 数,RIP 接受的最长距离是15 跳 。

  2. ping 命令用于测试网络的连通性,ping 命令通过ICMP 协议(internet 控制信息协议)来实现。

78.nfs 协议 用于实现 Unix (/linux)主机之间的文件系统共享。

  1. shell 不仅是用户命令的解释器 ,它同时也是一种功能强大的编程语言。 bash 是Linux 的缺省shell。

  2. 用>> 符号将输出重定向内容附加在原文的后面。

  3. 增加一个用户的命令是:adduser 或useradd 。

82 进行字符串查找,使用grep 命令。

  1. 使用* 每次匹配若干个字符。

84./sbin 目录用来存放系统管理员使用的管理程序。

二、选择题

shell部分

1.在shell 中变量的赋值有四种方法,其中,采用name=12 的方法称 A 。

A 直接赋值

B 使用read 命令

C 使用命令行参数

D 使用命令的输出

2.D 命令可以从文本文件的每一行中截取指定内容的数据。

A cp

B dd

C fmt

D cut

3.在Shell 脚本中,用来读取文件内各个域的内容并将其赋值给Shell 变量的命令是 D 。

A fold

B join

C tr

D read

4.退出交互模式的shell,应键入 C 。

A ;

B ^q

C exit

D quit

5.下列变量名中有效的shell 变量名是: C 。

A -2-time

B _2$3

C trust_no_1

D 2004file

6.是shell 具有的功能和特点的是 C 。

A 管道 B 输入输出重定向 C 执行后台进程 D 处理程序命令

7.下列对shell 变量FRUIT 操作,正确的是: C 。

A 为变量赋值:$FRUIT=apple

B 显示变量的值:fruit=apple

C 显示变量的值:echo $FRUIT

D 判断变量是否有值:[ -f ―$FRUIT‖ ]

网络部分

  1. 下面的网络协议中,面向连接的的协议是: A 。

A 传输控制协议

B 用户数据报协议

C 网际协议

D 网际控制报文协议

  1. 一台主机要实现通过局域网与另一个局域网通信,需要做的工作是 C 。

A 配置域名服务器

B 定义一条本机指向所在网络的路由

C 定义一条本机指向所在网络网关的路由

D 定义一条本机指向目标网络网关的路由

服务器管理

  1. 在/etc/fstab 文件中指定的文件系统加载参数中,D 参数一般用于CD-ROM 等移动设备。

A defaults

B sw

C rw 和ro

D noauto

noauto只在命令下挂载

2.Linux 文件权限一共10 位长度,分成四段,第三段表示的内容是 C 。

A 文件类型

B 文件所有者的权限

C 文件所有者所在组的权限

D 其他用户的权限

3.终止一个前台进程可能用到的命令和操作 B 。

A kill

B ;+C

C shut down

D halt

4.在使用mkdir 命令创建新的目录时,在其父目录不存在时先创建父目录的选项是 D 。

A -m

B -d

C -f

D –p

  1. 下面关于i 节点描述错误的是 A 。(inode 是一种数据结构,vfs 中描述文件的相关参数??)

A i 节点和文件是一一对应的

B i 节点能描述文件占用的块数

C i 节点描述了文件大小和指向数据块的指针

D 通过i 节点实现文件的逻辑结构和物理结构的转换

  1. 具有很多C 语言的功能,又称过滤器的是 C 。

A csh

B tcsh

C awk (awk 详解 )

D sed

  1. 建立动态路由需要用到的文件有 D 。

A /etc/hosts

B /etc/HOSTNAME

C /etc/resolv.conf

D /etc/gateways

8.局域网的网络地址192.168.1.0/24,局域网络连接其它网络的网关地址是192.168.1.1。主机192.168.1.20 访问172.16.1.0/24 网络时,其路由设置正确的是B 。

A route add –net 192.168.1.0 gw 192.168.1.1 netmask 255.255.255.0 metric1

B route add –net 172.16.1.0 gw 192.168.1.1 netmask 255.255.255.255 metric1

C route add –net 172.16.1.0 gw 172.16.1.1 netmask 255.255.255.0 metric 1

D route add default 192.168.1.0 netmask 172.168.1.1 metric 1

  1. 下列提法中,不属于ifconfig 命令作用范围的是 D 。

A 配置本地回环地址

B 配置网卡的IP 地址

C 激活网络适配器

D 加载网卡到内核中

  1. 下列关于链接描述,错误的是 B 。

A 硬链接就是让链接文件的i 节点号指向被链接文件的i 节点

B 硬链接和符号连接都是产生一个新的i 节点

C 链接分为硬链接和符号链接

D 硬连接不能链接目录文件

11.在局域网络内的某台主机用ping 命令测试网络连接时发现网络内部的主机都可以连同,而不能与公网连通,问题可能是 C。

A 主机IP 设置有误

B 没有设置连接局域网的网关

C 局域网的网关或主机的网关设置有误

D 局域网DNS 服务器设置有误

12.下列文件中,包含了主机名到IP 地址的映射关系的文件是: B 。

A /etc/HOSTNAME

B /etc/hosts

C /etc/resolv.conf

D /etc/networks

13.不需要编译内核的情况是 D 。

A 删除系统不用的设备驱动程序时

B 升级内核时

C 添加新硬件时

D 将网卡激活

  1. 下列不是Linux 系统进程类型的是 D 。

A 交互进程

B 批处理进程

C 守护进程

D 就绪进程(进程状态)

15.配置Apache 服务器需要修改的配置文件为A

A httpd.conf

B access.conf

C srm.conf

D named.conf

16.内核不包括的子系统是 D 。

A 进程管理系统

B 内存管理系统

C I/O 管理系统

D 硬件管理系统

17.在日常管理中,通常CPU 会影响系统性能的情况是: A 。

A CPU 已满负荷地运转

B CPU 的运行效率为30%

C CPU 的运行效率为50%

D CPU 的运行效率为80%

18.若一台计算机的内存为128GB,则交换分区的大小通常是 A。

A 4GB

B 16GB

C 64GB

D 256GB

19.Linux查看文件的命令,若希望在查看文件内容过程中可以用光标上下移动来查看文件内容,应使用 C 命令。

A cat

B more

C less

D head

20.在TCP/IP 模型中,应用层包含了所有的高层协议,在下列的一些应用协议中, B 是能够实现本地与远程主机之间的文件传输工作。

A telnet

B FTP

C SNMP

D NFS

21.当我们与某远程网络连接不上时,就需要跟踪路由查看,以便了解在网络的什么位置出现了问题,满足该目的的命令是 C 。

A ping

B ifconfig

C traceroute

D netstat

22.对名为fido 的文件用chmod 551 fido 进行了修改,则它的许可权是 D 。

A -rwxr-xr-x

B -rwxr--r--

C -r--r--r--

D -r-xr-x—x

23.用ls –al 命令列出下面的文件列表, D 文件是符号连接文件。

A -rw-rw-rw- 2 hel-s users 56 Sep 09 11:05 hello

B -rwxrwxrwx 2 hel-s users 56 Sep 09 11:05 goodbey

C drwxr--r-- 1 hel users 1024 Sep 10 08:10 zhang

Dl rwxr--r-- 1 hel users 2024 Sep 12 08:12 cheng

24.DNS 域名系统主要负责主机名和 A 之间的解析。

A IP 地址

B MAC 地址

C 网络地址

D 主机别名

25.WWW服务器是在Internet 上使用最为广泛,它采用的是 B 结构。

A 服务器/工作站

B B/S

C 集中式

D 分布式

26.Linux 系统通过 C 命令给其他用户发消息。

A less

B mesg y

C write

D echo to

[ 注:mesg [y|n] 所有使用者 决定是否允许其他人传讯息到自己的终端机介面 ]

27.NFS 是 C 系统。

A 文件

B 磁盘

C 网络文件

D 操作

28.B 命令可以在Linux 的安全系统中完成文件向磁带备份的工作。

A cp

B tr

C dir

D cpio

[注:如果用 echo $PATH 或者 echo $LD_LIBRARY_PATH 等类似的命令来显示路径信息的话,我们看到的将会是一大堆用冒号连接在一起的路径, tr 命令可以把这些冒号转换为回车,这样,这些路径就具有很好的可读性了:echo $PATH | tr ":" "\n" ]

29.Linux 文件系统的文件都按其作用分门别类地放在相关的目录中,对于外部设备文件,一般应将其放在 C 目录中。

A /bin

B /etc

C /dev

D /lib

30.在重新启动Linux 系统的同时把内存中的信息写入硬盘,应使用 D 命令实现。

A # reboot

B # halt

C # reboot

D # shutdown –r now

31.网络管理具备以下几大功能:配置管理、 A 、性能管理、安全管理和计费管理等。

A 故障 管理

B 日常备份管理

C 升级管理

D 发送邮件

32.关于代理服务器的论述,正确的是 A 。

A 使用internet 上已有的公开代理服务器,只需配置客户端。

B 代理服务器只能代理客户端http 的请求。

C 设置好的代理服务器可以被网络上任何主机使用。

D 使用代理服务器的客户端没有自己的ip 地址。

33.关闭linux 系统(不重新启动)可使用命令 B 。

A Ctrl+Alt+Del

B halt

C shutdown -r now

D reboot

34.实现从IP 地址到以太网MAC 地址转换的命令为: C 。

A ping

B ifconfig

C arp

D traceroute

35.在vi 编辑器中的命令模式下,键入 B 可在光标当前所在行下添加一新行。

A ;

B o

C ;

D A

36.在vi 编辑器中的命令模式下,删除当前光标处的字符使用 A 命令。

A x

B ;;

C ;

D ;;

37.在vi 编辑器中的命令模式下,重复上一次对编辑的文本进行的操作,可使用 C 命令。

A 上箭头

B 下箭头

C <.>;

D <*>;

38.用命令ls -al 显示出文件ff 的描述如下所示,由此可知文件ff 的类型为 A 。-rwxr-xr-- 1 root root 599 Cec 10 17:12 ff

A 普通文件

B 硬链接

C 目录

D 符号链接

39.删除文件命令为: D 。

A mkdir

B rmdir

C mv

D rm

40.在下列的名称中,不属于DNS 服务器类型的是:C

A Primary Master Server

B Secondary Master Server

C samba

D Cache_only Server

  1. 邮件转发代理也称邮件转发服务器,它可以使用SMTP 协议,也可以使用 C 协议。

A FTP

B TCP

C UUCP

D POP

42.启动samba 服务器进程,可以有两种方式:独立启动方式和父进程启动方式,其中前者是在 C 文件中以独立进程方式启动。

A /usr/sbin/smbd

B /usr/sbin/nmbd

Crc.samba

D /etc/inetd.conf

43.DHCP 是动态主机配置协议的简称,其作用是可以使网络管理员通过一台服务器来管理一个网络系统,自动地为一个网络中的主机分配D地址。

A 网络

B MAC

C TCP

D IP

44.对文件进行归档的命令为 D 。

A dd

B cpio

C gzip

D tar

45.改变文件所有者的命令为 C 。

A chmod

B touch

C chown

D cat

46.在给定文件中查找与设定条件相符字符串的命令为: A 。

A grep

B gzip

C find

D sort

47.建立一个新文件可以使用的命令为 D 。

A chmod

B more

C cp

D touch (指令改变档案的时间记录。)

48.在下列命令中,不能显示文本文件内容的命令是: D 。

A more

B less

C tail

D join

49.在使用匿名登录ftp 时,用户名为 B 。

A users

B anonymous

C root

D guest

50.在实际操作中,想了解命令logname 的用法,可以键入 D 得到帮助。

A logname --man

B logname/?

C help logname

D logname --help

51.文件权限读、写、执行的三种标志符号依次是 A 。

A rwx

B xrw

C rdx

D srw

52.Linux 文件名的长度不得超过 C 个字符。

A 64

B 128

C 256

D 512

53.从后台启动进程,应在命令的结尾加上符号 A 。

A &

B @

C #

D $

54.crontab 文件由六个域组成 ,每个域之间用空格分割,其排列如下: B 。

A MIN HOUR DAY MONTH YEAR COMMAND

B MIN HOUR DAY MONTH DAYOFWEEK COMMAND

C COMMAND HOUR DAY MONTH DAYOFWEEK

D COMMAND YEAR MONTH DAY HOUR MIN

crontab 命令:实现程序定时运行

55.用ftp 进行文件传输时,有两种模式: C 。

A Word 和binary

B .txt 和Word Document

C ASCII 和binary

D ASCII 和Rich Text Format

56.某文件的组外成员的权限为只读;所有者有全部权限;组内的权限为读与写,则该文件的权限为 D 。

A 467

B 674

C 476

D 764

57.在DNS 系统测试时,设named 进程号是53,命令 D 通知进程重读配置文件。

A kill –USR2 53

B kill –USR1 53

C kill -INT 63

D kill –HUP 53

58.Apache 服务器默认的接听连接端口号是 C 。

A 1024

B 800

C 80 (http)

D 8

59.PHP 和 MySQL 的联合使用 解决 了 C 。

A 在Proxy 上处理数据库的访问问题

B 在WWW服务器上处理黑客的非法访问问题

C 在WWW服务器上处理数据库的访问问题

D 在Sendmail 邮件系统上处理数据库的访问问题

60.OpenSSL 是一个 A 。

A 加密软件

B 邮件系统

C 数据库管理系统

D 嵌入式脚本编程语言

61.将Windows C:盘(hda1)安装在Linux 文件系统的/winsys 目录下,命令是 B 。

Aroot@l04.edu.cn:~#mount dev/had1 /winsys

Broot@l04.edu.cn:~#mount /dev/had1 /winsys

Croot@l04.edu.cn:~#mount /dev/had1 winsys

Droot@l04.edu.cn:~#mount dev/had1 winsys

63.设超级用户root 当前所在目录为:/usr/local,键入cd 命令后,用户当前所在目录为 B 。

A /home

B /root

C /home/root

D /usr/local

64.字符设备文件类型的标志是 B 。

A p

B c

C s

D l

65.在/home/stud1/wang 目录下有一文件file,使用 D 可实现在后台执行命令,此命令将file 文件中的内容输出到file.copy 文件中。

A cat file >;file.copy

B cat >;file.copy

C cat file file.copy &

D cat file >;file.copy &

66.在DNS 配置文件中,用于表示某主机别名的是: B 。

A NS

B CNAME

C NAME

D CN

67.qmail 是 B 。

A 收取邮件的协议

B 邮件服务器的一种

C 发送邮件的协议

D 邮件队列

68.已知某用户stud1,其用户目录为/home/stud1。分页显示当前目录下的所有文件的文件或目录名、用户组、用户、文件大小、文件或目录权限、文件创建时间等信息的命令是D 。

A more ls –al

B more –al ls

C more < ls –al

D ls –al | more

69.关于进程调度命令, B 是不正确的。at--定期执行程序的调度命令

A 当日晚11 点执行clear 命令,使用at 命令:at 23:00 today clear

B 每年1 月1 日早上6 点执行date 命令,使用at 命令:at 6am Jan 1 date

C 每日晚11 点执行date 命令,crontab 文件中应为:0 23 * * * date

D 每小时执行一次clear 命令,crontab 文件中应为:0 */1 * * * clear

70.系统中有用户user1 和user2,同属于users 组。在user1 用户目录下有一文件file1,它拥有644 的权限,如果user2 用户想修改user1 用户目录下的file1 文件,应拥有 B 权限。

A 744

B 664

C 646

D 746

71.如果想配置一台匿名ftp 服务器,应修改 C 文件。

A /etc/gateway

B /etc/ftpservers

C /etc/ftpusers

D /etc/inetd.conf

72.Samba 服务器的进程由B 两部分组成 。

A named 和sendmail

Bsmbd 和nmbd

C bootp 和dhcpd

D httpd 和squid

73.要配置NFS 服务器,在服务器端主要配置 C 文件。

A /etc/rc.d/rc.inet1

B /etc/rc.d/rc.M

C /etc/exports

D /etc/rc.d/rc.S

74.为保证在启动服务器时自动启动DHCP 进程,应对 B 文件进行编辑。

A /etc/rc.d/rc.inet2

B /etc/rc.d/rc.inet1

C /etc/dhcpd.conf

D /etc/rc.d/rc.S

75.在配置代理服务器时,若设置代理服务器的工作缓存为64MB,配置行应为 D 。

A cache 64MB

B cache_dir ufs /usr/local/squid/cache 10000 16 256

C cache_ mgr 64MB

Dcache_ mem 64MB

76.安全管理涉及的问题包括保证网络管理工作可靠进行的安全问题和保护网络用户及网络管理对象问题。 C 属于安全管理的内容。

A 配置设备的工作参数

B 收集与网络性能有关的数据

C 控制和维护访问权限

D 监测故障

77.以下命令对中,正确的是: B 。

A ls 和sl

B cat 和tac

C more 和erom

D exit 和tixe

cat 是显示文件夹的命令,这个大家都知道,tac 是cat 的倒写,意思也和它是相反的。cat是从第一行显示到最后一行,而tac 是从最后一行显示到第一行,而rev 则是从最后一个字符显示到第一个字符

78.B 命令是在vi 编辑器中执行存盘退出。

A :q

B ZZ

C :q!

D :WQ

79.B 不是进程和程序的区别。

A 程序是一组有序的静态指令,进程是一次程序的执行过程

B 程序只能在前台运行,而进程可以在前台或后台运行

C 程序可以长期保存,进程是暂时的

D 程序没有状态,而进程是有状态的

三、简答题

服务器管理和工作原理

1.简述Linux 文件系统通过i 节点把文件的逻辑结构和物理结构转换的工作过程。

参考答案:

Linux 通过i 节点表将文件的逻辑结构和物理结构进行转换。

i 节点是一个64 字节长的表,表中包含了文件的相关信息,其中有文件的大小、文件所有者、文件的存取许可方式以及文件的类型等重要信息。在i 节点表中最重要 的内容是磁盘地址表 。在磁盘地址表中有13 个块号,文件将以块号在磁盘地址表中出现的顺序依次读取相应的块。Linux 文件系统通过把i 节点和文件名进行 连接,当需要读取该文件时,文件系统在当前目录表中查找该文件名对应的项,由此得到该文件相对应的i 节点号,通过该i 节点的磁盘地址表把分散存放的文件物 理块连接成文件的逻辑结构。

2.简述进程的启动、终止的方式以及如何进行进程的查看。

参考答案:

在Linux 中启动一个进程有手工启动和调度启动两种方式:

(1)手工启动

用户在输入端发出命令,直接启动一个进程的启动方式。可以分为:

①前台启动:直接在SHELL 中输入命令进行启动。

②后台启动:启动一个目前并不紧急的进程,如打印进程。

(2)调度启动

系统管理员根据系统资源和进程占用资源的情况,事先进行调度安排,指定任务运行的时间和场合,到时候系统会自动完成该任务。

经常使用的进程调度命令为:at、batch、crontab。

  1. 简述DNS 进行域名解析的过程。

参考答案:

首先,客户端发出DNS 请求翻译IP 地址或主机名。DNS 服务器在收到客户机的请求后:

(1)检查DNS 服务器的缓存,若查到请求的地址或名字,即向客户机发出应答信息;

(2)若没有查到,则在数据库中查找,若查到请求的地址或名字,即向客户机发出应答信息;

(3)若没有查到,则将请求发给根域DNS 服务器,并依序从根域查找顶级域,由顶级查找二级域,二级域查找三级,直至找到要解析的地址或名字,即向客户机所在网络的DNS服务器发出应答信息,DNS 服务器收到应答后现在缓存中存储,然后,将解析结果发给客户机。

(4)若没有找到,则返回错误信息。

4.系统管理员的职责包括那些?管理的对象是什么?

参考答案:

系统管理员的职责是进行系统资源管理、设备管理、系统性能管理、安全管理和系统性能监测。管理的对象是服务器、用户、服务器的进程及系统的各种资源等。

5.简述安装Slackware Linux 系统的过程。

参考答案:

(1)对硬盘重新分区。 (2)启动Linux 系统(用光盘、软盘等)。

(3)建立Linux 主分区和交换分区。(4)用setup 命令安装Linux 系统。

(5)格式化Linux 主分区和交换分区(6)安装Linux 软件包

(7)安装完毕,建立从硬盘启动Linux 系统的LILO 启动程序,或者制作一张启动Linux系统的软盘。重新启动Linux 系统。

6.什么是静态路由,其特点是什么?什么是动态路由,其特点是什么?

参考答案:

静态路由是由系统管理员设计与构建的路由表规定的路由。适用于网关数量有限的场合,且网络拓朴结构不经常变化的网络。其缺点是不能动态地适用网络状况的变化,当网络状况变化后必须由网络管理员修改路由表。动态路由是由路由选择协议而动态构建的,路由协议之间通过交换各自所拥有的路由信息实时更新路由表的内容。动态路由可以自动 学习 网络的拓朴结构,并更新路由表。其缺点是路由广播更新信息将占据大量的网络带宽。

7.进程的查看和调度分别使用什么命令?

参考答案:

进程查看的命令是ps 和top。

进程调度的命令有at,crontab,batch,kill。

8.当文件系统受到破坏时,如何检查和修复系统?

参考答案:

成功修复文件系统的前提是要有两个以上的主文件系统,并保证在修复之前首先卸载将被修复的文件系统。

使用命令fsck 对受到破坏的文件系统进行修复。fsck 检查文件系统分为5 步,每一步检查系统不同部分的连接特性并对上一步进行验证和修改。在执行 fsck 命令时,检查首先从超级块开始,然后是分配的磁盘块、路径名、目录的连接性、链接数目以及空闲块链表、i-node。

9.解释i 节点在文件系统中的作用。

参考答案:

在linux 文件系统中,是以块为单位存储信息的,为了找到某一个文件在存储空间中存放的位置,用i 节点对一个文件进行索引。I节点包含了描述一个文件所必须的全部信息。所以i 节点是文件系统管理的一个数据结构。

10.什么是符号链接,什么是硬链接?符号链接与硬链接的区别是什么?

参考答案:

链接分硬链接和符号链接。

符号链接可以建立对于文件和目录的链接。符号链接可以跨文件系统,即可以跨磁盘分区。符号链接的文件类型位是l,链接文件具有新的i 节点。硬链接不可以跨文件系统。它只能建立对文件的链接,硬链接的文件类型位是-,且硬链接文件的i 节点同被链接文件的i 节点相同。

11.在对linux 系统分区进行格式化时需要对磁盘簇(或i 节点密度)的大小进行选择,请说明选择的原则。

参考答案:

磁盘簇(或i 节点密度)是文件系统调度文件的基本单元。磁盘簇的大小,直接影响系统调度磁盘空间效率。当磁盘分区较大时,磁盘簇也应选得大些;当分区较小时,磁盘簇应选得小些。通常使用经验值。

12.简述网络文件系统NFS,并说明其作用。

参考答案:

网络文件系统是应用层的一种应用服务,它主要应用于Linux 和Linux 系统、Linux 和Unix系统之间的文件或目录的共享。对于用户而言可以通过 NFS 方便的访问远地的文件系统,使之成为本地文件系统的一部分。采用NFS 之后省去了登录的过程,方便了用户访问系统资源。

13.某/etc/fstab 文件中的某行如下:

/dev/had5 /mnt/dosdata msdos defaults,usrquota 1 2

请解释其含义。

参考答案:

(1)第一列:将被加载的文件系统名;(2)第二列:该文件系统的安装点;

(3)第三列:文件系统的类型;(4)第四列:设置参数;

(5)第五列:供备份程序确定上次备份距现在的天数;

(6)第六列:在系统引导时检测文件系统的顺序。

14.Apache 服务器的配置文件httpd.conf 中有很多内容,请解释如下配置项:

(1)MaxKeepAliveRequests 200 (2)UserDir public_html

(3)DefaultType text/plain (4)AddLanguare en.en

(5)DocumentRoot―/usr/local/httpd/htdocs‖

(6)AddType application/x-httpd-PHP.php.php.php4

参考答案:

(1)允许每次连接的最大请求数目,此为200;(2)设定用户放置网页的目录;

(3)设置服务器对于不认识的文件类型的预设格式;

(4)设置可传送语言的文件给浏览器;(5)该目录为Apache 放置网页的地方;

(6)服务器选择使用php4。

15.某Linux 主机的/etc/rc.d/rc.inet1 文件中有如下语句,请修正错误,并解释其内容。

/etc/rc.d/rc.inet1:

……

ROUTE add –net default gw 192.168.0.101 netmask 255.255.0.0 metric 1

ROUTE add –net 192.168.1.0 gw 192.168.0.250 netmask 255.255.0.0 metric 1

参考答案:

修正错误:

(1)ROUTE 应改为小写:route;(2)netmask 255.255.0.0 应改为:netmask255.255.255.0;

(3)缺省路由的子网掩码应改为:netmask 0.0.0.0;

(4)缺省路由必须在最后设定,否则其后的路由将无效。

解释内容:

(1)route:建立静态路由表的命令;(2)add:增加一条新路由;

(3)-net 192.168.1.0:到达一个目标网络的网络地址;

(4)default:建立一条缺省路由;(5)gw 192.168.0.101:网关地址;

(6)metric 1:到达目标网络经过的 路由器 数(跳数)。

16.试解释apache 服务器以下配置的含义:

(1)port 1080 (2)UserDir userdoc

(3)DocumentRoot ―/home/htdocs‖

(4);

Options Indexes FollowSymLinks

AllowOverride None

Order deny,allow

deny from all

allow from 192.168.1.5

;

(5)Server Type Standlone

参考答案:

Apache 服务器配置行含义如下:

(1)将apache 服务器的端口号设定为1080;

(2)设定用户网页目录为userdoc;

(3)设定apache 服务器的网页根目录:/home/htdocs;

(4)在此apache 服务器上设定一个目录/home/htdocs/inside,且此目录只允许IP 地

址为192.168.1.5 的主机访问;

(5)定义apache 服务器以独立进程的方式运行。

17.简述使用ftp 进行文件传输时的两种登录方式?它们的区别是什么?常用的ftp 文件传输命令是什么?

参考答案:

(1)ftp 有两种登录方式:匿名登录和授权登录。使用匿名登录时,用户名为:anonymous,密码为:任何合法email 地址;使用授权登录时,用户名为用户在远程系统中的用户帐号,密码为用户在远程系统中的用户密码。

区别:使用匿名登录只能访问ftp 目录下的资源,默认配置下只能下载;而授权登录访问的权限大于匿名登录,且上载、下载均可。

(2)ftp 文件传输有两种文件传输模式:ASCII 模式和binary 模式。ASCII 模式用来传输文本文件,其他文件的传输使用binary模式。

(3)常用的ftp 文件传输命令为:bin、asc、put、get、mput、mget、prompt、bye

  1. 将内网 192.168.0.0/24 的原地址修改为 公网IP地址:1.1.1.1

[root@xuegod63 ~]# iptables -t nat -A POSTROUTING -s 192.168.0.0/24 -j SNAT --to 1.1.1.1

把从 eth0 进来的要访问 TCP/80 的数据包目的地址改为 192.168.0.1.

[root@xuegod63 ~]# iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j DNAT --to 192.168.0.1

19.简述raid0 raid1 raid5 三种工作模式的工作原理及特点。

RAID 0:连续以位或字节为单位分割数据,并行读/写于多个磁盘上,因此具有很高的数据传输率,但它没有数据冗余,因此并不能算是真正的RAID 结构。RAID 0 只是单纯地提高性能,并没有为数据的可靠性提供保证,而且其中的一个磁盘失效将影响到所有数据。因此,RAID 0 不能应用于数据安全性要求高的场合。

RAID 1:它是通过磁盘数据镜像实现数据冗余,在成对的独立磁盘上产生互为备份的数据。当原始数据繁忙时,可直接从镜像拷贝中读取数据,因此RAID 1 可以提高读取性能。RAID1 是磁盘阵列中单位成本最高的,但提供了很高的数据安全性和可用性。当一个磁盘失效时,系统可以自动切换到镜像磁盘上读写 ,而不需要重组失效的数据。简单来说就是:镜象结构,类似于备份模式,一个数据被复制到两块硬盘上。

RAID10:高可靠性与高效磁盘结构一个带区结构加一个镜象结构,因为两种结构各有优缺点,因此可以相互补充。主要用于容量不大,但要求速度和差错控制的数据库中。

RAID5:分布式奇偶校验的独立磁盘结构,它的奇偶校验码存在于所有磁盘上,任何一个硬盘损坏,都可以根据其它硬盘上的校验位来重建损坏的数据。支持一块盘掉线后仍然正常运行

20.如何查看占用端口8080 的进程

lsof -i:8080

21.请写出apache2.X 版本的两种工作模式,以及各自工作原理。如何查看apache 当前

所支持的模块,并且查看是工作在哪种模式下?

答案:prefork(多进程,每个进程产生子进程)和worker(多线程,每个进程生成多个线程)

prefork 的工作原理是,控制进程在最初建立―StartServers 个子进程后,为了满足MinSpareServers 设置的需要创建一个进程,等待一秒钟,继续创建两个,再等待一秒钟,继续创建四个……如此按指数级增加创建的进程数,最多达到每秒32 个,直到满足MinSpareServers 设置的值为止。这就是预派生(prefork)的由来。这种模式可以不必在请求到来时再产生新的进程,从而减小了系统开销以增加性能。

worker 是2.0 版中全新的支持多线程和多进程混合模型的MPM。由于使用线程来处理,所以可以处理相对海量的请求,而系统资源的开销要小于基于进程的服务器。但是,worker 也使用了多进程,每个进程又生成多个线程,以获得基于进程服务器的稳定性。这种MPM 的工作方式将是Apache 2.0 的发展趋势。

可以通过命令httpd -l 可以查看apache 当前的模块,如果带有worker.c 就是工作在worker 模式下,如果有prefork.c 就是工作在prefork.c 的模式下。

22.你使用过监控软件吗?说说其特点

使用nagios 对服务器进行监控,其特点可实时实现手机短信、电子邮件、MSN、飞信报警。

使用cacti 对流量进行监控。

23.你对现在运维工程师的理解和以及对其工作的认识

运维工程师在公司当中责任重大,需要保证时刻为公司及客户提供最高、最快、最稳定、最安全的服务.运维工程师的一个小小的失误,很有可能会对公司及客户造成重大损失,因此运维工程师的工作需要严谨及富有创新精神。

24.linux 下常用的DNS服务软件是什么,举出几种常用的DNS记录,如果域名abc.com配置好了一台邮件服务器,IP 地址为202.106.0.20,我该如何做相关的解析?是否了解bind 的智能解析,如果了解请简述一下其原理

答案:

1)常用的DNS 软件是bind

2)A 记录 地址记录

MX 记录 邮件交换记录

CNAME 记录 别名域记录

3)修改abc.com 域名的配置文件,增加以下记录

IN MX 10 mail.abc.com.

mail IN A 202.106.0.20

4)bind 根据请求解析客户端的IP 地址,做出不同的解析,其原理是在配置文件中,设定了view,在每个view 都有客户端的IP 地址段,bind 服务器根据请求解析客户端的IP 地址,匹配不同的view,再根据该view 的配置,到相应的配置文件进行查询,将结果返回给请求的客户端。

25.通过apache 访问日志access.log 统计IP 和每个地址访问的次数,按访问量列出前10 名。日志格式样例如下

192.168.1.247 – - [02/Jul/2010:23:44:59 +0800] ―GET / HTTP/1.1″ 200 19

答案:

[root@xuegod63 ~]# service httpd restar

[root@xuegod63 ~]# curl http://192.168.1.63 #自己产生一些日志

[root@xuegod63 ~]# cat /var/log/httpd/access_log | awk '{ print $1 }' | uniq -c|sort -rn|head -10

//这个别的方法也能统计,但有些命令是必要的 awk , sort,uniq ,主要看是否这些命令都使用了。

26.如何用MySQL 命令进行备份和恢复?以test 库为例,创建一个备份,并再用此备份进行恢复。

[root@xuegod63 ~]# yum install -y mysql-server

[root@xuegod63 ~]# service mysqld start

[root@xuegod63 ~]# mysqldump -u root -p test > test.sql

//主要考对方msqldump > test.sql 和 mysql < test.sql

27.你认为在系统调优方面都包括哪些工作,以linux 为例,请简明阐述,并举一些参数为例。

答案:

系统调优包括内核参数优化和应用优化2 个方面,对方只要从这两方面来说,就可以了,尽量能有些经验的阐述。

28.挂载windows 的共享目录?

mount.cifs //IP/SHARE linux 的目录 --verbose -o user=username <--这个用户是windows 下的用户--verbose 这个参数可以不加,它是显示过程的

例如mount.cifs //10.1.1.246/gongxiang /mnt --verbose -o user=gao

或者是mount -t cifs

umount /mnt 或umount.cifs /mnt -l <--取消挂载

图形界面:smb://IP

29.A B 网络是通的,最少列出五种传输文件的服务

nfs ,ftp,scp ,rsync,samba,http://

30.假设Apache 产生的日志文件名为access_log,在apache 正在运行时,执行命令mv

access_log access_log.bak,执行完后,请问新的apache 的日志会打印到哪里,为什么?

新的日志会打印在access_log.bak 中,因为apache 启动时会找到access_log 文件,随时准备向文件中加入日志信息,虽然此时文件被改名,但是由于服务正在运行,因为它的inode 节点的位置没有变,程序打开的fd 仍然会指向原来那个inode,不会因为文件名的改变而改变。apache 会继续向已改名的文件中追加日志,但是若重启apache 服务,系统会检查access_log文件是否存在,若不存在则创建。

31.如何查看当前Linux 系统的状态,如CPU 使用,内存使用,负载情况等.

Linux 系统中―/proc‖是个伪文件目录,不占用系统空间,及时的反应出内存现在使用的进程情况......其中许多文件都保存系统运行状态和相关信息对于―/proc‖中文件可使用文件查看命令浏览其内容,文件中包含系统特定信息:

cpuinfo 主机CPU 信息

filesystems 文件系统信息

meninfo 主机内存信息

version Linux 内存版本信息

diskstatus 磁盘负载情况

另外top 命令可以动态的显示当前系统进程用户的使用情况,而且是动态的显示出来,尤其是在该命令显示出来的对上方对系统的情况进行汇总.

free 命令呢可以查看真实使用的内存 一般用free -m

使用lsof 、ps -aux 可以查看详细的每个进程的使用状况

dmesg 也是常用来查看系统性能的命令

32.比如, ext2 文件系统, 如果异常死机,开机如何修复文件系统?

如果异常关机,比如断电,通知机房的人开机之后,我们需要远程修复、检查文件系统除了/分区之外, 其他的分区:

umount /home

fsck -y /home

/ 分区需要开机之后, 由机房的人来扫描随后我们再登录并扫描/home 等其他分区如何查看一个进程所使用的文件句柄?看这里面 /proc/进程号/fd/的个数就行了

33.简单的比如如何查看apache 进程数

[root@localhost fd]# ps -ef|grep httpd|wc -l

1

34./proc/sys 子目录的作用

该子目录的作用是报告各种不同的内核参数,并让您能交互地更改其中的某些。与 /proc中所有其他文件不同,该目录中的某些文件可以写入,不过这仅针对 root。其中的目录以及文件的详细列表将占据过多的篇幅,而且该目录的内容是依赖于系统的,而大部分的文件也仅仅对某些特殊的应用程序有用。然而,以下是该子目录的两个最常见的用途:

允许路由:即便是 Mandrakelinux 默认的内核也是允许路由的,您必需显式允许它这么做。为此,您只要以 root 身份键入以下命令:$ echo 1 >/proc/sys/net/ipv4/ip_forward如果您要禁用路由,请将上述命令中的 1 改为 0。

阻止 IP 欺骗:IP 欺骗会让人认为某个来自于外部的某个数据包是来自于它到达的那个接口。这一技术常被骇客(cracker)所使用。您可以让内核阻止这种入侵。请键入:$ echo 1 >/proc/sys/net/ipv4/conf/all/rp_filter这样,这种攻击就不再可能了。这些改变仅当系统运行时有效。在系统重新启动之后,它们会改会它们的默认值。要在启动时就改动这些值,您可以将您在 shell 提示符后键入的命令添加到 /etc/rc.d/rc.local 中以免每次都键入它们。另一个方法是修改/etc/sysctl.conf

35.实现字符串翻转

[root@localhost bin]# cat 8

qweqewqedadaddas

[root@localhost bin]# rev 8

saddadadeqweqewq

########################################第2 次电面

36.sed awk grep 哪个最好

我答的是 哪个掌握的精通,都很好,但是还是问我哪个最好,我只能说awk 了,对于行操作和列操作都可以操作的很好。

37.grep -E -P 是什么意思

我说的是-E, --extended-regexp 采用规则表示式去解释样式。 -P 不太清楚

38.简述Apache 两种工作模式,以及它们之间的区别。

答案:最主要的两种模式是prefork 模式与worker 模式。prefork 每个子进程只有一个线程,效率高但消耗内存大,是unix 下默认的模式;worker 模式每个子进程有多个线程,内存消耗低,但一个线程崩溃会牵连其它同子进程的线程。

39.用iptables 添加一个规则允许192.168.0.123 访问本机3306 端口

iptables -I INPUT 1 -p tcp -m tcp --dport 3306 -s 192.168.0.123 -j ACCEPT

40.个人对该工作的未来如何规划,需要加强哪些能力。

首先,我有一颗真诚的心,遇事沉着冷静,不急不躁;其次,我有相应的专业知识和工作经验。一年多的系统管理经历锻炼了我在这个行业的业务能力,并对行业前景和发展动态有相应的了解;最后,我会用踏实的作风在今后的工作中证明我自己的能力!

41.日常监控都需要监控哪些?

1)硬件:

CPU:/proc/cpuinfo

内存:/proc/meminfo

硬盘:fdisk -l

2)系统:

负载:/proc/loadavg

uptime 查看实时load average、swap

虚拟内存:vmstat(参数-s;2 4)

SUID,用户,进程

系统日志:tail -f /var/log/messages

logwatch --print --range Today --service SSHD --service pam_unix

3)网络:Host_Alive,Ping,端口,连接

42.如何将本地80 端口的请求转发到8080 端口,当前主机IP 为192.168.16.1,其中本地

网卡eth0:

答:

iptables -t nat -A PREROUTING -d 192.168.16.1 -p tcp --dport 80 -j DNAT --to

192.168.16.1:8080

或者:

iptables -t nat -A PREROUTING -i eth0 -d 192.168.16.1 -p tcp -m tcp --dport

80 -j REDIRECT --to-ports 8080

43.什么是NAT,常见分为那几种,DNAT 与SNAT 有什么不同,应用事例有那些?

NAT(网络地址转换)是将IP 数据包头中的IP 地址转换为另一个IP 地址的过程。在实际应用中,NAT 主要用于实现私有网络访问公共网络的功能。

常见的有:DNAT 目的网络地址转换,SNAT源网络地址转换

从定义来讲它们一个是源地址转换,一个是目标地址转换。

44.包过滤防火墙与代理应用防火墙有什么区别,能列举几种相应的产品吗?

包过滤防火墙工作在网络协议IP层,它只对IP包的源地址、目标地址及相应端口进行处理,因此速度比较快,能够处理的并发连接比较多,缺点是对应用层的攻击无能为力。
代理服务器防火墙将收到的IP包还原成高层协议的通讯数据,比如http连接信息,因此能够对基于高层协议的攻击进行拦截。缺点是处理速度比较慢,能够处理的并发数比较少。

代理应用防火墙:天融信GFW4000

包过滤防火墙:华为 NE 16E

45.iptables 是否支持time 时间控制用户行为,如有请写出具体操作步骤

支持。需要增加相关支持的内核补丁,并且要重新编译内核。

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

打开crontab -e

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

46.说出你知道的几种linux/unix 发行版本

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

47.列出linux 常见打包工具并写相应解压缩参数(至少三种)

Tar gz bz

48.计划每星期天早8 点服务器定时重启,如何实现?

Crontab -e

00 08 * * 7 /sbin/init 6

49.列出作为完整邮件系统的软件,至少二类

Sendmail,postfix,qmail

50.当用户在浏览器当中输入一个网g 站,说说计算机对dns 解释经过那些流程?注:本机跟本地dns 还没有缓存。

答: a.用户输入网址到浏览器

b.浏览器发出DNS 请求信息

c.计算机首先查询本机HOST 文件,看是否存在,存在直接返回结果,不存在,继续下一步

d.计算机按照本地DNS 的顺序,向合法dns 服务器查询IP 结果,

e.合法dns 返回dns 结果给本地dns,本地dns 并缓存本结果,直到TTL 过期,才再次查询此结果

f.返回IP 结果给浏览器

g.浏览器根据IP 信息,获取页面

51.我们都知道,dns 既采用了tcp 协议,又采用了udp 协议,什么时候采用tcp 协议?什么时候采用udp 协议?为什么要这么设计?

答:这个题需要理解的东西比较的多,分一下几个方面

a,从数据包大小上分:UDP 的最大包长度是65507 个字节, 响应dns 查询的时候数据包长度超过512 个字节,而返回的只要前512 个字节,这时名字解释器通常使用TCP 从发原来的请求。

b,从协议本身来分:大部分的情况下使用UDP 协议,大家都知道UDP 协议是一种不可靠的协议,dns 不像其它的使用UDP 的Internet 应用 (如:TFTP,BOOTP 和SNMP 等),大部分集中在局域网,dns 查询和响应需要经过广域网,分组丢失和往返时间的不确定性在广域网比局域网上更大,这就要求dns 客户端需要好的重传和超时算法,这时候使用TCP

52.一个EXT3 的文件分区,当使用touch test.file 命令创建一个新文件时报错,报错的信息是提示磁盘已满,但是采用df -h 命令查看磁盘大小时,只使用了,60%的磁盘空间,为什么会出现这个情况,说说你的理由。

答:两种情况,一种是磁盘配额问题,另外一种就是EXT3 文件系统的设计不适合很多小文件跟大文件的一种文件格式,出现很多小文件时,容易导致inode 耗尽了

53.我们都知道FTP 协议有两种工作模式,说说它们的大概的一个工作流程?

FTP 两种工作模式:主动模式(Active FTP)和被动模式(Passive FTP)

在主动模式下,FTP 客户端随机开启一个大于1024 的端口N 向服务器的21 号端口发起连接,然后开放N+1 号端口进行监听,并向服务器发出PORT N+1 命令。服务器接收到命令后,会用其本地的FTP 数据端口(通常是20)来连接客户端指定的端口N+1,进行数据传输。在被动模式下,FTP 客户端随机开启一个大于1024 的端口N 向服务器的21 号端口发起连接,同时会开启N+1 号端口。然后向服务器发送PASV 命令,通知服务器自己处于被动模式。服务器收到命令后,会开放一个大于1024 的端口P 进行监听,然后用PORT P 命令通知客户端,自己的数据端口是P。客户端收到命令后,会通过N+1 号端口连接服务器的端口P,然后在两个端口之间进行数据传输。总的来说,主动模式的FTP 是指服务器主动连接客户端的数据端口,被动模式的FTP 是指服务器被动地等待客户端连接自己的数据端口。被动模式的FTP 通常用在处于防火墙之后的FTP 客户访问外界FTp 服务器的情况,因为在这种情况下,防火墙通常配置为不允许外界访问防火墙之后主机,而只允许由防火墙之后的主机发起的连接请求通过。因此,在这种情况下不能使用主动模式的FTP 传输,而被动模式的FTP 可以良好的工作。

54.apache 有几种工作模式,分别介绍下其特点,并说明什么情况下采用不同的工作模式?

apache 主要有两种工作模式:prefork(apache 的默认安装模式)和worker(可以在编译的时候加参数--with-mpm-worker 选择工作模式)

prefork 的特点是:(预派生)

1.这种模式可以不必在请求到来时再产生新的进程,从而减小了系统开销

2.可以防止意外的内存泄漏

3.在服务器负载下降的时候会自动减少子进程数

worker 的特点是:支持混合的多线程多进程的多路处理模块如果对于一个高流量的HTTP 服务器worker MPM 是一个比较好的选择,因为workerMPM 占用的内存要比prefork 要小。

55.简述linux 下编译内核的意义与步骤

编译内核的意义在于让硬件设备更稳定的发挥其应有的效能;

56.简述Linux 启动过程

Bios引导--》启动引导工具grub--》核心初始化--》载入初始程序init--》init初始化--》从inittab中读取数据,决定启动级别--》系统运行

57.简述DDOS 攻击的原理

黑客劫持大量傀儡主机,对目标服务器进行合理的资源请求,导致服务器资源耗尽而不能进行正常的服务。

58.简述Tcp 三次握手的过程

第一次握手,建立连接,客户端发送SYN包到服务器,并进入SYN_SEND状态,等待服务器确认;

第二次握手,服务器收到SYN,同时自己也发送一个SYN包和一个ACK包来确认客户端的SYN,并进入SYN_RECV;

第三次握手,客户端收到服务器发来的SYN+ACK后,回复服务器端一个ACK确认,发送完毕后,双方进入ESTABLISHED状态。

三次握手成功后,开始传输数据。

59.简述VPN,常见有哪几种?

VPN是指在公共的网络上建立专用网络的技术,但是两个节点间并没有物理上的专用的端到端链路,而是通过广域网或者运营商提供的网络平台之上的逻辑网络,用户数据在逻辑链路中传输,它可以有效的节省一般需要达到DDN专线所能达到的同样的目的,而且VPN采用身份验证和加密技术,充分保证了安全性。常见的VPN有:ipsec vpn、PPTP vpn、L2TP vpn、SSL vpn

60.请考虑以下系统的设计. 您可以翻阅资料,查询任何您有帮助的资料、指南等。

您有的资源:

8 台安装Linux (2.6 内核) 的双网卡PC 服务器以及相关开源软件,交换机

Apache 2.2.x

Tomcat 5.5.X

数据库系统

最多8 个Internet IP 地址,请您设计一个系统:

1、使用双apache web server 前端;

2、采用AJP 连接后段的3台Tomcat 应用服务器,这些tomcat 被配置成cluster, 因此需要考虑apache 对后端的分配, 分配采用完全平衡的方法; 配置使用cookie 来实现session stickness;

3、1台数据库服务器只有tomcat 才需要连接,也不需要对Internet 提供服务。

4、考虑系统的安全性和维护方便性;

5、通过rewrite 规则配置把下属URL 规则改写成友好的URL

http://server/webapp/getinfo?id=XXXX&name=YYYY –>

http://server/getinfo/YYYY/XXXX

您需要提交

1、服务器规划,包括:

* 网络结构图

* 每台机器的IP 地址分配

* 每台机器上运行的关键软件

* 您从安全性和维护性方面的考虑

2、Apache 的以下配置文件给我们:

* extra/http-proxy-ajp.conf

* extra/http-rewrite.conf

2.你可以采取任何设备和不同操作系统服务器设计对两台WWW服务器和两台FTP 服务器做负载均衡,用网络拓扑图表示并加以说明!(方法越多越好)

第一种方法: DNS 轮巡

www1 IN A 192.168.1.1

www2 IN A 192.168.1.2

www3 IN A 192.168.1.3

ftp1 IN A 192.1.1.4

ftp2 IN A 192.1.1.5

ftp3 IN A 192.1.1.6

www IN CNAME www1

www IN CNAME www2

www IN CNAME www3

ftp IN CNAME ftp1

ftp IN CNAME ftp2

ftp IN CNAME ftp3

四、编程与应用题

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

参考程序:

!/bin/sh

FILENAME=

echo ―Input file name:‖

read FILENAME

if [ -c "$FILENAME" ]

then

cp $FILENAME /dev

fi

2.请下列shell 程序加注释,并说明程序的功能和调用方法:#!/bin/sh

!/bin/sh

/etc/rc.d/rc.httpd

Start/stop/restart the Apache web server.

To make Apache start automatically at boot, make this

file executable: chmod 755 /etc/rc.d/rc.httpd

case "$1" in

'start')

/usr/sbin/apachectl start ;;

'stop')

/usr/sbin/apachectl stop ;;

'restart')

/usr/sbin/apachectl restart ;;

*)

echo "usage $0 start|stop|restart" ;;

esac

参考答案:

(1)程序注释

!/bin/sh 定义实用的shell

/etc/rc.d/rc.httpd 注释行,凡是以星号开始的行均为注释行。

Start/stop/restart the Apache web server.

To make Apache start automatically at boot, make this
file executable: chmod 755 /etc/rc.d/rc.httpd

case "$1" in #case 结构开始,判断―位置参数‖决定执行的操作。本程序携带一个―位置参数‖,即$1

'start') #若位置参数为start

/usr/sbin/apachectl start ;; #启动httpd 进程

'stop') #若位置参数为stop

/usr/sbin/apachectl stop ;; #关闭httpd 进程

'restart') #若位置参数为stop

/usr/sbin/apachectl restart ;; #重新启动httpd 进程

*) #若位置参数不是start、stop 或restart 时

echo "usage $0 start|stop|restart" ;; #显示命令提示信息:程序的调用方法

esac #case 结构结束

(2)程序的功能是启动,停止或重新启动httpd 进程

(3)程序的调用方式有三种:启动,停止和重新启动。

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

参考答案:

!/bin/sh

i=1

groupadd class1

while [ $i -le 30 ]

do

if [ $i -le 9 ] ;then

USERNAME=stu0${i}

else

USERNAME=stu${i}

fi

useradd $USERNAME

mkdir /home/$USERNAME

chown -R $USERNAME /home/$USERNAME

chgrp -R class1 /home/$USERNAME

i=$(($i+1))

done

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

参考程序:

!/bin/sh

i=1

while [ $i -le 50 ]

do

userdel -r stud${i}

i=$(($i+1 ))

done

5.某系统管理员需每天做一定的重复工作,请按照下列要求,编制一个解决 方案 :

(1)在下午4 :50 删除/abc 目录下的全部子目录和全部文件;

(2)从早8:00~下午6:00 每小时读取/xyz 目录下x1 文件中每行第一个域的全部数据

加入到/backup 目录下的bak01.txt 文件内;

(3)每逢星期一下午5:50 将/data 目录下的所有目录和文件归档并压缩为文件:

backup.tar.gz;

(4)在下午5:55 将IDE 接口的CD-ROM 卸载(假设:CD-ROM 的设备名为hdc);

(5)在早晨8:00 前开机后启动。

参考答案:

解决方案:

(1)用vi 创建编辑一个名为prgx 的crontab 文件;

prgx 文件的内容:

50 16 * * * rm -r /abc/*

(2)、0 8-18/1 * * * cut -f1 /xyz/x1 >;>; /backup/bak01.txt

(3)、50 17 * * * tar zcvf backup.tar.gz /data

(4)、55 17 * * * umount /dev/hdc

(5)、由超级用户登录,用crontab 执行 prgx 文件中的内容:

root@xxx:#crontab prgx;在每日早晨8:00 之前开机后即可自动启动crontab。

6.设计一个shell 程序,在每月第一天备份并压缩/etc 目录的所有内容,存放在/root/bak目录里,且文件名为如下形式yymmdd_etc,yy 为年,mm为月,dd 为日。Shell 程序fileback 存放在/usr/bin 目录下。

参考答案:

(1)编写shell 程序fileback:

!/bin/sh

DIRNAME=ls /root | grep bak

if [ -z "$DIRNAME" ] ; then

mkdir /root/bak

cd /root/bak

fi

YY=date +%y

MM=date +%m

DD=date +%d

BACKETC=$YY$MM$DD_etc.tar.gz

tar zcvf $BACKETC /etc

echo "fileback finished!"

(2)编写任务定时器:

echo "0 0 1 * * /bin/sh /usr/bin/fileback" >; /root/etcbakcron

crontab /root/etcbakcron

或使用crontab -e 命令添加定时任务:

0 1 * * * /bin/sh /usr/bin/fileback

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

参考答案:(1)第一种方法:

用户应使用crontab –e 命令创建crontab 文件。格式如下:

0 0 * * sun cp –r /user/backup /tmp

(2)第二种方法:

用户先在自己目录下新建文件file,文件内容如下:

0 * * sun cp –r /user/backup /tmp

然后执行 crontab file 使生效。

8.设计一个Shell 程序,在/userdata 目录下建立50 个目录,即user1~user50,并设置每个目录的权限,其中其他用户的权限为:读;文件所有者的权限为:读、写、执行;文件所有者所在组的权限为:读、执行。

参考答案: 建立程序 Pro16 如下:

!/bin/sh

i=1

while [ i -le 50 ]

do

if [ -d /userdata ];then

mkdir -p -m 754 /userdata/user$i 加上-m 754 就不用写下面那一句了 -p 是递归建

立目录

chmod 754 /userdata/user$i

echo "user$i"

let "i = i + 1" (或i=$(($i+1))

else

mkdir /userdata

mkdir -p -m /userdata/user$i

chmod 754 /userdata/user$i

echo "user$i"

let "i = i + 1" (或i=$(($i+1))

fi

done

9.有文件file

[root@xuegod63 ~]# cat file #file中内容如下:

aaaaaa

bbbbbbbb

cccccccabc

查询file里面空行的所在行号

awk '{if($0~/^$/)print NR}' file

or

grep -n ^$ file |awk 'BEGIN{FS=":"}{print $1}'

查询file1 以abc 结尾的行

grep abc$ file1

打印出file1 文件第1 到第3 行

sed -n '1,3p' file

head -3 file

10.编写个shell 脚本将/boot/grub/目录下大于100K 的文件转移到/opt 目录下

[root@xuegod63 ~]# cat test.sh

!/bin/bash

cd /boot/grub

for file in ls /boot/grub

for file in ls /boot/grub

do

if [ -f $file ]; then

if [ ls -l $file|awk '{print $5}' -gt 10000 ]; then

mv $file /opt/

fi

fi

done

11.有个文件如下:

http://a.domain.com/1.html

http://b.domain.com/1.html

http://c.domain.com/1.html

http://a.domain.com/2.html

http://b.domain.com/2.html

http://a.domain.com/3.html

要求:得到主机名(和域名),并统计哪个网址出现的次数,并排序。可以shell 或C。

得到的结果应该是:

3 a.domain.com

2 b.domain.com

1 c.domain.com

[root@mail ~]# awk ‗BEGIN{FS=‖/‖}{arr[$3]++}END{for(i in arr) print

arr[i],i}‘ list| sort -r 答案

3 a.domain.com

2 b.domain.com

1 c.domain.com

12.如果得到随机的字串,长度和字串中出现的字符表可定义,并将字串倒序显示,如把0123456789 作为基准的字串字符表,产生一个6位的字串642031,打印出的字串为130246,可使用bash/perl/php/c 任意一种.

[root@localhost ~]# awk -v count=6 'BEGIN

{srand();str="0123456789";len=length(str);for(i=count;i>0;i--)

marry[i]=substr(str,int(rand()*len),1);for(i=count;i>0;i--)

printf("%c",marry[i]);printf("\n");for

(i=0;i<=count;i++) printf("%c",marry[i]);printf("\n")}'

838705

507838

13.有10 台被监控主机、一台监控机,在监控机上编写脚本,一旦某台被监控机器/分区适用率大于80%, 就发邮件报警放到crontab 里面, 每10 分钟检查一次

测试机器:虚拟机Linux as 4

1.首先建立服务器间的信任关系。拿两台机器做测试

本机ip:192.168.1.6

[root@codfei ~]# ssh-keygen -t rsa

Generating public/private rsa key pair.

Enter file in which to save the key (/root/.ssh/id_rsa):

/root/.ssh/id_rsa already exists.

Overwrite (y/n)? y (以为我是第2 次建立关系所以此处覆盖原来的文件)

Enter passphrase (empty for no passphrase):(直接回车无须输入密钥)

Enter same passphrase again:

Your identification has been saved in /root/.ssh/id_rsa.

Your public key has been saved in /root/.ssh/id_rsa.pub.

The key fingerprint is:

04:37:13:2a:4b:10:af:c1:2b:03:3f:6b:27:ce:b9:62 root@codfei

[root@codfei ~]# cd .ssh/

[root@codfei .ssh]# ll

-rw------- 1 root root 883 Apr 25 17:51 id_rsa

-rw-r--r-- 1 root root 221 Apr 25 17:51 id_rsa.pub

-rw-r--r-- 1 root root 442 Apr 25 17:37 known_hosts

id_rsa 是密钥文件,id_rsa.pub 是公钥文件。

[root@codfei .ssh]# scp id_rsa.pub192.168.1.4:/root/.ssh/192.168.1.6

root@192.168.1.4's password:

id_rsa.pub 100% 221 0.2KB/s 00:00

这里把公钥文件取名为本机的ip 地址就是为了以后和更多的机器建立信任关系不发生混淆。

现在登陆到192.168.1.4 机器

[root@codfei ~]# cd .ssh/

[root@codfei .ssh]# cat 192.168.1.6 >> authorized_keys

然后回到192.168.1.6 机器直接

[root@codfei .ssh]# ssh 192.168.1.4

Last login: Wed Aug 8 12:14:42 2007 from 192.168.1.6

这样就可以了,里面偶尔涉及到权限问题。一般./ssh 文件夹是755 authorized_keys 为600 或者644

脚本如下#######################

!/bin/bash

SCRIPT:df_check.sh

Writeen by codfei Mon Sep 3 07:25:28 CST 2007

PURPOSE:This script is used to monitor for full filesystems.

#######################Begining####################

####################

FSMAX="80"

remote_user='root' #####完全可以不用root

remote_ip=(192.168.1.5 192.168.1.6 192.168.1.7 192.168.1.8 192.168.1.9

192.168.1.10 192.168.1.11 192.168.1.12 192.168.1.13 192.168.1.14 ) ---->

这里填写你要监控的主机ip

ip_num='0'

while [ "$ip_num" -le "$(expr ${#remote_ip[@]} - 1)" ]

do

read_num='1'

ssh "$remote_user"@"${remote_ip[$ip_num]}" df -h > /tmp/diskcheck_tmp

grep '^/dev/*' /tmp/diskcheck_tmp|awk '{print $5}'|sed 's/%//g' >

/tmp/diskcheck_num_tmp

while [ "$read_num" -le $(wc -l < /tmp/diskcheck_num_tmp) ]

do

size=$(sed -n "$read_num"'p' /tmp/diskcheck_num_tmp)

if [ "$size" -gt "$FSMAX" ]

then

$(grep '^/dev/*' /tmp/diskcheck_tmp|sed -n $read_num'p' >

/tmp/disk_check_mail)

$(echo ${remote_ip[$ip_num]} >> /tmp/disk_check_mail)

$(mail -s "diskcheck_alert" admin < /tmp/disk_check_mail)

fi

read_num=$(expr $read_num + 1)

done

ip_num=$(expr $ip_num + 1)

done

#############over################################

################让脚本每十分钟执行一次#############

在cron 表中加入

0/10 * * * * /home/codfei/diskcheck.sh 2>&1

################################################

##########################

14.如何统计apache 的每秒访问数?

tail access_log | awk '{print $1,$4}'

[root@localhost logs]# grep -c date -d '3 second ago' +%T access_log

0

15.将一个文本的奇数行和偶数行合并,第2 行和第3 行合并

[root@localhost bin]# cat 1

48 Oct 3bc1997 lpas 68.00 lvx2a 138

484 Jan 380sdf1 usp 78.00 deiv 344

483 nov 7pl1998 usp 37.00 kvm9d 644

320 aug der9393 psh 83.00 wiel 293

231 jul sdf9dsf sdfs 99.00 werl 223

230 nov 19dfd9d abd 87.00 sdiv 230

219 sept 5ap1996 usp 65.00 lvx2c 189

216 Sept 3zl1998 usp 86.00 kvm9e 234

[root@localhost bin]# sed '$!N;s/\n/ /g' 1

48 Oct 3bc1997 lpas 68.00 lvx2a 138 484 Jan 380sdf1 usp 78.00 deiv 344

483 nov 7pl1998 usp 37.00 kvm9d 644 320 aug der9393 psh 83.00 wiel 293

231 jul sdf9dsf sdfs 99.00 werl 223 230 nov 19dfd9d abd 87.00 sdiv 230

219 sept 5ap1996 usp 65.00 lvx2c 189 216 Sept 3zl1998 usp 86.00 kvm9e 234

[root@localhost bin]# sed -n -e 2p -e 3p 1|sed '$!N;s/\n/ /'

484 Jan 380sdf1 usp 78.00 deiv 344 483 nov 7pl1998 usp 37.00 kvm9d 644

16.自动ftp 上传

!/bin/sh

ftp -n<<END_FTP

open 192.168.1.4

user codfei duibuqi //用户名codfei 密码duibuqi

binary

prompt off //关闭提示

mput test //上传test

close

bye

END_FTP

自动ssh 登陆 从A 到B 然后再到c

!/usr/bin/expect -f

set timeout 30

spawn ssh codfei@B

expect "password:"

send "pppppp\r"

expect "]*"

send "ssh codfei@C\r"

expect "password:"

send "pppppp\r"

interact

17.从a.log 文件中提取包含―WARNING或FATAL,同时不包含―IGNOR的行,然后,提取以―:分割的第五个字段?

egrep 'WARNING|FATAL' a.log|grep -v'IGNOR'|awk -F: '{print$5}'egrep 'WARNING|FATAL' a.log|grep -v'IGNOR'|awk -F: '{print$5}'

18.添加一个新组为class01,然后,添加属于这个组的30 个用户,用户名的形式为stdXX,其中,XX 从01 到30?

!/bin/bash

groupadd class1

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

do

if [ $i -lt 10 ];then

username="std0"$i

else

username="std"$i

fi

useradd -G class1 $username

done#!/bin/bash
groupadd class1
for ((i=1;i<=30;i++))
do
if [ $i -lt 10 ];then
username="std0"$i
else
username="std"$i
fi
useradd -G class1 $username
done

19.在每个月的第一天备份并压缩/etc 目录下的所有内容,存放在/root/backup 目录里,且文件名为如下形式yymmdd_etc,yy为年,mm为月,dd 为日。shell 程序fileback存放在/usr/bin 目录下?

crottab -e

00 1 1 * * /usr/bin/fileback

vi /usr/bin/fileback

!/bin/bash

cd /tmp

tar zcvf date +%Y%m%d_etc /etc

mv date +%Y%m%d_etc /root/backup

20.用shell 编程,判断一文件是不是字符设备文件,如果是将其拷贝到/dev 目录下?

参考答案:

!/bin/bash

directory=/dev

for file in anaconda-ks.cfg install.log install.log.syslog

do

if [ -f $file ]

then

cp $file $directory/$file.bak

echo " HI, $LOGNAME $file is backed up already in $directory !!"

fi

done

20.某系统管理员需要每天做一定的重复工作,编制一个解决方案:

(1).从下午4:50 删除/abc 目录下的全部子目录和全部文件;

(2).从早上8:00~下午6:00 每小时读取/xyz 目录下x1 文件中每行第一个域的全部数据加入到/backup 目录下的back01.txt 文件内;

(3).每逢周一下午5:50 将/data 目录下的所有目录和文件归档并压缩为文件backup.tar.gz;

(4).在下午5:55 将IDE 接口的CD-ROM 缷载(假设CD-ROM 的设备名为hdc);

(5).在早上8:00 前开机后启动。

解决方案:

(1)用vi 创建编辑一个名为prgx 的crontab 文件;

prgx 文件的内容:

50 16 * * * rm -r /abc/*

(2)、0 8-18/1 * * * cut -f1 /xyz/x1 >;>; /backup/bak01.txt

(3)、50 17 * * * tar zcvf backup.tar.gz /data

(4)、55 17 * * * umount /dev/hdc

(5)、由超级用户登录,用crontab 执行 prgx 文件中的内容:

root@xxx:#crontab prgx;在每日早晨8:00 之前开机后即可自动启动crontab。

21.使用shell,建立class1 用户组,再批量建立stu1--stu30 的用户,并指定用户组为class1。

vi autoaddusr

!/usr/bin/php -q

  • 补充vim常用快捷方式

dd 删除当前行

G 移动到文章末行

gg移动到文本首行

x 编辑后保存推出,相对于wq!

shift + $ 删除当前位置到行末

shift + G 删除当前位置到文本结束
————————————————

posted @ 2022-03-04 07:58  齐天_大圣  阅读(204)  评论(0编辑  收藏  举报