Linux运维面试题1

标签: 面试

1 管理3百台服务器的方式:

1)设定跳板机,使用统一账号登录,便于安全与登录的考量。
2)使用salt、ansiable、puppet进行系统的统一调度与配置的统一管理。
3)建立简单的服务器的系统、配置、应用的cmdb信息管理。便于查阅每台服务器上的各种信息记录。、配置、应用的cmdb信息管理。便于查阅每台服务器上的各种信

2 说说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的第一层,它虽然处于最底层,却是整个开放系统的基础

物理层为设备之间的数据通信提供传输媒体及互连设备,为数据传输提供可靠的环境

如果您想要用尽量少的词来记住这个第一层,那就是“信号和介质”

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

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

wKioL1lMgrHDCEhfAABceoMZqwY330.png-wh_50

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

wKioL1lMg2vhIvWKAAKkezGi_-4547.png-wh_50

4 Linux系统中病毒怎么解决?

1)最简单有效的方法就是重装系统

2)要查的话就是找到病毒文件然后删除

  中毒之后一般机器cpu、内存使用率会比较高

  机器向外发包等异常情况,排查方法简单介绍下
top 命令找到cpu使用率最高的进程

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

rm -f 命令删除病毒文件

检查计划任务、开机启动项和病毒文件目录有无其他可以文件等

3)由于即使删除病毒文件不排除有潜伏病毒,所以最好是把机器备份数据之后重装一下

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

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

6 什么是运维?什么是游戏运维?

7 简述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级别
LVS、Nginx、HAproxy有什么区别?工作中你怎么选择?
LVS: 是基于四层的转发
HAproxy: 是基于四层和七层的转发,是专业的代理服务器
Nginx: 是WEB服务器,缓存服务器,又是反向代理服务器,可以做七层的转发

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

工作选择:

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

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

常用的Nginx模块,用来做什么

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

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

Nginx
Haproxy
Keepalived
LVS

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。

Tomcat和Resin有什么区别,工作中你怎么选择?

区别:Tomcat用户数多,可参考文档多,Resin用户数少,可考虑文档少
最主要区别则是Tomcat是标准的java容器,不过性能方面比resin的要差一些
但稳定性和java程序的兼容性,应该是比resin的要好

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

什么是中间件?什么是jdk? 

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

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

jdk:jdk是Java的开发工具包

讲述一下Tomcat8005、8009、8080三个端口的含义?

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

什么叫CDN?

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

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

简述DNS进行域名解析的过程?

用户要访问www.baidu.com,会先找本机的host文件,再找本地设置的DNS服务器, 如果也没有的话,就去网络中找根服务器,根服务器反馈结果,说只能提供一级域名服务器.cn,就去找一级域名服务器,一级域名服务器说只能提供二级域名服务器.com.cn,就去找二级域名服务器,二级域服务器只能提供三级域名服务器.baidu.com.cn,就去找三级域名服务器,三级域名服务器正好有这个网站www.baidu.com,然后发给请求的服务器,保存一份之后,再发给客户端
RabbitMQ是什么东西?
RabbitMQ也就是消息队列中间件,消息中间件是在消息的传息过程中保存消息的容器
消息中间件再将消息从它的源中到它的目标中标时充当中间人的作用
队列的主要目的是提供路由并保证消息的传递;如果发送消息时接收者不可用
消息队列不会保留消息,直到可以成功地传递为止,当然,消息队列保存消息也是有期限地
讲一下Keepalived的工作原理?
在一个虚拟路由器中,只有作为MASTER的VRRP路由器会一直发送VRRP通告信息,
BACKUP不会抢占MASTER,除非它的优先级更高。当MASTER不可用时(BACKUP收不到通告信息)
多台BACKUP中优先级最高的这台会被抢占为MASTER。这种抢占是非常快速的(<1s),以保证服务的连续性
由于安全性考虑,VRRP包使用了加密协议进行加密。BACKUP不会发送通告信息,只会接收通告信息

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 #连接间隔时间
}

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

缺点:(不能说缺点,只能说是不足)要求负载均衡器的网卡必须与物理网卡在一个物理段上。
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
如何重置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   [email protected]’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;

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功能,启用之后可以支持单独的表备份
如何优化 Linux系统(可以不说太具体)?
⑴登录系统:不使用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,去除系统及内核版本登陆前的屏幕显示

linux SecureCRT 命令行快捷键命令的功能?

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 —->粘贴

Linux操作系统知识

1.常见的Linux发行版本都有什么?你最擅长哪一个?它的官网网站是什么?说明你擅长哪一块?
答:
常见的Linux发现版本有Redhat、Centos、Debian、Ubuntu、Suse
最擅长Redhat和Centos
Redhat官网:www.redhat.com
Centos官网:www.centos.org
我最擅长Linux基本命令操作及相关服务搭建

2.Linux开机启动流程详细步骤是什么?系统安装完,忘记密码如何**?
答:

开机步骤
a、首先是bios加电自检、初始化,这个过程会检测相关硬件(cpu、内存、显卡、硬盘等)

     然后读取一个启动顺序,以硬盘为例,会读取硬盘中的MBR。
b、加载内核读取/boot里边的配置文件。
c、启动初始化进程,开始运行/sbin/init
d、读取/etc/inittab确定运行级别
e、根据/etc/rc.d/rcN.d加载开机启动程序,rcN.d都是链接文件,都指向/etc/rc.d/init.d再运行/etc/rc.d/rc.local
f、用户登录(3种方式ssh、命令行、图形化)
g、进入loginshell,以命令行为例,首先读取/etc/profile这个全局配置文件

     然后再针对当前用户读取家目录中的 ~/.bash_profile和~/.bash_login和~/.profile
h、最后一步就是打开non-loginshell

     进入图形化后手动新建一个终端,但这个shell不读取/etc/profile

忘记密码
a、重启系统,在GRUB界面,选取忘记密码的系统,按e键进入编辑模式
b、选项Kernel.....按e键进行编辑
c、在编辑界面rhgbquiet后加空格,然后输入"single""1"回车
d、按b启动进入单用户模式
f、进入系统后passwd回车输入新密码(如果有selinux,先暂时关闭setenforce0)

3.企业中Linux服务器系统分区标准是什么?(硬盘为300G,内存16G)
答:
/boot200M
/swap16G
/70G
/data剩下的全部空间

4.某一天突然发现Linux系统文件只读,该怎么办呢?完整操作步骤。
答:
首先把系统关机,然后以光盘启动进入救援模式(linuxrescue)

执行"fsck.ext3-y/dev/sda2"(假如只读的分区类型为ext3,分区为/dev/sda2)

5.安装一台系统使用DVD光盘安装,如何安装50台Linux系统如何安装呢?思考一下。
答:
a、可以多用几张DVD一台一台的安装。
b、可以用Kickstart批量安装(客户端从网络启动)

6.用虚拟机安装了一台Linux系统,突然想克隆一台服务器,克隆后发现无法上网,如何解决?
答:
a、编辑网卡配置文件/etc/sysconfig/network-scripts/ifcfg-eth0,将HWADDR和MAC地址这两行删除。
b、修改文件/etc/udev/rules.d/70-persistent-net.rules,删除之前eth0所在的行,将下一行eth1修改为eth0
c、reboot

7.Linux网卡配置文件路径是什么?要使服务器上外网,必须满足的条件有哪些?需要配置什么?
答:
网卡配置文件路径:/etc/sysconfig/network-scripts/ifcfg-eth*(*代表数字)
要上外网需要:能够链接internet的网线(或无线)、有网卡
需要配置:IP、netmask、gateway、dns(自动或手动都ok,服务器一般自动)

8.一般可以使用什么软件远程linux服务器?通过什么上传文件和下载文件?
答:
远程连接linux的软件:xshell、SecureCRT、putty、vnc(图形化)
上传和下载文件:lrzsz、sftp

9./mnt目录主要用于什么?/root目录跟root用户有什么关系?/根目录与/boot目录有什么联系?
答:
/mnt一般用于挂载外接设备
/root是一个目录,是root用户的家目录
/boot目录是/目录下的一个子目录

10.某一天误操作,执行了rm-rf*,会有哪些情况发生?请举例。
答:
a、如果当前目录为"/tmp",那么这个目录下的东西会全部删除(默认不包含隐藏文件)
b、如果当前目录为"/",那么系统上的数据将会丢失,且无法启动,系统崩溃(谨慎使用这个命令)
Linux命令及文件操作
1.在/tmp/目录下创建test.txt文件,内容为:Hello,World!,用一个命令写出来。
答:
echo "Hello,World!" > /tmp/test.txt

2.给test.txt文件除所有者之外增加执行权限,最终以数字写出文件的权限。
答:
655
默认是644,可以通过"chmod 655 /tmp/test.txt"

3.用vi命令编辑test.txt,如何跳转到末行,首行,行首、行末,如何在光标行下一行插入

   如何复制5行,删除10行,查找jingfeng的字符、把jingfeng替换为jfedu.net
答:
末行:G
首行:gg
行首:^(Shift+6)
行尾:$(Shift+4)
光标下插入一行:o
复制5行:5yy
删除10行:10dd
替换::%s/jingfeng/jfedu.net/g

4.查找linux系统下以txt结尾,30天没有修改的文件大小大于20K同时具有执行权限的文件并备份到/data/backup/目录下。
答:
find / -name *txt -mtime +30 -type f -size +20k -perma= x -exec cp {} /data/backup/\;

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

6.如何修改Linux启动级别为字符模式并永久生效,如何临时、永久关闭selinux及防火墙,请分别写出操作方法。
答:
更改字符模式:修改/etc/inittab一行为id:3:initdefault:
临时关闭selinnuxsetenforce0
临时关闭防火墙iptables-F
永久关闭selinux修改/etc/selinux/config一行为SELINUX=permissive
永久关闭防火墙 iptables -F; /etc/init.d/iptablessave

7.每次开机在/tmp目录下创建一个当天的日期文件夹(提示:当前日期表示的方法为:`date+%Y%m%d`)
答:
echo "mkdir/tmp/ `date+%Y%m%d`" >> /etc/rc.d/rc.local

8.如何查看文件内容,命令有哪些?查看文件第1行到3行,查看文件最后一行。
答:
查看文件内容:vim、cat、head、tail
查看第1到行:head -3 file
查看最后一行:tail -1 file

9.查看linux服务器IP的命令,同时只显示包含ip所在的行打印出来。
答:
以eth0为例
只打印所在的行:ifconfig eth0 | grep "inetaddr:"
只打印ip:ifconfig eth0 | grep "inetaddr:" | awk -F: '{print$2}' | awk -F ' ' '{print$1}'

    http://blog.51cto.com/hujiangtao/1940375

10.将普通用户test加入root组的命令是?
答:
usermod -G root test
描述Linux运行级别0-6的各自含义
0:关机模式

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

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

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

4:保留,未使用

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

6: 重新引导系统,即重启
解释下什么是GPL,GNU,自由软件?
GPL:(通用公共许可证):一种授权,任何人有权取得、修改、重新发布自由软件的权力。

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

自由软件:是一种可以不受限制地自由使用、复制、研究、修改和分发的软件。主要许可证有GPL和BSD许可证两种。
如何选择Linux操作系统版本?
一般来讲,桌面用户首选Ubuntu;服务器首选RHEL或CentOS,两者中首选CentOS。

根据具体要求:

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

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

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

④根据现有状况,绝大多数互联网公司选择CentOS。现在比较常用的是6系列,现在市场占有大概一半左右。另外的原因是CentOS更侧重服务器领域,并且无版权约束。
初学者在Linux系统的开机启动项如何选择?
建议选择五个开机启动项:

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

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

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

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

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

⑥.sysstat: 是一个软件包,包含监测系统性能及效率的一组工具,这些工具对于Linux系统性能数据很有帮助,比如CPU使用率、硬盘和网络吞吐数据等,这些数据的分析,有利于判断系统运行是否正常,所以它是提高系统运行效率、安全运行服务的助手。
描述Linux下软链接和硬链接的区别
在Linux系统中,链接分为两种,一种是硬链接(Hard link),另一种称为符号链接或软链接(Symbolic Link)。

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

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

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

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

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

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

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

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

⑨软链接可以跨文件系统,硬链接不可以跨文件系统。
生产场景如何对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,看容量要求加盘即可。
描述Linux下文件删除的原理
Linux系统是通过link的数量来控制文件删除的,只有当一个文件不存在任何link的时候,这个文件才会被删除。一般来说每个文件两个link计数器来控制i_count和i_nlink。
当一个文件被一个程序占用的时候i_count就加1。
当文件的硬链接多一个的时候i_nlink也加1。
删除一个文件,就是让这个文件,没有进程占用,同时i_link数量为0。
VI编辑器的使用
①vi编辑器是linux系统下最最基本和最常用的标准文本编辑器。

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

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

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

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

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

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 #用户切换工具
简述基础正则表达式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就不需要转义了。
请简述基础正则表达式sed高级参数的使用
n取消默认输出

-p 打印

-d删除

-e允许多项编辑

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

实际字符的选取最好要唯一,正则表达式是贪婪的,总是尽可能的匹配更远的符合匹配的内容。另外注意字符串中的空格。
请给出查看当前哪些用户在线的Linux命令
w        #显示目前系统登录用户

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

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

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

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

finger   #用户信息查找程序

id       #显示指定用户或当前用户的用户与组信息
请你描述下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
请列出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端口
给出正确的关机和重启服务器的命令
⑴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,即重新启动。
请简述修改/etc/sudoers配置文件的注意事项
①别名的名称可以包含大写字母。数字、下划线。如果是字母必须要大写,(别名为一群拥有相同属性的集合)。

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

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

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

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

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

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

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

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

⑧禁止某类程序或命令执行,要在命令动作前面加上“!”号,并放在允许执行命令之后。
请描述如何实现linux系统集权分治的权限分级精细管理?
① 收集以及制定用户和权限的匹配信息,原则是给于最小权限,但是又能完成所承担的工作职责。

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

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

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

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

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

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

⑧调试完毕,邮件周知所有相关人员系统权限设置生效,并附带操作说明及相关注意事项。
请描述服务器账户日志审计的5种解决方案。
⑴通过环境变量syslog对全部全部日志进行审计(信息量太大,不推荐)

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

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

⑷齐治的堡垒机(商业产品)
如果一台办公室内主机无法上网(打不开网站),请给出你的排查步骤?
①首先确定物理链路是否联通正常。

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

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

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

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

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

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

⑧通过以上检查后,还在网管的路由器上进行检查。
描述Linux shell中单引号、双引号及不加引号的简单区别
单引号:所见即所得,即将单引号内的内容原样输出,或者描述为单引号里面看到的是什么就输出什么。

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

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

无引号:把内容输出出来,可能不会键含有空格的字符串,视为一个整体输出,如果内容中有命令、变量等,会先把变量、命令解析出来,然后输出最终内容,如果字符串中带有空格等特殊字符,则不能完整输出,需要改加双引号。一般连续的字符串,数字,路径等可以用,不过最好用双引号,替代之。
请简述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 运行的通常二者设置大致相同,所以通常前者会调用后者。
请描述下列路径的内容是做什么的?
/var/log/messages   系统日志文件

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

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

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

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

/etc/profile        环境变量存放的文件
请给出Linux中eth0的IP地址和广播地址的指令,需使用cut、awk、grep、sed指令。
第一种方法:使用grep和cut取值

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

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

第四种方法:使用sed和awk

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

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

第七种方法:grep 网卡文件

第八种方法:head取行 awk分割
请输出你知道的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     切换用户角色,-切换环境变量
在 Linux 中什么是平均负载?
平均负载被定义为在1分钟,5分钟和15分钟内等待在运行队列中的进程数目和当前正在执行的进程数目之和的平均值。
使用 ‘top’ 和 ‘uptime’ 命令我们可以查询一个 Linux 服务器的平均负载。
Puppet Master 在哪里存储证书?
/var/lib/puppet/ssl/ca/signed
在 Puppet 服务器中哪一个命令用于给请求的证书签名?
答:
在2.x中使用 ‘puppetca  –sign hostname-of-agent’ 
在3.x中使用 ‘puppet ca  sign hostname-of-agent
某一天突然发现Linux系统文件只读,该怎么办呢?
首先把系统关机,
然后以光盘启动进入救援模式(linux rescue),
执行"fsck.ext3 -y /dev/sda2" (假如只读的分区类型为ext3,分区为/dev/sda2)

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

更改字符模式:修改/etc/inittab一行为 id:3:initdefault:
临时关闭selinnux  setenforce 0
临时关闭防火墙    iptables -F
永久关闭selinux   修改/etc/selinux/config一行为 SELINUX=permissive
永久关闭防火墙   iptables -F;/etc/init.d/iptables save
当用户在浏览器当中输入一个网站,说说计算机对dns解释经过那些流程?注:本机跟本地dns还没有缓存。
a.用户输入网址到浏览器;
b.浏览器发出DNS请求信息;
c.计算机首先查询本机HOST文件,看是否存在,存在直接返回结果,不存在,继续下一步;
d.计算机按照本地DNS的顺序,向合法dns服务器查询IP结果;
e.合法dns返回dns结果给本地dns,本地dns并缓存本结果,直到TTL过期,才再次查询此结果;
f.返回IP结果给浏览器;
g.浏览器根据IP信息,获取页面;
在mysql客户端查询工具中,如何获取当前的所有连接进程信息
mysql> show full processlist;
服务器开不了机怎么解决一步步的排查
A、造成服务器故障的原因可能有以下几点:
1服务器电源有问题(断电,电源线松动,人为原因
2服务器文件系统丢失,硬件问题,散热不良造成蓝屏和死机
3服务器网络参数配置错误,物理链路原因

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

wKioL1lMg2vhIvWKAAKkezGi_-4547.png-wh_50

1. 为什么 LVM 是必需的?

LVM 的意思是逻辑卷管理器,它可以帮助我们根据文件系统的大小重新在线调整 Linux 中的 LVM 分区的大小。我们可以分别使用 lvextend 和 lvreduce 命令来增加或减小 LVM 分区的大小。

2. 如何内存和 CPU 的统计数据?

我们可以分别使用 ‘free’ 和 ‘vmstat’ 命令来查看物理内存和虚拟内存的统计数据。使用 ‘sar’ 命令,我们可以看到 CPU 使用率以及其他资料。

3. Sar 提供了什么?Sar日志的存储位置在哪里?

Sar 收集,报告,保存系统的活动信息。Sar 命令的默认版本(CPU 使用率报告)可能是用户执行系统活动调查时第一个用到的,因为它监控着大部分系统资源。当 CPU 利用率接近100%时,采样的工作负载时 CPU 密集型的。

Sar 命令的默认日志文件位于 /var/log/sa/sadd 文件,其中 dd 代表着当前日期。

4. 如何增加 LVM 分区的大小?

下面是逻辑步骤:

-使用 lvextend 命令(lvextend -L +100M/dev/<Name of the LVM Partition>, 在这里,我们给指定分区增加了100MB 的大小)

–resize2fs /dev/<Name of the LVM Partition>

-使用’df -h’命令检查分区的大小

5. 如何缩小 LVM 分区的大小?

下面是缩小 LVM 分区大小的逻辑步骤:

-使用 umount 命令卸载文件系统

-使用 resize2fs 命令,例如:resiz2fs /dev/mapper/myvg-mylv 10G

-然后使用 lvreduce 命令,例如:lvreduce -L 10G /dev/mapper/myvg-mylv

以上的命令会缩小文件系统10GB的大小。

6. 如何从原始磁盘创建分区?

使用 fdisk,我们可以从原始磁盘创建分区。下面是具体步骤:

–fdisk  /dev/hd* (IDE) 或者 /dev/sd* (SCSI)

-输入n来创建一个新分区

-创建分区之后,输入w命令来保存磁盘分区信息。

7. 内核模块的位置在哪里?

在‘/lib/modules/kernel-version/’目录下存储着 Linux  操作系统中所有内核模块以及编译的驱动程序。我们也可以使用 ‘lsmod’ 命令查看所有安装的内核模块。

8. 什么是umask?

umask 意思是“用户文件创建掩码”,这决定了一个掩码控制哪些文件的权限在文件和目录被创建的时候。

9. 如何永久为用户设置 umask?

为了永久的给用户设置 umask 值,这个值必需存储在由用户默认的 shell 所确定的合适的配置文件中。

10. 如何改变Linux中默认的运行级别?

为了改变运行级别,我们必须编辑“/etc/inittab”文件,并且改变默认的运行等级(id:5:initdefault:),使用‘init’命令,我们改变当前的运行级别。例如:‘init 3’,这个命令将会把系统的运行级别改为第三级。

11. 如何使用 nfs 共享目录?

使用 nfs 分享目录,我们首先要编辑‘/etc/exportfs’文件,加上一个入口,例如:‘/<directory-name>  <ip or Network>(Options)’,然后重新启动 nfs 服务。

12. 如何检查并挂载 nfs 共享?

使用 ‘showmount’ 命令,我们可以看到有哪些目录通过 nfs 被共享了,例如:‘showmount -e <ip address of nfs server>’。使用 mount 命令,我们能够在 Linux 上挂载 nfs 共享。

13. SMTP, DNS, FTP, DHCP, SSH 和 squid 使用的默认端口号是哪些?

服务              端口号

SMTP                25

 DNS                  53

 FTP                    20(数据传输),21(建立连接)

DHCP                67/UDP(dhcp 服务端),68/UDP(dhcp 客户端)

SSH                    22

 Squid                  3128

14. 什么是网络绑定?

网络绑定是将多个 LAN 卡聚合在一起形成一个单一的绑定接口,来提供容错性和高性能。网络绑定也被叫做NIC Teaming。

15. Linux中不同的网络绑定模式有哪些?

下面是网络绑定中被使用的模式:

balance-rr or 0 –  循环模式来提高容错性和负载平衡。

active-backup or 1 – 设置主动备份模式来提高容错性。

balance-xor or 2 – 设置XOR(异或)模式来提高容错性和负载平衡。

broadcast or 3 – 设置广播模式来提高容错能力,所有信息都会复制从所有的接口发出去。

802.3ad or 4 – 设置IEEE 802.3ad动态链接聚合模式。创建一个共享相同速度和双工设置的聚焦组。

balance-tlb or 5 – 设置传输负载平衡(TLB)模式提高容错性和负载平衡

balance-alb or 6 – 设置有源负载平衡(ALB)模式提高容错性和负载平衡

16.  如何检查和验证bond界面的状态?

使用‘cat /proc/net/bonding/bond0’命令,我们能够检查哪种模式被**,什么 LAN 卡被使用。在这个例子中,我们只有一个 bond 接口,但是我们可以有多个 bond 接口,例如 bond1,bond2 等等。

17. 如何检查默认路由以及路由表?

使用 ‘netstat -nr’ 和 ‘route -n’ 命令我们可以查看默认路由以及路由表。

18. 如何检查哪些端口正在监听我的 Linux 服务器?

使用 ‘netstat -l’ 和 ‘lsof -i’ 命令

19. 列出在一个特定的运行级别上,Linux 服务器所启动的服务。

使用‘chkconfig –list | grep 5:on’命令,我们可以列出在运行级别5上启动的服务。查看其他运行级别是,只要将5换成对应的级别。

20. 如何在一个特定的运行级别上启动服务?

我们可以使用类似 ‘chkconfig <Service-Name> on –level 3’ 的命令。

21. 如何升级 Linux 的内核?

我们不应该升级 Linux 内核,而是始终使用 rpm 命令来安装新的内核,因为升级内核会让你的 Linux 机器处于一个无法启动的状态

22. 如何扫描在 Linux 中新分配的 luns,而不需要重新启动?

有两种方法可以查看新分配的 luns:

方法1: 如果安装了 sg3 rpm,那么运行命令‘rescan-scsi-bus.sh’

方法2:运行命令 echo ” – – – ” > /sys/class/scsi_host/hostX/scan

23. 如何找到 HBA 卡在 Linux 服务器上的 WWN 号码?

使用命令 ‘systool -c fc_host -v | grep port_name’

24. 如何添加和修改内核参数?

要设置  Linux 中的内核参数,首先编辑 ‘/etc/sysctl.conf’ 文件,修改之后保存文件,运行命令 ‘sysctl -p’,这个命令可以永久保持修改而无需重新启动机器。

25. 什么是Puppet 服务器?

Puppet 是一个开源和企业软件,用来配置管理 UNIX 中的 toll 如操作系统。Puppet是一个自动化软件,使用代码推送配置到他的客户端(puppet 代理)。Puppet 代码可以完了各种任务,从安装新软件到检查文件权限,或者更新用户账户以及很多其他任务。

26. Puppet 中的 manifests 是什么?

Puppet 中的 mainfests 是指定客户端配置的文件。

27. 在 Puppet 服务器中哪一个命令用于给请求的证书签名?

在2.x中使用 ‘puppetca  –sign hostname-of-agent’

在3.x中使用 ‘puppet ca  sign hostname-of-agent’

28. Puppet Master 在哪里存储证书?

/var/lib/puppet/ssl/ca/signed

29. 如何在目录中找到所有的常规文件?

使用命令 ‘find /<directory -type f’。

在‘/lib/modules/kernel-version/’目录下存储着 Linux  操作系统中所有内核模块以及编译的驱动程序。
我们也可以使用 ‘lsmod’ 命令查看所有安装的内核模块。

下面是逻辑步骤:

-使用 lvextend 命令(lvextend -L +100M/dev/<Name of the LVM Partition>, 在这里,我们给指定分区增加了100MB 的大小)

–resize2fs /dev/<Name of the LVM Partition>

-使用’df -h’命令检查分区的大小

Sar 收集,报告,保存系统的活动信息。Sar 命令的默认版本(CPU 使用率报告)可能是用户执行系统活动调查时第一个用到的,因为它监控着大部分系统资源。当 CPU 利用率接近100%时,采样的工作负载时 CPU 密集型的。

Sar 命令的默认日志文件位于 /var/log/sa/sadd 文件,其中 dd 代表着当前日期。

LVM 的意思是逻辑卷管理器,它可以帮助我们根据文件系统的大小重新在线调整 Linux 中的 LVM 分区的大小。
我们可以分别使用 lvextend 和 lvreduce 命令来增加或减小 LVM 分区的大小。

LVM 的意思是逻辑卷管理器,它可以帮助我们根据文件系统的大小重新在线调整 Linux 中的 LVM 分区的大小。
我们可以分别使用 lvextend 和 lvreduce 命令来增加或减小 LVM 分区的大小。







































































































二、 如查忘记了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;

版权声明:本文为shangyuanlang原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/shangyuanlang/article/details/80677515

智能推荐

【机器学习基础】线性回归

                                                        &nbs...

08-Vue实现书籍购物车案例

书籍购物车案例 index.html main.js style.css 1.内容讲解 写一个table和thead,tbody中每一个tr都用来遍历data变量中的books列表。 结果如下: 在thead中加上购买数量和操作,并在对应的tbody中加入对应的按钮。结果如下: 为每个+和-按钮添加事件,将index作为参数传入,并判断当数量为1时,按钮-不可点击。 结果如下: 为每个移除按钮添加...

堆排序

堆排序就是利用堆进行排序的方法,基本思想是,将代排序列构造成一个大根堆,此时整个序列的最大值就是堆顶的根节点。将它与堆数组的末尾元素交换,此时末尾元素就是最大值,移除末尾元素,然后将剩余n-1个元素重新构造成一个大根堆,堆顶元素为次大元素,再次与末尾元素交换,再移除,如此反复进行,便得到一个有序序列。 (大根堆为每一个父节点都大于两个子节点的堆) 上面思想的实现还要解决两个问题: 1.如何由一个无...

基础知识(变量类型和计算)

一、值类型 常见的有:number、string、Boolean、undefined、Symbol 二、引用类型 常用的有:object、Array、null(指针指向为空)、function 两者的区别: 值类型暂用空间小,所以存放在栈中,赋值时互不干扰,所以b还是100 引用类型暂用空间大,所以存放在堆中,赋值的时候b是引用了和a一样的内存地址,所以a改变了b也跟着改变,b和a相等 如图: 值...

猜你喜欢

Codeforces 1342 C. Yet Another Counting Problem(找规律)

题意: [l,r][l,r][l,r] 范围内多少个数满足 (x%b)%a!=(x%a)%b(x \% b) \% a != (x \% a) \% b(x%b)%a!=(x%a)%b。 一般这种题没什么思路就打表找一下规律。 7 8 9 10 11 12 13 14 15 16 17 18 19 20 28 29 30 31 32 33 34 35 36 37 38 39 40 41 49 50...

[笔记]飞浆PaddlePaddle-百度架构师手把手带你零基础实践深度学习-21日学习打卡(Day 3)

[笔记]飞浆PaddlePaddle-百度架构师手把手带你零基础实践深度学习-21日学习打卡(Day 3) (Credit: https://gitee.com/paddlepaddle/Paddle/raw/develop/doc/imgs/logo.png) MNIST数据集 MNIST数据集可以认为是学习机器学习的“hello world”。最早出现在1998年LeC...

哈希数据结构和代码实现

主要结构体: 实现插入、删除、查找、扩容、冲突解决等接口,用于理解哈希这种数据结构 完整代码参见github: https://github.com/jinxiang1224/cpp/tree/master/DataStruct_Algorithm/hash...

解决Ubuntu中解压zip文件(提取到此处)中文乱码问题

在Ubuntu系统下,解压zip文件时,使用右键--提取到此处,得到的文件内部文件名中文出现乱码。 导致此问题出现的原因一般为未下载相应的字体。 解决方案: 在终端中使用unar命令。 需要注意的是系统需要包含unar命令,如果没有,采用如下的方式解决: 实例效果展示: 直接提取到此处: 使用 unar filename.zip得到的文件...

centos7安装mysql8.0.20单机版详细教程

mysql8.0之后与5.7存在着很大的差异,这些差异不仅仅表现在功能和性能上,还表现在基础操作和设置上。这给一些熟悉mysql5.7的小伙伴带来了很多困扰,下面我们就来详细介绍下8.0的安装和配置过程。 mysql在linux上的多种安装方式: 1.yum安装 由于centos默认的yum源中没有mysql,所以我们要使用yum安装mysql就必须自己指定mysql的yum源。在官网下载mysq...