合格linux运维人员必会的30道shell编程面试题及讲解

原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 、作者信息和本声明。否则将追究法律责任。http://oldboy.blog.51cto.com/2561410/1632876

超深度讲解shell高级编程实战,截至目前shell编程课程国内培训机构最细的课程,不信请看学员表现的水平。

课程牛不牛,不是看老师、课表,而是看培养的的学生水平,目前全免费中伙伴们赶紧看啊。

http://edu.51cto.com/course/course_id-5257.html

企业合格的linux运维必会编程题,能独立完成的同学就业工资不会低于12K

这是老男孩linux运维班要求学生必会的题目,完不成的不能合格毕业,每个完成的都奖励价值500-1000元的等值礼物(以当天考试成绩宣布为准),要进要退自己抉择,伙伴们走起!

实战考试时间就在2016年1月15日上机实战,禁止大面积抄袭学习课堂笔记否则无奖励!
共21道考试题,面授上课几乎全部讲解过类似的案例,考试题略微变更而已。

企业面试题1:(生产实战案例):监控MySQL主从同步是否异常,如果异常,则发送短信或者邮件给管理员。提示:如果没主从同步环境,可以用下面文本放到文件里读取来模拟:
阶段1:开发一个守护进程脚本每30秒实现检测一次。
阶段2:如果同步出现如下错误号(1158,1159,1008,1007,1062),则跳过错误。
阶段3:请使用数组技术实现上述脚本(获取主从判断及错误号部分)


1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

[[email protected]~]# mysql -uroot -p‘oldboy‘ -S /data/3307/mysql.sock -e "show slavestatus\G;"

*************************** 1. row ***************************

               Slave_IO_State:Waiting for master to send event

                  Master_Host:10.0.0.179   #当前的mysql master服务器主机

                  Master_User: rep

                  Master_Port: 3306

                Connect_Retry: 60

              Master_Log_File:mysql-bin.000013

         Read_Master_Log_Pos: 502547

               Relay_Log_File:relay-bin.000013

                Relay_Log_Pos:251

        Relay_Master_Log_File:mysql-bin.000013

             Slave_IO_Running:Yes

           Slave_SQL_Running: Yes

              Replicate_Do_DB: 

         Replicate_Ignore_DB: mysql

          Replicate_Do_Table: 

      Replicate_Ignore_Table: 

     Replicate_Wild_Do_Table: 

 Replicate_Wild_Ignore_Table: 

                   Last_Errno: 0

                   Last_Error: 

                 Skip_Counter: 0

         Exec_Master_Log_Pos: 502547

              Relay_Log_Space:502986

              Until_Condition:None

               Until_Log_File: 

                Until_Log_Pos: 0

          Master_SSL_Allowed: No

          Master_SSL_CA_File: 

          Master_SSL_CA_Path: 

              Master_SSL_Cert: 

           Master_SSL_Cipher: 

               Master_SSL_Key: 

       Seconds_Behind_Master: 0   #和主库比同步延迟的秒数,这个参数很重要

Master_SSL_Verify_Server_Cert: No

                Last_IO_Errno: 0

                Last_IO_Error: 

               Last_SQL_Errno: 0

               Last_SQL_Error:

企业面试题2:
使用for循环在/oldboy目录下通过随机小写10个字母加固定字符串oldboy批量创建10个html文件,名称例如为:


1

2

3

4

5

6

[[email protected] oldboy]# sh /server/scripts/oldboy.sh

[[email protected] oldboy]# ls 

coaolvajcq_oldboy.html  qnvuxvicni_oldboy.html  vioesjmcbu_oldboy.html

gmkhrancxh_oldboy.html  tmdjormaxr_oldboy.html  wzewnojiwe_oldboy.html

jdxexendbe_oldboy.html  ugaywanjlm_oldboy.html  xzzruhdzda_oldboy.html

qcawgsrtkp_oldboy.html  vfrphtqjpc_oldboy.html

企业面试题3:请用至少两种方法实现!
将以上文件名中的oldboy全部改成oldgirl(用for循环实现),并且html改成大写。

企业面试题4:
批量创建10个系统帐号oldboy01-oldboy10并设置密码(密码为随机8位字符串)。

企业面试题5:
写一个脚本,实现判断10.0.0.0/24网络里,当前在线用户的IP有哪些(方法有很多)

企业实战题6:请用至少两种方法实现!
写一个脚本解决DOS攻击生产案例
提示:根据web日志或者或者网络连接数,监控当某个IP并发连接数或者短时内PV达到100,即调用防火墙命令封掉对应的IP,监控频率每隔3分钟。防火墙命令为:iptables -I INPUT -s 10.0.1.10 -j DROP。

企业实战题7:
开发mysql多实例启动脚本:
已知mysql多实例启动命令为:mysqld_safe--defaults-file=/data/3306/my.cnf &
停止命令为:mysqladmin -u root -poldboy123 -S /data/3306/mysql.sockshutdown
请完成mysql多实例启动启动脚本的编写
要求:用函数,case语句、if语句等实现。

企业实战题8:如何实现对MySQL数据库进行分库备份,请用脚本实现

企业实战题9:如何实现对MySQL数据库进行分库加分表备份,请用脚本实现

企业面试题10:请用至少两种方法实现!
bash for循环打印下面这句话中字母数不大于6的单词(昆仑万维面试题)。
I am oldboy teacher welcome to oldboy training class.

企业面试题11:开发shell脚本分别实现以脚本传参以及read读入的方式比较2个整数大小。以屏幕输出的方式提醒用户比较结果。注意:一共是开发2个脚本。当用脚本传参以及read读入的方式需要对变量是否为数字、并且传参个数做判断。

企业面试题12:打印选择菜单,一键安装Web服务:

[[email protected]]# sh menu.sh

1.[install lamp]

2.[install lnmp]

3.[exit]

pls input the num you want:

要求:

1、当用户输入1时,输出“startinstalling lamp.”然后执行/server/scripts/lamp.sh,脚本内容输出"lampis installed"后退出脚本;

2、当用户输入2时,输出“startinstalling lnmp.”然后执行/server/scripts/lnmp.sh输出"lnmpis installed"后退出脚本;

3、当输入3时,退出当前菜单及脚本;

4、当输入任何其它字符,给出提示“Input error”后退出脚本。

5、要对执行的脚本进行相关条件判断,例如:脚本是否存在,是否可执行等。

企业面试题13:

1、监控web服务是否正常,不低于3种监控策略。

2、监控db服务是否正常,不低于3种监控策略。
要求间隔1分钟,持续监控。

企业面试题14:监控memcache服务是否正常,模拟用户(web客户端)检测。

使用nc命令加上set/get来模拟检测,以及监控响应时间及命中率。

企业面试题15:面试及实战考试题:监控web站点目录(/var/html/www)下所有文件是否被恶意篡改(文件内容被改了),如果有就打印改动的文件名(发邮件),定时任务每3分钟执行一次(10分钟时间完成)。

企业面试题16:企业案例:写网络服务独立进程模式下rsync的系统启动脚本

例如:/etc/init.d/rsyncd{start|stop|restart} 。
要求:
1.要使用系统函数库技巧。
2.要用函数,不能一坨SHI的方式。
3.可被chkconfig管理。

企业面试题17:老男孩教育天津项目学生实践抓阄题目:

好消息,老男孩培训学生外出企业项目实践机会(第6次)来了(本月中旬),但是,名额有限,队员限3人(班长带队)。

因此需要挑选学生,因此需要一个抓阄的程序:

要求:

1、执行脚本后,想去的同学输入英文名字全拼,产生随机数01-99之间的数字,数字越大就去参加项目实践,前面已经抓到的数字,下次不能在出现相同数字。

2、第一个输入名字后,屏幕输出信息,并将名字和数字记录到文件里,程序不能退出继续等待别的学生输入

企业面试题18:老男孩linux企业面试题:

已知下面的字符串是通过RANDOM随机数变量md5sum|cut-c 1-8截取后的结果,请破解这些字符串对应的md5sum前的RANDOM对应数字?

21029299

00205d1c

a3da1677

1f6d12dd

890684b

企业面试题19:批量检查多个网站地址是否正常

要求:shell数组方法实现,检测策略尽量模拟用户访问思路

http://www.etiantian.org

http://www.taobao.com

http://oldboy.blog.51cto.com

http://10.0.0.7

企业面试题20(中企动力)::用shell处理以下内容

1、按单词出现频率降序排序!

2、按字母出现频率降序排序!

the
squid project provides a number of resources toassist users
design,implement and support squid installations. Please browsethe
documentation and support sections for more infomation

企业面试题21:输出正方形、等腰三角形、直角梯形,见如下内容

http://oldboy.blog.51cto.com/2561410/1718607

 

企业面试题22:开发通过web界面展示监控Nginx代理节点状态,效果图如下。

lvs+keepalived集群部分Shell企业案例:

企业面试题23、【LVS主节点】手工开发ipvsadm管理lvs的脚本ip_vs

实现:/etc/init.d/lvs {start|stop|restart}

企业面试题24、【LVS主节点】模拟keepalived健康检查功能管理LVS节点,

当节点挂掉(检测2次,间隔2秒)从服务器池中剔除,好了(检测2次,间隔2秒)加进来

提示:利用ipvsadm命令实现添加和减少LVS节点。

企业面试题25、【LVS客户端节点】开发LVS客户端设置VIP以及抑制ARP的管理脚本

实现:/etc/init.d/lvsclient {start|stop|restart}

企业面试题26、【LVS备节点】模拟keepalved vrrp功能,监听主节点,如果主节点不可访问则备节点启动并配置LVS实现接管主节点的资源提供服务(提醒:注意ARP缓存)

企业面试题27、请用shell或Python编写一个正方形(oldboy_square.sh),接收用户输入的数字。

例如:


1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

[[email protected] ~]# sh oldboy_square1.sh 

Please Enter a number:5

++++++++++

++++++++++

++++++++++

++++++++++

++++++++++

[[email protected] ~]# sh oldboy_square2.sh  

Please Enter a number:9

■■■■■■■■■

■■■■■■■■■

■■■■■■■■■

■■■■■■■■■

■■■■■■■■■

■■■■■■■■■

■■■■■■■■■

■■■■■■■■■

■■■■■■■■■

企业面试题28、请用shell或Python编写一个等腰三角形(oldboy2_triangle.sh),接收用户输入的数字。

例如:


1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

[[email protected] ~]# sh oldboy2_triangle.sh 

Please Enter a number:5

    *

   ***

  *****

 *******

*********

[[email protected] ~]# sh oldboy2_triangle.sh 

Please Enter a number:8

       *

      ***

     *****

    *******

   *********

  ***********

 *************

***************

企业面试题29、请用shell或Python编写一个画直角梯形程序(oldboy4.sh),接收用户输入的参数n,m

例如:


1

2

3

4

[[email protected] ~]# sh oldboy4.sh 4 6

****

*****

******

27,28,29三道题参考http://oldboy.blog.51cto.com/2561410/1718607

企业面试题30:写一套简单的企业代码上线发布系统案例,利用SVN对代码及配置文件进行管理,在办公室服务器上从svn取出指定版本的代码和配置,发布到IDC机房分发机服务器上,在分发服务器或者负载均衡器上或者应用服务器本地实现代码平滑发布、上线、回滚脚本(具体设计请参考课堂讲解的企业代码发布方案)。

企业面试题31:请设计一套Git+Saltstack实现代码的线上发布及管理方案。

(可参考跟老男孩学习Linux运维:Shell高级编程实战一书内容)

转载的网友,请务必保留本文章的全部内容,谢谢。

检查标准:

1、查看实现的脚本,并询问脚本中的设计思想及实现流程。

2、必要情况下,面试官可以看着你要求你重新开发出来。

3、检查人:班长,组长,老男孩老师,助教。

本文出自 “老男孩linux培训” 博客,请务必保留此出处http://oldboy.blog.51cto.com/2561410/1632876

时间: 2024-10-05 22:03:48

合格linux运维人员必会的30道shell编程面试题及讲解的相关文章

2017年Linux运维人员必会开源运维工具体系总结

操作系统:Centos,Ubuntu,Redhat,suse,Freebsd 网站服务:nginx,apache,lighttpd,php,tomcat,resin数据库:MySQL,MariaDB,PostgreSQL DB中间件:maxscale,MyCat,atlas,cobar,amoeba,MySQL-proxy 代理相关:lvs,keepalived,haproxy,nginx,heartbeat网站缓存:squid,nginx,varnishNOSQL库:Redis,Memcach

最新Linux运维必会22道Shell编程面试题精彩讲解

1.批量创建自带随机字符串的文件多种方法 本次运用到了$RANDOM变量 创建命令如下: echo $RANDOM|md5sum|tr "[0-9]" "[a-z]"|cut -c 3-8 通过echo输出随机数,然后通过md5加密,再将数字转换为字母,然后取其中的10个 具体脚本实现如下: #!/bin/bash #echo $RANDOM|md5sum|tr "[0-9]" "[a-z]"|cut -c 3-8      

浅谈现下Linux运维人员面临的问题

随着时代的进步,技术的飞速发展,IT领域对用人的要求也逐步提高,为了更佳的适应自己的市场环境,小伙伴们不断地走在学习的路上,给自己充电为自己增值.时代在进步,大家在进步,若是停留,你就已经退步了.那对于现在的Linux运维人员呢?面临着什么问题呢? 一.云计算兴起带来的问题 云计算的兴起,解决了传统的选机房.买代宽.买网络设备.甚至系统安装,企业用户只要付费就可以用网络服务了,一些低端的运维工程师饭碗不保.但是,每个企业都有各自的特殊需求,因此优秀的运维工程师依然大量稀缺. 二.自动化和人工智能

老鸟经验谈linux运维人员到底要不要考linux认证

Linux领域常见的认证有RHCE和RHCA,RHCE是Red Hat Certified Engineer的简称,即红帽认证工程师,另一个是RHCA,是Red Hat Certified Architect的缩写,即红帽认证架构师. 那么,linux从业者到底要不要考linux认证呢? 下面是老男孩老师的个人见解,供大家参考.大家也可以在我的文章下面发表自己的见解 博友们猛戳下面链接观看 老鸟经验谈Linux运维人员到底要不要考linux认证

如何成为一名优秀的Linux运维人员?

今天我想谈一谈"如何成为一名优秀的linux运维人员?"我将从以下三个部分来和大家分析以下目前Linux这个行业的现状以及如何学好.用好linux. 一.linux行业现状 我们知道Linux诞生于1991年,它在国外的发展是非常迅速的,即使目前国内越来越多的应用转向linux平台,但Linux在大多数人的眼中还是不太了解,甚至一个多年从事windows平台下的开发人员,可能也从未使用过.究其原因主要有以下几点:    1.入行门槛较高 由于linux是类UNIX操作系统,我们都知道U

LINUX运维人员必备

LINUX运维人员必备(入门级) 什么是linux? 首先,开始我们介绍一下我们的电脑/服务器运行的一些原理 我们人是如何使用电脑的呢,我们是通过使用操作系统,让我们的电脑可以满足我们的一些需求,我们通过键盘鼠标打开一些软件开始使用,而软件通过解释器翻译给内核,而后内核告诉CPU,CPU通过调用内存.硬盘中的数据达到我们的需求,最后通过显示器,执行结束,这边是电脑/服务器使用的原理,而我们的操作系统就是其中的软件+解释器+内核, 可能大家都听过Windows系统,家喻户晓,基本每家每户有电脑的人

Linux运维人员需要掌握一门编程语言吗?

最近经常有同行的朋友或者Linux初学者问我:运维人员是否需要学一门语言,那么该学哪种语言呢? 对于这个问题,我分两个方面回答: 首选,在大数据.云计算发展迅猛的今天,系统运维人员如果不懂一点开发语言的话,确实会举步维艰,因为在运维工作中,业务系统的繁多,线上服务器规模很大时,只能通过写脚本的方式(自动化也是脚本一种哦)自动化完成,不然,如此重复和繁琐的工作,靠人力是无法负担的,所以,学习一门可以让运维工作批量完成的语言,就显得很重要了. 那么应该学习一门什么语言呢? 对于Linux系统运维人员

Linux运维MySQL必会面试题100道

老男孩教育Linux运维班MySQL必会面试题100道 (1)基础笔试命令考察 (要求:每两个同学一组,一个口头考,一个上机实战作答,每5个题为一组,完成后换位) 1.开启MySQL服务 2.检测端口是否运行 3.为MySQL设置密码或者修改密码. 4.登陆MySQL数据库. 5.查看当前数据库的字符集 6.查看当前数据库版本 7.查看当前登录的用户. 8.创建GBK字符集的数据库oldboy,并查看已建库完整语句 9.创建用户oldboy,使之可以管理数据库oldboy 10.查看创建的用户o

给初学linux运维人员的一些个人建议

在学习linux技术的前2年里,相信很多人都或多或少的走过很多弯路:现如今互联网技术发展迅速,如何才能有利的找到自己的着重点学习它(linux)呢?其实这并不难,难的只是学习它的人选择性太多了. 自2012年第一次接触linux运维这个工作时,几乎都是什么都想学 可又什么都学不下去: linux运维 这个职位的定义 要会的东西很多,其中包括:web层.缓存层.数据库层.存储层等等很多的方方面面:然而这些确实对于我这样一个初学者来说 简直就是乱七八糟的 ,这不比上学的各种课本容易: 但最终所有的技