Linux 的面试小题 5

一、SHELL脚本部分:

1.完成如下操作

1) 查询file.txt文件里第一列数据数值之和(字段以&符号分隔)

2) 查询file.txt在第7行之前添加一行,内容为“#注释”。

3) 打印出file.txt 文件第6到第10行。

答案:

1) awk -F ’&’ ‘BEGIN{sum=0}{sum +=$1}END{print sum}’ file.txt

2) sed -i ‘ 7 i\ “#注释” ’ file.txt

3) sed -n ‘6,10’p file.txt

 

2.编写个shell脚本将/usr/local/test 目录下大于100k的文件转移到 /tmp目录下。

答案:

find /usr/local/test  -type f  -size +100k -exec mv {} /tmp \;

 

3.设计一个shell程序,添加一个新组为class1,然后添加属于这个组的30个用户,用户名的形式为stdxx,其中xx从01到30

答案:

#!/bin/bash

for i in $(seq -w 01 30)

do

   useradd -g class1 std$i

done

说明: seq -w 可以让序列的数字都是两位数

 

4.通过apache 访问 日志access.log统计IP和每个地址访问的次数,按访问 量列出前10名。

日志格式样例如下:

192.168.1.247  -  -  [02/[ul/2015:23:44:59  [0800]  “GET  /[HTTP/1.1  200  19”

答案:

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

 

二、系统维护部分

1、Linux系统怎么查找以普通用户Galo运行的所有进程?

答案:

ps aux|grep “^Galo”

 

2、现用vi编辑了一个脚本test.sh,在linux下执行时报错时,怎么进行调试脚本?

答案:

用sh -x 来查看脚本执行的过程,如果太多可以用&>定向执行过程到相应的日志里,再排查错误。

 

3、在/m_data/backup/scrip/目录下有一个数据库备份脚本mysql_bak.sh,需要每周三凌晨2:30自动执行,使用crontab来完成此操作,请写下命令及crontab的内容?

答案:

30 2 * * 3 /bin/bash /m_data/backup/scrip/mysql_bak.sh

 

4、Linux服务器上的tomcat进程经常出现假死的情况,当你遇到这种问题时怎么处理该问题及采取怎样的预防措施?

答案:

先排查假死时机器的负载,是否因为内存不足,cpu使用过高,或者磁盘问题等导致。临时解决办法是写个脚本监控tomcat进程状况和模拟用户访问web站点,当出现不正常时,重启tomcat。另外还需要写一个监控系统各个硬件状态的脚本,比如cpu、内存、磁盘、交换分区等,综合分析tomcat假死的原因,找问题是一个漫长和痛苦的事情,需要多一些耐心,还需要我们敢去猜测,当然根据tomcat、系统相关的日志来获取一些信息也是非常有必要的。

 

5、如何使用命令查出linux系统下某占用某个端口(如8088)具体是那个进程?

答案:

netstat -lnp|awk -F'[ :/]+' '$5~/8088/{print $10}'

 

6、使用网络方式kickstart安装linux操作系统时,通常要在安装源服务器上配置并启动哪些服务。

答案:

dhcp  ftp/http  tftp

 

7、Apache 服务器的配置文件httpd.conf中有很多内容,请解释如下配置项:

答案:

1) MaxKeepAliveRequests    最大长连接请求数。

2) UserDir public_html    用户的公用目录路径

3) DefaultType text/plain     默认网页格式为文本模式

4) AddLanguage en .en  加入英文字体

5) DocumentRoot "/var/www/html"  网站根目录

6) AddType application/x-httpd-php.php .php  增加对.php文件的支持

 

8、Linux现连接一个新的存储(如/dev/sdf,容量2T)一个应用程序需要在/data目录使用此存储的500G的存储空间(做成LVM),需要哪些步骤,请描述。

答案:

fdisk /dev/sdf 分区

n,p,1,1 +500G w 分区步骤

pvcreate /dev/sdf1 创建物理卷

vgcreate vg01 /dev/sdf1 创建卷组

lvcreate -n lv01 -l 1000%free vg01 创建逻辑卷

mkfs.ext4 /dev/vg01/lv01 格式化这个卷

mount /dev/mapper/vg01-lv01 /data   挂载这个卷

 

9、目前有一套2台Linux组成的MySql双机热备系统 ,使用heartbeat或者你所熟悉的HA软件,进行双机切换测试,数据库版本为MySql5.5,写下双机切换的测试验证过程。

说明:这个题目考察的是大家对HA架构的熟练程度,遇上这样的题目多半是需要你上机操作的,如果是虚拟机实验,大家安装步骤是:1. 两台机器分别安装mysql  2.第一台部署NFS,第二台挂载NFS  3. 两台安装heartbeat。 当然,线上环境不建议做NFS,因为mysql对磁盘IO有很高的要求,生产环境可以考虑drbd,参考链接 http://hypocritical.blog.51cto.com/3388028/1350251/

 

10、基于Linux的系统监控或性能监控,写下你熟悉的一种监控软件(Nagios,Cacti,Nmon或者其他工具或命令)能控制哪些性能指标,报警有哪些级别,有哪些报警方式。

答案:

Zabbix可以监控cpu、内存、磁盘、进程、用户、文件、服务等基础项目,也可以自定义监控项目,通过shell、python等脚本实现。报警级别有Information,Warning,Average,High,Disaster,可以通过邮件、短信、微信等方式告警

 

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

答案:

Raid0 最简单的模式,就是把N个物理磁盘合成一个总的虚拟磁盘。优点是:能够增加磁盘的IO性能。缺点是:只要有一个磁盘数据不正确,整个虚拟磁盘都会有影响。安全性最差。

Raid1 最安全的模式,raid1也叫做镜像盘,都是以偶数形式出现。每个物理盘都有一块与它数据完全一致的磁盘搭配,优点是:在坏掉某一块磁盘时都不会造成数据的损坏。缺点是:磁盘的空间利用率只能达到50%。

Raid5 最性价比的模式。raid5是拿一块磁盘的空间来进行奇偶校验,容错能力平均分布所有硬盘上,当其中一块硬盘失效时,可以保证其它成员的硬盘数据正常,所以RAID5的总容量为“(N-1)*最低容量硬盘容量”,对整体而言,raid5容量效率比较高。优点是:在保证了安全性的前提下最大化使用容量。缺点是:会影响整机的性能。

 

12、简述Apache2.x版本的两种工作模式,以及各自工作原理

答案:

prefork模式使用多个子进程,每个子进程只有一个线程。每个进程在某个确定的时间只能维持一个连接。在大多数平台上,Prefork MPM在效率上要比Worker MPM要高,但是内存使用大得多。prefork的无线程设计在某些情况下将比worker更有优势:它可以使用那些没有处理好线程安全的第三方模块,并且对于那些线程调试困难的平台而言,它也更容易调试一些。

worker模式使用多个子进程,每个子进程有多个线程。每个线程在某个确定的时间只能维持一个连接。通常来说,在一个高流量的HTTP服务器上,Worker MPM是个比较好的选择,因为Worker MPM的内存使用比Prefork MPM要低得多。但worker MPM也有不完善的地方,如果一个线程崩溃,整个进程就会连同其所有线程一起“死掉”。由于线程共享内存空间,所以一个程序在运行时必须被系统识别为每个线程都是安全的。

 

13、现有一套Mysql数据库,数据量40G,应该如何对Mysql数据库进行备份和恢复?请写出三种备份方案,并标注你的最优方案。

答案:

1)mysqldump最常用的mysql备份工具,支持myisam或innodb引擎,备份出来的数据是一个sql文件,它不仅要含有创建表的sql语句,还要包含表中每一条数据的插入sql语句。不管是备份还是恢复,效率都比较低,会锁表,如果数据量不大,使用mysqldump是很方便的。

2)xtrabackup 默认只支持innodb引擎的数据,备份的时候相当于直接把mysql datadir里面的所有文件拷贝一份,恢复也是直接把拷贝的文件放回去。所以,使用xtrabackup备份或者恢复速度都很快。它的变种工具innobackupex是对xtrabackup封装的perl脚本,提供了myisam表备份的能力。(能进行整库和数据表备份)。当数据量较大时,适合使用innobackupex来备份,效率很快。所以,本题中40G数据,适合使用这个工具。

3)binlog 就是大家熟知的主从了,它相当于是实时备份,在高可用架构中,通常使用主从或者主主,当一台宕机,另外一台可以马上替上去,数据可能会有少量丢失,但问题不大,我们可以通过查看binlog日志完全恢复。另外,做增量备份时,也可以只备份binlog文件,恢复时通过binlog文件可以恢复到指定某一时刻的数据状态。打开binlog意味着需要消耗额外的磁盘I/O资源。

 

14、在开启iptables 防火墙的情况下,防火墙规则配置默认拒绝所有,请将192.168.0.150的3306端口映射到公网58.206.99.105的1056端口,能够正常访问数据库,写下详细的规则。

答案:

iptables -t nat -I PREROUTING -d 58.206.99.105 -p tcp --dport 1056 -j DNAT --to 192.168.0.150:3306

iptables  -t filter  -I FORWARD -d 58.206.99.105  -j ACCEPT

iptables  -t filter  -I FORWARD -s 192.168.0.150  -j ACCEPT

posted @ 2017-07-28 17:15  静醉丶那份默念  阅读(277)  评论(0)    收藏  举报