linux面试积累

来源:互联网 发布:mate10使用感受知乎 编辑:程序博客网 时间:2024/06/05 05:47

1. 软连接与硬链接区别

K2bc39d.jpg

2. Linux文件删除原理

VSfChRI.jpg

3. linux系统的启动过程

BIOS(基本输入输出系统)

  • 1. 检查硬件,即计算机硬件是否满足运行基本条件。(如果硬件有问题主板会发出有频率的蜂鸣,启动终止);

  • 2. 查找软盘、光盘或硬盘的引导装在程序(指引导记录,即MBR);

  • 3. 将引导装在程序(MBR)载入内存,将控制权交给MBR.

MBR(主引导记录)

  • 加载并执行GRUB

MBR位于启动盘第一扇区(一般为/dev/hda或者/dev/sda)
MBR共有512位由三部分组成:
① 1-446bit 主引导加载程序信息
② 447-510bit 存放分区表
③ 511-512bit 存储MBR有效标记

GRUB(启动管理器)

  • 加载并执行内核以及initrd镜像

GRUB会让你选择启动的内核
GRUB会通过配置文件找到内核及Initrd镜像,initrd镜像含有内核所需的基本模块驱动

Kernel

  • 1. 挂载根文件系统;

  • 2. 运行/sbin/init程序,初始化系统环境;

由于init是被linux第一个执行的程序,所以它的进程号为1.
在根系统被挂载之前,initrd被内核作为一个临时文件系统,内核启东市展开改initrd加载根驱动,在驱动的补充下挂载根分区.

init

  • 根据/etc/inittab设定linux的运行级别

Runlevel programs

  • 根据运行级别,执行对应级别的程序

s开头程序为启动进程使用,即startup;
k开头程序为关闭过程使用,即kill.
s和k后面的数字代表执行顺序
即S12syslog,这个进程的启动顺序为12.
S80sendmail启动顺序为80,就会比syslog晚启动.

4. top命令右上角的load average的值是什么意思,高于多少代表负载有问题

拆分出四个内容 :
1. load average(系统平均负载)是什么?
系统平均负载被定义为在特定时间间隔内运行队列中(在CPU上运行或者等待运行多少进程)的平均进程数.

2. load average的三个数值代表什么?
通过top\uptime\w可以获取到load average的值,它的三个数字值分别记录了一分钟\五分钟\十五分钟的系统平均负载.

3. 高于多少负载有问题? 
高于多少代表负载有问题呢,这里有两个法则:

  • “有多少核心即为有多少负荷”法则: 在多核处理中,你的系统均值不应该高于处理器核心的总数量。

  • “核心的核心”法则: 核心分布在分别几个单个物理处理中并不重要,其实两颗四核的处理器 等于 四个双核处理器 等于 八个单处理器。所以,它应该有八个处理器内核。

4. 我们以哪个数字为准?一分钟?五分钟?还是十五分钟?
我认为你应该着眼于五分钟或者十五分钟的平均数值。坦白讲,如果前一分钟的负载情况是 1.00,那么仍可以说明认定服务器情况还是正常的。 但是如果十五分钟的数值仍然保持在 1.00,那么就值得注意了(根据我的经验,这时候你应 该增加的处理器数量了).

5. 查看网络I/O命令

dstat:多功能系统资源统计工具,不但可以获取net(网络)信息,还可以获取disk(硬盘)\处理器(CPU)等信息,结果可保存为csv.
dstat的用法如下:

dstat [-afv] [options..] [delay [count]]使用 dstat -h查看全部选项,这里不逐一列举,下面简单介绍下常用选项常用选项如下:  # 直接跟数字,表示#秒收集一次数据,默认为一秒;dstat 5表示5秒更新一次-c,--cpu   统计CPU状态,包括 user, system, idle(空闲等待时间百分比), wait(等待磁盘IO), hardware interrupt(硬件中断), software interrupt(软件中断)等;-d, --disk 统计磁盘读写状态-D total,sda 统计指定磁盘或汇总信息-l, --load 统计系统负载情况,包括1分钟、5分钟、15分钟平均值-m, --mem 统计系统物理内存使用情况,包括used, buffers, cache, free-s, --swap 统计swap已使用和剩余量-n, --net 统计网络使用情况,包括接收和发送数据-N eth1,total  统计eth1接口汇总流量-r, --io 统计I/O请求,包括读写请求-p, --proc 统计进程信息,包括runnable、uninterruptible、new-y, --sys 统计系统信息,包括中断、上下文切换-t 显示统计时时间,对分析历史数据非常有用--fs 统计文件打开数和inodes数

查看网络命令为下dstat -N lo,eth0 100 5解释:指定查看Lo和eth0网卡,每条数据存在100秒(每一秒实时刷新数据,这个频率貌似不能改),共刷新5条.

6. memcache运行原理

0n5ti8f.png

7. 当一个网站访问慢时,你怎么去优化

翻译为: 当一个网站访问慢时, 你都是怎么去查找问题,和解决问题以达到优化效果的

第一,用5分钟排除网络因素,借助工具(如pagespeed)分析页面加载过程
1. 某个元素或者图片加载过慢: 具体原因具体分析
2. DNS解析时长问题: 可以通过购买解析服务, 来让自己的域名在各地DNS更多缓存
3. 网络带宽瓶颈: 考虑增加带宽
4. 网络线路波动: 考虑CDN,或者镜像站
第二,要考虑到服务器问题
1. 是否有服务器过载: 考虑增加硬件
2. I/O操作:数据库的频繁读写,服务器的频繁请求(包括静态文件的读取,图片的读取)等都属于I/O问题。对于数据库的问题,首先要优化SQL,存储过程等。如果单表数据量过大要考虑做分割或者运用程序来控制分表。如果请求量过大,要考虑做集群。对于服务器(静态)文件的I/O问题,则可以考虑做CDN,这样也可以解决地域性问题。对于动态文件的访问,则涉及到代码优化及负载均衡两项。
3. 具体应用优化: nginx针对访问量修改配置文件,调高Buffers 调低keep alive空连接时间等
第三,安全方面
1. 查看web\mail等其它服务日志,是否存在被攻击现象: 针对安全方面加固
2. 是否有其它攻击存在DDOS,WEB CC等

8. mysql主从不同步怎么解决

  1. 在master端执行:

    mysql> flush logs;mysql> show master status;PS:记下File、Position的值。
  2. 在slave端执行:

    mysql> stop slave;mysql> CHANGE MASTER TO MASTER_LOG_FILE='bin-log.000002',MASTER_LOG_POS=107;mysql> start slave;mysql> show slave status

sql命令手动同步,还有一种方法是跳过这个导致错误的事物

  1. 跳过指定数量的事务:

    mysql>slave stop;mysql>SET GLOBAL SQL_SLAVE_SKIP_COUNTER = 1 #跳过一个事务mysql>slave start
  2. 修改mysql的配置文件,通过slave_skip_errors参数来跳所有错误或指定类型的错误

    vi /etc/my.cnf[mysqld]slave-skip-errors=1062,1053,1146 #跳过指定error no类型的错误slave-skip-errors=all #跳过所有错误

9. 进程和线程的区别

翻译: 进程和线程的概念

  • 进程(英语:process),是计算机中已运行程序的实体。进程是程序的基本执行实体,进程本身不是基本运行单位,而是线程的容器

  • 线程(英语:thread)是操作系统能够进行运算调度的最小单位。它被包含在进程之中,是进程中的实际运作单位。一条线程指的是进程中一个单一顺序的控制流,一个进程中可以并发多个线程,每条线程并行执行不同的任务。

① 进程是系统进行资源分配的基本单位,有独立的内存地址空间; 线程是CPU调度的基本单位,没有单独地址空间,有独立的栈,局部变量,寄存器, 程序计数器等。
② 创建进程的开销大,包括创建虚拟地址空间等需要大量系统资源; 创建线程开销小,基本上只有一个内核对象和一个堆栈。
③ 一个进程无法直接访问另一个进程的资源;同一进程内的多个线程共享进程的资源。
④ 进程切换开销大,线程切换开销小;进程间通信开销大,线程间通信开销小。
⑤ 线程属于进程,不能独立执行。每个进程至少要有一个线程,成为主线程

10. 常用的RAID原理

RAID 0连续以位或字节为单位分割数据,并行读/写于多个磁盘上,因此具有很高的数据传输率,但它没有数据冗余,因此并不能算是真正的RAID 结构。RAID 0 只是单纯地提高性能,并没有为数据的可靠性提供保证,而且其中的一个磁盘失效将影响到所有数据。因此,RAID 0 不能应用于数据安全性要求高的场合。

RAID 1它是通过磁盘数据镜像实现数据冗余,在成对的独立磁盘上产生互为备份的数据。当原始数据繁忙时,可直接从镜像拷贝中读取数据,因此RAID 1 可以提高读取性能。RAID 1是磁盘阵列中单位成本最高的,但提供了很高的数据安全性和可用性。当一个磁盘失效时,系统可以自动切换到镜像磁盘上读写,而不需要重组失效的数据。简单来说就是:镜象结构,类似于备份模式,一个数据被复制到两块硬盘上。

RAID 10高可靠性与高效磁盘结构一个带区结构加一个镜象结构,因为两种结构各有优缺点,因此可以相互补充。主要用于容量不大,但要求速度和差错控制的数据库中。

RAID 5分布式奇偶校验的独立磁盘结构,它的奇偶校验码存在于所有磁盘上,任何一个硬盘损坏,都可以根据其它硬盘上的校验位来重建损坏的数据。支持一块盘掉线后仍然正常运行。

11. 有没有做过性能调优

这个是个大的话题,要反问是应用调优还是系统调优 没有进行过调优,基本调优步骤:
1. 找出系统性能瓶颈(包括硬件瓶颈和软件瓶颈);
2. 提供性能优化的方案(升级硬件?改进系统系统结构?);
3. 达到合理的硬件和软件配置;
4. 使系统资源使用达到最大的平衡。

12. 请求一个网站的过程

域名解析 --> 发起TCP的3次握手 --> 建立TCP连接后发起http请求 --> 服务器响应http请求,浏览器得到html代码 --> 浏览器解析html代码,并请求html代码中的资源(如js、css、图片等) --> 浏览器对页面进行渲染呈现给用户

13. lvs/dr调度的过程

客户端请求发送给LVS ==> LVS接受请求后根据调度算法选出后台服务器 ==> LVS将报文目标MAC地址修改为该服务器 ==> 服务器处理请求后直接返回给客户端

本文转自:程序员鼓励师

0 0
原创粉丝点击