Linux运维面试题集(一)

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

    1)开机BIOS自检,加载硬盘;

    2)读取MBR,MBR引导;

    3)grub引导菜单(Boot Loader);

    4)加载内核kernel ;

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

    6)init进程,执行rc.sysinit文件;

    7)启动内核模块,执行不同级别的脚本程序;

    8)执行/etc/rc.d/rc.local;

    9)启动mingetty,进入系统登录界面。

2、描述Linux下软连接和硬链接的区别

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

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

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

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

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

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

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

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

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

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

3、shell脚本中“$?”标记的用途是什么

    在一个shell脚本中,如果想要检查前一条命令是否执行成功,在if条件中使用“$?”可以检查前一条命令的结束状态。

例如:

    admin:~#   ls /home/admin

    admin:~#    echo $?

    0

    如果结束状态是0,说明前一条命令执行成功。

    admin:~#   ls  /home/admin/share

     ls: cannot access /usr/bin/share: No such file or directory

     admin:~#   echo $?

     2

    如果结束状态不是0,说明上一条命令执行失败。

4、用shell统计ip访问情况,要求分析nginx访问日志,照出访问页面数量在前10位的ip数。以下是nginx的访问日志节选

    201.102.128.129- - [26/Mar/2006:23:59:55 +0800] "GET /online/stat_inst.php?pid=d065HTTP/1.1" 302 20-"-" "-" "Mozilla/4.0(compatible; MSIE 6.0; Windows NT 5.1)"

  请写出shell实现输出top10的IP列表。

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

   48    201.102.128.129

   26  128.39.25.10

   22   16.95.91.16

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

    $  iptables -t nat -A PREROUTING -d 189.120.20.11 -p tcp --dprot 80 -j DNAT --to-destination  189.120.20.11:8080

6、Load过高的可能性有哪些?

   思路:1)首先排查哪些进程cpu占用率高。通过命令ps ux查看;2)假如通过第一步看到某个 进程占有资源比较高,查看对应进程的每个线程的CPU占用率。通过命令: ps -Lp 20222;3)追踪线程内部,查看load过高原因。通过查看命令:jstack 20222

其他:cpu load飙升,一方面可能和full gc的次数增大有关,一方面可能和死循环有关。

7、描述/etc/fstab文件中每个字段的含义

     1)第一列:将被加载的文件系统名;2)第二列:该文件系统的安装点;3)第三列:文件系统的类型;4)第四列:设置参数;

     5)第五列:供备份程序确定上次备份距上次备份距现在的天数;6):第六列:在系统引导时检测文件系统的顺序。

8、打包时排除指定目录

  $ tar --exclude=/home/admin --exclude=*.tar -zcvf admin.tar.gz /home/* /etc

9、生成随机密码

$  mkpasswd -l 8 -C 2 -c 2 -d 4 -s 0

10、统计tcp状态

$  netstat -an |grep '^tcp' | awk '{++s[$NF]}END{for (i in s) print i "\t" s[i]}'

11、mysql忘记root密码怎么办

 $ mysql_safe  --user=mysql --skin-grant-tables --skip-networking & use mysql;

  mysql > update user set password=password('123abc') where user='root';

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

   目前已有的RAID(独立冗余磁盘阵列)技术有很多种,但是RAID0、RAID1、RAID5是最常见的几种方案:

  RAID0,可以是一块盘和多个(至少两个)盘组合

   优点:读写快,是RAID种最好的。  缺点:没有冗余,一块坏了数据就全部丢失。

  RAID1,只能2块盘,大小可以不一样,以小的为准,100%的冗余,缺点:浪费资源,成本高

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

  特点,读可以,写不好

冗余从好到坏:RAID1 RAID10 RAID 5 RAID0

性能从好到坏:RAID0 RAID10 RAID5 RAID1

成本从低到高:RAID0 RAID5 RAID1 RAID10

13、LVS、Nginx、HAproxy有什么区别,工作中怎么选择

     LVS:基于四层的转发

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

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

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

工作选择:

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

14、Squid、Varinsh和Nginx的区别

    Squid、Varinsh和Nginx都是代理服务器

代理服务器:

 能代替用户去访问公网,并且把访问到的数据缓存到服务器本地,等下次访问相同的资源时,代理服务器能直接从本地回应给用户,当本地没有用户请求的资源时,代理服务器代替用户去访问公网。

区别:

   1)Nginx本来是反向代理服务器/Web服务器,使用第三方模块可以做代理服务器,单自身不支持特性挺多,只能缓存静态文件;

   2)varnish和squid的是专业的cache服务,而Nginx要通过第三方模块完成

   3)Varnish本身的技术上优势要高于squid,采用可视化页面缓存技术

在内存的利用上,Varnish和squid具有优势,性能要比Squid高。

还有强大的通过Varnish管理端口,可以使用正则表达式快速、批量清楚部分缓存

Varnish是内存缓存,速度一流,但是内存缓存也限制了其容量,缓存页面和图片一般是挺好的

  4)squid优势在于完整的庞大的cache技术资料,和很多的应用生产环境

15、Tomcat和Resin的区别

区别:Tomcat用户数多,可参考文档多,Resin用户数少,可参考文档少

            最主要区别是Tomcat是标准的java容器,不过性能方面比Resin要差一些

            但是稳定性和java程序的兼容性,应该比Resin要好

选择:大公司都是用Resin,追求性能;中小公司都用Tomcat,追求稳定和程序的兼容性。

16、简述Tomcat 8005、8009、8080的三个端口

 8005    关闭时使用

 8009     为AJP端口,容器使用

 8080    一般应用使用

17、什么叫CDN

  内容分发网络

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

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

  中间件:一种独立的系统软件或服务程序,分布式应用软件借助这种软件在不同的技术之间共享资源

  中间件位于客户机/服务器的操作系统之上,管理计算机资源和网络通讯是连接两个独立应用程序或独立系统的软件,相连接的系统,即使它们具有不同的接口,但通过中间件相互之间仍能交换信息。

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

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

你可能感兴趣的:(运维,面试题集)