前段时间网上流传有很多Linux运维的面试题,豪鹫也看了一些,但很多都没有附答案,最近工作比较空闲,利用这三年的运维经验,做做题目,当是巩固一下知识,如答案有误或者各位有更好的答案,欢迎点评。这里当然有小部分答案是网上整理过来的, 请原作者见谅,此作为引用。
以下是面试题,蓝色内容为豪鹫的回答:(未完待续……)
上海实战面试经历----Linux 系统/运维面试总结
同学在上海某网络公司面试题:
1、LINUX系统软件安装和卸载的常见方法
答:A.rpm包卸载:rpm -e XXX.rpm (如果想忽略依赖,可加上--deps)
B.yum remove xxx.rpm 这种方法非常不建议使用,卸载过程会将待卸载的软件包所依赖的软件包一并卸载掉,很容易造成系统缺少某些包而崩溃等问题
C.源码包卸载:cd命令进入编译后的软件目录,即安装时的目录,执行make uninstall命令即可;或者直接删除安装目录
2、Windows和LINUX常用的远程连接工具有那些
答:命令远程连接工具:Xshell、SecureCRT、Putty、SSH Secure Shell Client等
图形远程连接工具:xmanager(需安装配置服务并打开177端口)、VNC-Viewer(linux需安装vncserver)、windows自带的远程桌面(linux需安装xrdp和vnc)
3、如何修改LINUX的IP地址、网关和主机名
答:A、修改IP地址、网关:编辑/etc/sysconfig/network-scripts/ifcfg-eth0,修改里面IPADDR和GATEWAY内容,没有这两行,则添加即可,添加时确保BOOTPROTO=static,静态地址,如IPADDR=192.168.1.100 GATEWAY=192.168.1.1
B、修改主机名称:编辑/etc/sysconfig/network,修改里面的HOSTNAME内容,如设置主机名称为mysql,则:HOSTNAME=mysql即可;
4、编写脚本实现以下功能;
每天早上5点开始做备份
要备份的是/var/mylog里所有文件和目录可以压缩进行备份
备份可以保存到别一台器上192、168、1、2 FTP帐号 aaa 密码 bbb
要示每天的备份文件要带有当天的日期标记
答:
[[email protected] ~]#cat /root/mylogbak.sh
#!/bin/bash
#scripts for dirbakup and upload to ftp server.
#author by haojiu
#create by
bakdir=mylog
date=`date +%F`
cd /var
tar zcf ${bakdir}_${date}.tar.gz ${bakdir}
sleep 1
ftp -n <<- EOF
open 192.168.142.129 #远程ftp服务器IP
user aaa bbb
put mylog_*.tar.gz
bye
EOF
rm -rf mylog_*.tar.gz #这步之前可以做一个判断,判断文件上传成功再执行rm,留给各位发挥吧。
添加crontab:
crontab -l
00 05 * * * /bin/bash /root/mylogbak.sh #每天早上5点开始执行备份脚本
5、IPTABLES相关的命令
(豪鹫不熟悉iptables,这里请网友补充,具体问题还要具体分析)
6、mysql相关的题
新安装MYSQL后怎样提升MYSQL的安全级别
答:A.修改mysql默认端口
B.linux下可以通过iptables来限制访问mysql端口的IP地址
C.对所有用户设置较复杂密码并严格指定对应账号的访问IP(可在mysql库中user表中指定用户的访问可访问IP地址)
D.root特权账号的处理(建议给root账号设置强密码,并指定只允许本地登录)
E.开启二进制查询日志和慢查询日志
F.mysql安装目录及数据存储目录权限控制:给mysql安装目录读取权限,给mysql日志和数据所在目录读取和写入权限
G.删除无用mysql账号和删除无用的数据库(安装好的mysql默认会有个test库,可将其删除)
MYSQL的主从原理,怎么配置文件
答: 整体上来说,复制有3个步骤:
A.master将改变记录到二进制日志(binary log)中(这些记录叫做二进制日志事件,binary log events);
B.slave将master的binary log events拷贝到它的中继日志(relay log);
C.slave重做中继日志中的事件,将改变反映它自己的数据。
Mysql复制的基本原理过程如下:
(1)Slave上面的IO线程连接上Master,并请求从指定日志文件的指定位置(或者从最开始的日志)之后的日志内容;
(2)Master接收到来自Slave的IO线程的请求后,通过负责复制的IO线程根据请求信息读取指定日志指定位置之后的日志信息,返回给Slave端的IO线程。返回信息中除了日志所包含的信息之外,还包括本次返回的信息在Master端binary log文件的名称以及在Binary log中的位置;
(3)Slave的IO线程收到信息后,将接收到的日志内容依次写入到Slave端的RelayLog文件(mysql-relay-lin.xxxxx)的最末端,并将读取到的Master端的bin-log的文件名和位置记录到master-info文件中,以便在下一次读取的时候能够清楚的告诉master“我需要从某个bin-log的哪个位置开始往后的日志内容,请发给我”
(4)Slave的SQL线程检测到Relay Log中新增加了内容后,会马上解析该Log文件中的内容成为在Master端真实执行时候的那些可执行的查询或操作语句,并在自身执行那些查询或操作语句,这样,实际上就是在master端和Slave端执行了同样的查询或操作语句,所以两端的数据是完全一样的。
补充:mysql主从复制的优点————
<1> 如果主服务器出现问题, 可以快速切换到从服务器提供的服务;
<2> 可以在从服务器上执行查询操作, 降低主服务器的访问压力;
<3> 可以在从服务器上执行备份, 以避免备份期间影响主服务器的服务。
为MYSQL添加一个用户
mysql> grant select,insert,update,delete on book.* to [email protected] identified by "abc"; #增加test2用户,密码为abc。并只能在localhost这台主机上登录,并且只能访问book这个库中的表,具有查询,插入,更新,删除权限;
语法:mysql> GRANT <权限> ON <库>.<表> TO ‘用户‘@‘主机名‘ identified by "密码";
7、WINDOWNS相关的问题
你是否对WINDOWNS系统打过补丁,如果有100台你会怎么做
答:(题主是一个不专业的MCSE,记得在win2003中,有发布指派这个概念的,请各位网友补充)在域环境中,应该是将一台服务器作为域控补丁的update服务器,利用“发布与指派”的功能,将补丁批量更新到内网其他服务器;
WINDOWNS下怎么为MYSQL做定时完全备份
答:批处理+计划任务+ftp上传至远程服务器
在没有硬件防火墙的情况下,怎样提高WINDOS系统安全
答:用ISA防火墙?
同学面试大智慧试题
1、显示/test目录下的所有目录
答:豪鹫这里提供4种方法:
ls -d */
find . -type d -maxdepth 1 (如果不加-maxdepth 参数,将会列出无穷多的子目录。)
ls -F | grep ‘/$‘
ls -l | grep ‘^d‘|awk ‘{print $9}‘
2、将文件/etc/a 下中除了 b文件外的所有文件压缩打包放到/home/a下,名字为a.gz
答:tar --exclude /etc/a/b -zPcvf /home/a/a.gz /etc/a (不加P选项会提示:『tar: Removing leading `/‘ from member names』)
验证:
[[email protected] a]# tar tPvf /home/a/a.gz (忽略掉b文件)
drwxr-xr-x root/root 0 2015-08-21 10:15 /etc/a/
-rw-r--r-- root/root 0 2015-08-21 10:15 /etc/a/d
-rw-r--r-- root/root 0 2015-08-21 10:15 /etc/a/f
-rw-r--r-- root/root 0 2015-08-21 10:15 /etc/a/c
-rw-r--r-- root/root 0 2015-08-21 10:15 /etc/a/e
3、给一个脚本赋予执行权限的命令及选项
答:chmod +x a.sh
4、umask 022代表什么意思
答:新建文件夹或文件的权限是由所谓基本码减去称之为umask的屏蔽位得到的。
按照规定:文件夹的基本码是rwxrwxrwx(777),文件的基本码是rw-rw-rw-(666)
因此新建文件夹是777-022=755(rwxr-xr-x),新建文件是666-022=644(rw-r--r--)。
综上,umask 022表示默认创建新文件权限为755 也就是 rxwr-xr-x(所有者全部权限,属组读写,其它人读写)
5、如何查看某进程所打开的所有文件
答:取出该进程的进程号,然后用lsof -p pid查看打开的所有文件。(这里以crond进程为例)
[[email protected] a]# ps -ef |grep crond|grep -v grep |awk ‘{print $2}‘ #取出进程号
2550
[[email protected] a]# lsof -p 2550 #查看该进程打开的所有文件
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
crond 2550 root cwd DIR 8,2 4096 2 /
crond 2550 root rtd DIR 8,2 4096 2 /
crond 2550 root txt REG 8,2 64096 820728 /usr/sbin/crond
crond 2550 root mem REG 8,2 65928 524319 /lib64/libnss_files-2.12.so
crond 2550 root mem REG 8,2 99158576 788202 /usr/lib/locale/locale-archive
crond 2550 root mem REG 8,2 472064 554920 /lib64/libfreebl3.so
crond 2550 root mem REG 8,2 43392 554921 /lib64/libcrypt-2.12.so
crond 2550 root mem REG 8,2 1926800 554903 /lib64/libc-2.12.so
crond 2550 root mem REG 8,2 115536 554937 /lib64/libaudit.so.1.0.0
crond 2550 root mem REG 8,2 22536 554909 /lib64/libdl-2.12.so
crond 2550 root mem REG 8,2 58480 554938 /lib64/libpam.so.0.82.2
crond 2550 root mem REG 8,2 124624 554913 /lib64/libselinux.so.1
crond 2550 root mem REG 8,2 156928 554899 /lib64/ld-2.12.so
crond 2550 root 0u CHR 1,3 0t0 4160 /dev/null
crond 2550 root 1u CHR 1,3 0t0 4160 /dev/null
crond 2550 root 2u CHR 1,3 0t0 4160 /dev/null
crond 2550 root 3u REG 8,2 5 1084973 /var/run/crond.pid
crond 2550 root 4u unix 0xffff88003b3949c0 0t0 13870 socket
crond 2550 root 5r DIR 0,10 0 1 inotify
6、获取eth0网卡上80端口的数据包信息
答:[[email protected] ~]# tcpdump -i eth0 port 80
7、删除 /a/b下的所有文件及目录
答:[[email protected] ~]# rm -rf /a/b/*
8、常用的网络管理工具(5种以上)
答:Windows下有:ipcofnig(/all,/renew,/release),ping,tracert,nslookup……
Linux下有:ifconfig,ping,tracerroute,dig,nslookup……
9、ftp、https、smtp、pops、ssh的端口号
答:ftp(20和21)、https(443)、smtp(25)、pops(110)、ssh(22)
10、如何在windows server 2003/2008上开启支持内存3-4G
答:豪鹫没做过,这里提供网上的做法: 在我的电脑上单击鼠标右键,选择属性,点击“高级”标签,点击【启动和故障恢复】下的“设置”按钮,点击“编辑”按钮,将Boot.ini文件的最后一行后面添加一个开关 “/PAE”(不带引号),保存后重新启动机器即可。
11、请用iptables控制来自192.168.1.2主机的80端口请求
答:iptables -A INPUT -p tcp -s 192.168.1.2 --dport 80 -j ACCEPT (允许来自192.168.1.2这台主机访问80端口)
12、请用shell脚本创建一个组class、一组用户,用户名为stdX X从01-30,并归属class组
答:脚本如下
[[email protected] ~]# cat adduser.sh
#!/bin/bash
#script for adduser.
#create by haojiu
#2015-x-x
groupadd class
user=std
for i in {01..30}
do
useradd -G class ${user}$i
done
13、在mysql客户端查询工具中,如何获取当前的所有连接进程信息
答:mysql> show full processlist;
14、如何删除已满的数据库日志信息
答:在my.cnf中的[mysqld]段下面加入:expire-logs-days=7(设置自动清除7天钱的logs),重启mysql;
或者登录进mysql,执行:purge binary logs to ‘mysql-bin.000003‘; #删除bin-log(删除mysql-bin.000003之前的而没有包含mysql-bin.000003)
如果是mysql主从环境的,删除日志,语句格式如下:
PURGE {MASTER | BINARY} LOGS TO ‘log_name’
PURGE {MASTER | BINARY} LOGS BEFORE ‘date’
上海某证券公司:
- Linux开机流程
答:过程如下:
<1>开启电源,加载BIOS————当你按下电源按钮时,服务器会检测系统外围关键设备(如:CPU、内存、显卡、I/O、键盘鼠标等)是否正常,加载BIOS信息,因为BIOS中包含了CPU的相关信息,设备启动顺序信息,硬盘信息,内存信息,时钟信息等等,加载之后,服务器知道应该去读取哪个硬件设备了。
<2>读取MBR————硬盘上第0磁道第一个扇区被称为MBR(Master Boot Record,主引导记录),大小是512字节,存放了预启动信息和分区表信息
<3>Boot Loader————Boot Loader就是在操作系统内核运行之前运行的一段小程序,通过这段小程序,可以初始化硬件设备,建立内存空间的映射图,从而将系统的软硬件环境带到一个合适的状态,以便为最终调用操作系统内核做好一切准备。Boot Loader有若干种,其中以Grub、Lilo最为常见,以Grub为例,系统读取内存中的grub配置信息(centos 6.x是grub.conf),并按照此配置信息来启动不同的操作系统。
<4>加载内核————根据grub设定的内核映像所在的路径,系统读取内存映像,并进行解压缩操作,此时屏幕一般会输出“Uncompressing linux”的提示,当解压缩内核完成后,屏幕输出“OK,booting the kernel”。
<5>用户层init依据inittab文件来设定运行等级————内核被加载后,第一个运行的程序便是/sbin/init,该文件会读取/etc/inittb文件,并依据此文件来进行初始化工作。一般情况下,要么是等级3(命令行界面),要么是等级5(图形化界面)。
<6>init进程执行rc.sysinit————在设定了运行等级之后,Linux系统执行的第一个用户层文件就是/etc/rc.d/sysinit脚本程序,它的工作包括设定PATH、设定网络配置、启动swap分区、设定/proc等等。
<7>启动内核模块————具体是依据/etc/modules.conf文件或/etc/modulefiles(centos 6.x)目录下的文件来装载内核模块。
<8>执行不同运行级别的脚本程序————根据运行级别的不同,系统会运行rc0.d到rc6.d中相应的脚本程序来完成相应的初始化工作和启动相应的服务。
<9>执行/etc/rc.d/rc.local————rc.local就是在一切初始化工作后,linux留给用户进行个性化的地方,可以把你想设置和启动的东西放到这里。
<10>执行/bin/login程序,进入登录状态————此时,系统哥已经进入到等待用户输入username和password的时候了。
2.TCP三次握手,四次挥手
答:在TCP/IP协议中,TCP协议提供可靠的连接服务,采用三次握手建立一个连接。
说明:SYN(synchronous建立联机) ACK(acknowledgement 确认) PSH(push传送) FIN(finish结束) RST(reset重置) URG(urgent紧急)
Sequence number(顺序号码) Acknowledge number(确认号码)
第一次握手————建立连接时,客户端发送syn包(syn=j)到服务器,并进入syn_send状态,等待服务器确认;
第二次握手————服务器收到syn包,必须确认客户的syn(ack=j+1),同时自己也发送一个syn包(syn=k),即syn+ack包,此时服务器进入syn_recv状态;
第三次握手————客户端收到服务器的syn+ack包,向服务器发送确认包ack(ack=k+1),此包发送完毕,客户端和服务器进入established状态,完成三次握手,客户端与服务器开始传送数据。
第一次挥手————客户端发送一个FIN,用来关闭客户端到服务器的数据传送,客户端进入FIN_WAIT_1状态;
第二次挥手————服务器收到FIN后,发送一个ACK包给客户端,确认序号为收到序号+1(与SYN相同,一个FIN占用一个序号),服务器进入CLOSE_WAIT状态;
第三次挥手————服务器发送一个FIN,用来关闭服务器到客户端的数据传送,服务器进入LAST_ACK状态;
第四次挥手————客户端收到FIN后,客户端进入TIME_WAIT状态,接着发送一个ACK给服务器,确认序号为收到序号+1,服务器进入CLOSED状态,完成四次挥手。
3.如何将本地80端口的请求转发到8080端口,当前主机IP为192.168.16.1,其中本地网卡eth0
答:iptables -t nat -A PREROUTING -i eth0 -d 192.168.16.1 -p tcp -m tcp –dport 80 -j REDIRECT –to-ports 8080
4.什么是NAT,常见分为那几种,DNAT与SNAT有什么不同,应用事例有那些?
答:NAT(Network Address Translation,网络地址转换)是将IP数据包头中的IP地址转换为另一个IP地址的过程。分为DNAT (目的网络地址转换)和SNAT(源网络地址转换)……
5.包过滤防火墙与代理应用防火墙有什么区别,能列举几种相应的产品吗?
答:包过滤防火墙是根据包头进行的过滤,并且是处于网络层的,根据包的源ip地址,目标ip地址,协议类型,端口号,进行过滤;代理应用防火墙工作在应用层,他使用代理服务器技术,将内网对外网的访问,变为防火墙对外网的访问,可以对包的内容进行分辨,从而过滤。
代理应用防火墙:天融信GFW4000
包过滤防火墙:华为 NE 16E
6.iptables是否支持time时间控制用户行为,如有请写出具体操作步骤。
答:iptables+crontab。
7.说出你知道的几种linux/unix发行版本。
答: Linux:Redhat、CentOS、Fedora、SuSE、Gentoo、Debian、Ubuntu
Unix:FreeBSD、Solaris、AIX、HP
8.列出linux常见打包工具并写相应解压缩参数(至少三种)
答:tar -zxf 、 gzip -d 、 unzip 、 bzip2 -d 、 unrar
9.计划每星期天早8点服务器定时发送一封内容为:test的邮件。发信人:[email protected] 收信人:[email protected],如何实现?
答:豪鹫习惯用sendEmail工具发送邮件
安装:
tar zxf sendEmail-v1.56.tar.gz
cd sendEmail-v1.55
cp sendEmail /usr/local/bin
chmod 0755 /usr/local/bin/sendEmail
chown nagios:nagios /usr/local/bin/sendEmail
/usr/local/bin/sendEmail -f [email protected] -t [email protected] -s smtp.163.com -u "this is test" -xu username -xp password -m test
选项参数说明:
-f 表示发送者的邮箱
-t 表示接收者的邮箱
-s 表示SMTP服务器的域名或者ip
-u 表示邮件的主题
-xu 表示SMTP验证的用户名
-xp 表示SMTP验证的密码(注意,这个密码貌似有限制,例如我用f!2dafaffad就不能被正确识别)
-m 表示邮件的内容
-cc 表示抄送
-bcc 表示暗抄送
-o message-file=mail.html 以mail.html文件的内容作为邮件内容发送
-o message-content-type=html 邮件内容的格式,html表示它是html格式
-o message-charset=utf8 邮件内容编码</pre>
-a /data/site/a.rar 发送ttlsa.rar这个文件, 作为邮件附件
10.当用户在浏览器当中输入一个网站,说说计算机对dns解释经过那些流程?注:本机跟本地dns还没有缓存。
答:
1、当客户机在浏览器输入网站地址,并回车,客户机发出查询请求,首先在本地计算机的缓存中查找。如果在本地无法获得查询信息,则将查询请求发给DNS服务器。
2、首先客户机将域名查询请求发送到本地DNS服务器,当本地DNS服务器接到查询后,首先在该服务器管理的区域的记录中查找,如果找到该记录,则利用此记录进行解析;如果没有区域信息可以满足查询要求,服务器在本地的缓存中查找。
3、如果本地服务器不能在本地找到客户机查询的信息,将客户机请求发送到根域名DNS服务器。
4、根域名服务器负责解析客户机请求的根域部分,它将包含下一级域名信息的DNS服务器地址返回给客户机的DNS服务器地址。
5、客户机的DNS服务器利用根域名服务器解析的地址访问下一级DNS服务器,得到再下一级域我的DNS服务器地址。
6、按照上述递归方法逐级接近查询目标,最后在有目标域名的DNS服务器上找到相应IP地址信息。
7、客户机的本地DNS服务器将递归查询结果返回客户机。
8、客户机利用从本地DNS服务器查询得到的IP访问目标主机,即想访问的网站,也就完成了一个解析过程。
11.我们都知道,dns既采用了tcp协议,又采用了udp协议,什么时候采用tcp协议?什么时候采用udp协议?为什么要这么设计?
答:
A.从数据包大小上分:UDP的最大包长度是65507个字节,相应dns查询的时候数据包长度超过512个字节,这时解析器通常使用TCP重发原来的请求,因为tcp协议主要用于DNS服务器之间传递较大块的信息,例如同步数据库,UDP用户普通的dns查询。
B.从协议本身分:大部分的情况下使用UDP协议,大家都知道UDP协议是一种不可靠的协议,dns不像其它的使用UDP的Internet应用 (如:TFTP,BOOTP和SNMP等),大部分集中在局域网,dns查询和响应需要经过广域网,分组丢失和往返时间的不确定性在广域网比局域网上更 大,这就要求dns客户端需要好的重传和超时算法,这时候使用TCP。
这样设计是因为传输数据的尺寸比较大,并且对数据的精确要求比较高,采用tcp的方式可以保证数据的完整性和正确性。
12.一个EXT3的文件分区,当使用touch test.file命令创建一个新文件时报错,报错的信息是提示磁盘已满,但是采用df -h命令查看磁盘大小时,只使用了,60%的磁盘空间,为什么会出现这个情况,说说你的理由。
答:磁盘配额或者inode耗尽。
13.我们都知道FTP协议有两种工作模式,说说它们的大概的一个工作流程?
14.编写个shell脚本将当前目录下大于100K的文件转移到/tmp目录下
答:豪鹫提供两种方法————
A.使用for循环结合awk去读取目录下列出的文件大小,大于100k的文件mv到tmp下;
B.使用find命令;
具体如下:
法1:for结合awk
[[email protected] file]# cat mvfile.sh
#!/bin/bash
#script for move currently dir to /tmp which size is bigger than 100k;
#create by haojiu;
#date 2015-x-x
for file in `ls -l | sed -e ‘1d‘ | awk ‘$5 > 102400 {print$NF}‘`;
do
mv $file /tmp/
done
法2:find命令
[[email protected] file]# find ./ -type f -size +100k -exec mv {} /tmp/ \;
15.apache有几种工作模式,分别介绍下其特点,并说明什么情况下采用不同的工作模式?
答:apache主要有两种工作模式:prefork(预派生,默认安装模式)和worker(支持混合的多线程多进程的多路处理模块,可以在编译的时候加参数–with-mpm- worker选择工作模式)
prefork的特点:
1、prefork MPM 使用多个子进程,每个子进程只有一个线程。每个进程在某个确定的时间只能维持一个连接。这种模式可以不必在请求到来时再产生新的进程,从而减小了系统开销。
2、可以防止意外的内存泄漏,但这种模式消耗的内存比较大;
3、在服务器负载下降的时候会自动减少子进程数
worker的特点:
worker MPM 使用多个子进程,每个子进程有多个线程。每个线程在某个确定的时间只能维持一个连接。通常来说,在一个高流量的HTTP服务器上,Worker MPM是个比较好的选择,因为Worker MPM的内存使用比Prefork MPM要低得多。但worker MPM也由不完善的地方,假如一个线程崩溃,整个进程就会连同其任何线程一起"死掉".由于线程共享内存空间,所以一个程式在运行时必须被系统识别为"每 个线程都是安全的"。
16.编写shell脚本获取本机的IP/netmask。
答:豪鹫提供以下几种获取方法,仅供参考;
法1:直接通过截取ifconfig命令运行结果
[[email protected] ~]# cat getIP.sh
#!/bin/bash
#This script using for get IP and NETMASK.
#create by haijiu
#date 2015-x-x
#获取IP和NETMASK也可以有以下几种方法,任选其一即可;
#IP=`ifconfig eth0|grep -w ‘inet‘|sed ‘s/^.*addr://g‘|sed ‘s/ Bcast.*$//g‘`
#NETMASK=`ifconfig eth0 |grep -w ‘inet‘|sed ‘s/^.*Mask://g‘`
#IP=`ifconfig eth0|grep ‘inet addr‘|cut -d ":" -f2|cut -d " " -f1`
#NETMASK=`ifconfig eth0|grep ‘inet addr‘|cut -d ":" -f4`
IP=`ifconfig eth0 |grep "inet addr"|awk -F: ‘{print $2}‘|awk ‘{print $1}‘`
NETMASK=`ifconfig eth0 |grep "inet addr"|awk -F: ‘{print $4}‘|awk ‘{print $1}‘`
echo "$IP/$NETMASK"
法2:通过ifconfig-eth0配置文件获取(此种方法适用于有固定的静态IP地址,不过通常服务器都是有固定IP地址的~_~)
[[email protected] ~]# cat getIP.sh
#!/bin/bash
#This script using for get IP and NETMASK.
#create by haijiu
#date 2015-x-x
#此种方法适用于有固定的静态IP地址
#同样豪鹫这里也提供两种获取方法,仅供参考;
file=”/etc/sysconfig/network-scripts/ifcfg-eth0″
if [ -f $file ] ;then
#IP=`grep "IPADDR" $file|awk -F"=" ‘{ print $2 }‘`
#NETMASK=`grep "NETMASK" $file|awk -F"=" ‘{ print $2 }‘`
#IP=`grep IPADDR $file|cut -d= -f2`
#NETMASK=`grep NETMASK $file|cut -d= -f2`
IP=`cat $file|grep IPADDR|cut -d= -f2`
NETMASK=`cat $file|grep NETMASK|cut -d= -f2`
echo "$IP/$NETMASK"
exit 1
fi
17.简述DDOS攻击的原理,有没有解决办法?有,如何解决?
答:分布式服务拒绝攻击就是用一台主服务器来控制N台肉鸡对目标服务器进行合理的资源请求,导致服务器资源耗尽而不能进行正常的服务。
几种流行的DDOS攻击方式:SYN/ACK FLOOD攻击、TCP全连接攻击、CC攻击
一个简单的测试: 首先是网站如果打不开的话,可以尝试着用3389连接一下服务器看看,然后还可以用PING命令来测试,再一种方式就是用telnet来登录80端口看看,看会不会出现黑屏。如果这些方式测试都连接不上的话,那就说明受到DDOS攻击了。
然后如果除了80端口之外的其他端口连接都正常,PING命令测试也正常,但就是80端口访问不了,然后看看IIS是否正常,可以把80端口改成其他端口测试,如果可以正常访问,那就说明很可能受到CC攻击。
防御DDOS攻击:
<1>要有充足的网络带宽和稳定安全的机房:选择口碑好、服务好、安全防护好点的机房,网络带宽直接决定了能抗受攻击的能力。
<2>软硬设备的防护:硬件DDOS防火墙黑洞、冰盾都不错,软件如web服务器都有相应的ddos防护模块,iptables,做单IP的并发限制,流量限制,syn及部分攻击限制。
<3>网站架构优化,避免单点提供服务,集群,冗余,负载均衡、缓存技术的架设。
<4>服务器系统自身的优化及安全参数调配
<5>采用高性能的网络设备
18.简述linux下编译内核的意义与步骤,有做过LFS吗?有,请简述过程,注意哪些,意义。
答:编译内核的意义在于使系统更加精简化,更为适合自身业务提供服务,减去很多不必要的预安装功能,使系统能更稳定提供服务;
内核编译的一般步骤:
1、准备工作:备份相关文件,下载并解压Linux新内核;
2、清除从前编译内核时残留的.o文件和不必要的关联;
3、配置内核,修改相关参数;
4、正确设置关联文件
5、make clean
6、编译内核
7、编译模块
8、安装模块
9、使用新内核
10、重新生成ram磁盘
11、重启服务器
19.你的5W,并发是如何做的,架构是什么?LVS,采用什么模式?这个模式的优点是什么? 采用的什么调度方法?为什么采用这个调度方法?你还知道哪些?前端调度有几台服务器,单台机器并发多少?你是如何优化系统的?做了那些配置?
答:一般来讲,lvs架构顶住5w并发是没问题的。具体看公司的服务器架构,一般使用最多的是DR模式,其优点是:调度器只是分发请求,应答包通过单独的路由方法返回给客户端,与TUN模式相比,DR模式不需要隧道结构,
20.raid原理
答:raid中文是“独立冗余磁盘阵列”,它的工作原理:RAID按照实现原理的不同分为不同的级别,不同的级别之间工作模式是有区别的。整个的RAID结构是一些磁盘结构,通过对磁盘进行组合达到提高效率,减少错误的目的。
RAID 0————无差错控制的带区组,要实现RAID0必须要有两个以上硬盘驱动器,RAID0实现了带区组,数据并不是保存在一个硬盘上,而是分成数据块保存在不同驱动器上。在所有的级别中,RAID0的速度是最快的。但是RAID0没有冗余功能的,如果一个磁盘(物理)损坏,则所有的数据都无法使用。
RAID 1————镜象结构,RAID 1的数据安全性在所有的RAID级别上来说是最好的。但是其磁盘的利用率却只有50%,是所有RAID级别中最低的。
RAID5————分布式奇偶校验的独立磁盘结构,RAID5的读出效率很高,写入效率一般,块式的集体访问效率不错,允许单个磁盘出错,,任何一个硬盘损坏,都可以根据其它硬盘上的校验位来重建损坏的数据。硬盘的利用率为n-1。 但是它对数据传输的并行性解决不好,而且控制器的设计也相当困难。
RAID10————高可靠性与高效磁盘结构,这种结构无非是一个带区结构加一个镜象结构,因为两种结构各有优缺点,因此可以相互补充,达到既高效又高速还可以的目的。大家可以结合两种结构的优点和缺点来理解这种新结构。这种新结构的价格高,可扩充性不好。主要用于容量不大,但要求速度和差错控制的数据库中。
21.如何查看占用80端口的进程,并清理该端口进程。
答:使用命令lsof -i:80查看占用80端口的进程,使用命令pkill该进程
或者直接使用命令:lsof -i:80|sed ‘1d‘|awk ‘{print $1}‘|xargs kill
22.你对什么数据库比较了解?oracle装过吗?什么版本?mysql,说说有那些引擎,对mysql优化怎么看?备份都是怎么备份的。主从复制,是实时的吗?有添加过10W条左右的数据测试过吗?还问了些mysql的基础问题。
答:豪鹫个人的情况,一个一个问题来:
A.平时用mysql比较稍微多些,oracle也用过,但也只是接触一些皮毛,因为有专门的DBA管理和权限控制的原因;
B.本地虚拟机和公司测试环境还是有安装过oracle,版本是Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - 64bit Production;
C.mysql的存储引擎有很多,常用的有四种存储引擎:MyISAM、InnoDB、MEMORY和MERGE,其中以MyISAM和InnoDB最为常见。
MyISAM:不支持事务,也不支持外键,尤其是访问速度快,对事务完整性没有要求或者以SELECT、INSERT为主的应用基本都可以使用这个引擎来创建表。
InnoDB:InnoDB给MySQL提供了具有提交,回滚和崩溃恢复能力的事务安全存储引擎。InnoDB锁定在行级并且也在SELECT语句提供一个Oracle风格一致的非锁定读。这些特色增加了多用户部署和性能。但是对比MyISAM的存储引擎,InnoDB写的处理效率差一些并且会占用更多的磁盘空间以及保留数据和索引。
MEMORY:memory使用存在内存中的内容来创建表。每个MEMORY表实际对应一个磁盘文件,格式是.frm。MEMORY类型的表访问非常快,因为它到数据是放在内存中的,并且默认使用HASH索引,但是一旦服务器关闭,表中的数据就会丢失,但表还会继续存在。
MERGE:merge存储引擎是一组MyISAM表的组合,这些MyISAM表结构必须完全相同,MERGE表中并没有数据,对MERGE类型的表可以进行查询、更新、删除的操作,这些操作实际上是对内部的MyISAM表进行操作。
补充:MyISAM存储引擎和InnoDB存储引擎的区别————MyISAM类型不支持事务处理等高级处理,而InnoDB类型支持。MyISAM类型的表强调的是性能,其执行数度比InnoDB类型更快,但是不提供事务支持,而InnoDB提供事务支持以及外部键等高级数据库功能。
两种类型最主要的差别就是Innodb支持事务处理与外键和行级锁。而MyISAM不支持.所以MyISAM往往就容易被人认为只适合在小项目中使用。作为使用MySQL的用户角度出发,Innodb和MyISAM都是比较喜欢的,如果数据库平台要达到需求:99.9%的稳定性,方便的扩展性和高可用性来说的话,MyISAM绝对是首选。而InnoDB的理想使用场合则是高并发,更新操作比较多的表。需要使用事务的表。对自动灾难恢复有要求的表。
D.MySQL优化:
E.Mysql备份:豪鹫的备份策略是每周日凌晨3点做全备,每天凌晨3点做增备,以防万一,我还保留9天内的binlog文件,备份好的文件在本地磁盘保留一份,同时通过ftp自动上传到远程的存储服务器上,然后再利用脚本监控Mysql的备份脚本是否正常工作。
F.主从复制:有主从复制(异步)、半同步复制、基于SSL复制,豪鹫采用的是异步的主从复制,异步复制的好处在于它比同步复制快。
23.cacti和nagios各有什么优势,你用的cacti版本号多少?你都监控过哪些服务?报警是如何实现的?
答:cacti比较侧重于流量方面的监控,画图也比较美观,提供各种插件有针对性地进行监控,豪鹫见过有很多机房也采用cacti监控流量;而nagios则比较侧重于监控网络服务,提供接口可自定义脚本插件监控自定义的服务等;豪鹫最开始使用cacti的版本是0.8.7,后来升级到0.8.7g,再后来使用0.8.8a和0.8.8b版本;监控的对象包括:主机资源(CPU、内存、磁盘使用率、网卡流量、web服务、db状态、tcp状态以及其他根据业务自定义监控等),报警均使用139邮箱报警,绑定到手机(不过手机号码最好是移动的号码,如果是非移动号码,是可以注册开通139邮箱,但不能绑定到手机)。
24.你对系统安全,有什么想法?常见攻击有哪些?DDos攻击,一般你会怎么处理。对于,系统自身安全,你有那些见解。
答:
25.你平时用的最多的Linux发行版是什么?
答:豪鹫用过Solaris系统,Centos5.x/6.x、redhat5.x/6.x、SUSE 11,当然还有其他系统,如:AIX,HP,FreeBSD,Fedora,Debian,Gentoo,Ubuntu……具体看个人。
这下面的是某个企业发的面试题
1你常上的相关技术站有哪些?
2简述你所理解运维工程师的主要职责?
3你管理过的服务器数量级?
4描述一次你印象深刻的服务器运维经历。具体遇到了什么问题,你又是如何处理解决的?《越来越具体,越来越深入,很少混过去的》
5有一台服务器出现安全问题,你会采取什么样的方法处理?说出你的诊断处理思路。
6有多台服务器需部署相同应用文件,文件会持续更新,你用什么方式实现不同服务器间的文件同步。
7某一台服务器部署多个Web站点,其中有一个w3wp的CPU占用达到100%,如何找出有问题的Web站点?
8你眼中的上海是怎样的?谈谈你对上海的理解。对于未来发展你如何打算?
9是否有以下相关经验?如有请简要说明掌握情况。
a、Squid相关经验
b、Nginx、Lighttpd等
c、Memcached
d、负载均衡
e、分布式文件处理
f、Email Server
雷傲普文化传播有限公司
1.DNS使用的端口号和协议,简单描述一下DNS正向解析和反向解析的工作原理和作用还有应用场景?
2.编写IPTABLES使用内网某台机器的80端口可以在公网访问,假设公网IP为10.10.1.1 ,实现192.168.1.0/32段的NAT.
3.举出三个以上的主流WEB服务器,并简述他们的特性和优缺点不限操作系统?
Apache 源代码开放可以欲行在unix,windowns,linux平台上 ,可移植性,而且模块很是丰富缺点:性能,速度上不及其他轻量级的web服务器,但是也是重量级产品,所消耗的内存,cpu也比其他的要高
Nginx 源代码开放发高性能的http和反向代理服务器,在高并发的情况下,nginx是apache不错的替代品,他能够支持高达50000个并发连接响应,内存,cpu等系统资源消耗也是很低的。缺点,支持模块比较少吧,相对没有apache稳定,支持动态页面不是很强。
Tomcat 对高并发跟静态页面处理还不是很强
Microsoft IIS 配置很简单,只能运行在windows。Linux上,如果要使用还购买商业windows server操作系统。
4,举出两个主流代理服务器,简述工作模式和优缺点?
5,举出两个负载均衡的软件,并简述工作模式和优缺点?
6,IE,FF,chrome游览器最大并发请求数是多少?,
7,简单举例一下linux和windows系统今年都有哪些漏洞?
8,mysql数据库备份都有哪一些,部署一个高可用mysql应用 环境,并说明他的高可用性?
9,什么是裸设备,他的好处是什么?,mysql支持裸设备吗?
10,如果给你一个100g的INNODB类型数据库,你会用什么备份方案来做备份。
11,写一个简单的shell脚本,脚本运行时让CTRL+C无法中断的该shell脚本?
12,如何快速编译单一的内核模块?
13,如何动态增加apache和PHP模块?
14、说出linux开机流程?
15、具体说说cacti/nagios 的安装过程?
16、cacti与nagios的区别?cacti如何监控mysql ?
17、mysql主从复制如何实现?
18、raid 0 与raid的区别?
19、DNS解析详细过程?从主机访问域名(三家公司都问这个问题)让写出来?
20、脚本会多少?掌握程度?sed awk 区别?
淘米和上海埃富梦科技,笔试题
1、如何检测某个端口所占用的进程
2、对于linux主机的cpu负载使用,什么情况下user的比例升高,什么情况下system的比例升高,请联系实际举例。
3、在不umount的情况下,如何重新设置mount的参数。
4、不小心在系统下执行了chmod -x/sbin/chmod 怎么办?
5、linux文件的权限位x对目录和文件有何不同?
6、找出/taomee目录下的所有常规文件并设置权限644
7、如何查找某一文件被哪个进程打开?
8、新增一块存储设备,lvm操作的命令如何写
9、给主机host:172.16.0.2增加gateway10.0.0.1
10、socket和tcp访问mysql的区别?
二、shell
1、使用awk打印出 welcome to taomee
2、如何将一个文件中的taomee、******、peoplenet中的*内容进行替换成network(*的内容不同)
3、找出access.log中访问top 10的ip地址
4、打印1-100奇数
5、删除一个文件中行号为奇数的行
6、替换某一个文件的字符串
7、exec和souce区别
8、显示24小时前的内容,
9、linux的优化
10、iptables表和链
人事问题
(下面的都是每一个企业问的最多的问题,这些问题是我自己经历的,都是我自己的回答,仅供参考,每个人经历不一样,回答的时候一定要和写在网上的还有自己写的简历保持一致,他们好多都是把你投的简历下载下来,然后看着下载下来的简历问你问题)
1.先问问你写的工作经历,在以前公司主要做什么,是什么公司,多少人,主要负责什么,还有你写的项目经验,项目具体怎么实施的,(一定要明白原理性的东西,把他说出来就可以)
2.问完工作经历后,问你为什么辞职?。
我说因为以前的公司的工作接触到了linux。被linux的开源所吸引,对linux的开源产生了兴趣,但是靠自己去学有点吃力,就辞去工作在郑州找了一家培训机构培训RHCE
3.问为什么不在本地工作,来上海有什么规划?
4.谈谈你对运维工程师的理解
5、家庭情况,家庭有没有负担?
6、上海有没有同学,会不会在上海长期待下去?
7、薪水问题?
对于这个问题一般不要直接说4k 5k,填表的时候不用写具体数字,等技术人事面试通过后,他会问你具体。就说这个没有强行的要求,根据跟人能力及个人对技术的掌握程度一般说在3500-4500
面试的一些建议:
1、自我介绍三分钟。(教育经历,性格特长,所作项目)
介绍内容与个人简历一致
表述方式尽量口语化
要切中要害,
突出针对性,不要过多谈精通,不要说自己做过主管或者经理
善于利用开源软件满足企业不同的网络服务,突出个人脚本能力,不要主观说会多少脚本,可以谈自己写过什么脚本实现什么样子的功能,
不要抱怨任何东西,不要说学校或者企业老板不好,
技术术语描述的精确度,最后要说应聘目标岗位
不要说做过什么实验,做过什么就是做过什么,
对方不问,不要说自己的缺点
语气词,不要用语气词,
开场问题,各位面试官好
想法设法突出自己的自学能力,及英语能力(没有英语能力,不要乱说项目,用几台服务器构建了什么架构,实现了什么功能,客观用数字说话
运维,自信,语言流畅高建华
自我推销能力特别关键,
三个词描述自己的优点,三个词描述缺点(表达忧缺点,尽量描述性格特征)
有责任心,自学能力强,诚信
随和
接面试电话的时候问清楚公司名称,公司地点,
上网查对方公司基本信息,了解对方公司的主营业务,企业文化
仔细了解对方的岗位需求,了解对方公司的近几年发生的大事
电话面试注意语速和语调,保持自然,最后以礼貌结束,感谢给自己的电话面试机会,
期望成为对方公司一员,
面试的时候要提前十分钟到达,不要过早到达对方公司
面试问题常见问题要熟练掌握
通过google 官方文档,别人总结制定出适合企业的需要
五年的规划,五年内在运维工程师上作出一定的成就
对方要文档,不能给,熟悉实施过程
了解自己写的项目名称,几个人,实施过程,所用配置
缺点,太过随和,显得软弱
优点要简明扼要
朋友给对你评价,侧面表达你的与人处事,如,我的朋友说我比较有人缘,
或者我的朋友说我比较爱钻研
加班的看法,我的工作效率是高效的不会把工作拖到下班完成,如果工作
公司项目进度,或者公司需要,我也会乐意的加班
为什么离职,
公司有什么要问,可以问对方公司的发展计划,对新员工有没有什么培训
评价过去的公司,和以前公司老板员工相处很好,
不会的问题,可以说几天之内给出解决办法
抽象的角度去描述一个东西,专业,很专业是装出来的
心态要自信,不要过去谦虚