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

浙公网安备 33010602011771号