1、查询file1里面空行的所在行号
2、查询file1以abc结尾的行
3、打印出file1文件第1到第三行
二、如何将本地80端口的请求转发到8080端口,当前主机IP为192.168.2.1
三、crontab
在11月份内,每天的早上6点到12点中,每隔2小时执行一次/usr/bin/httpd.sh 怎么实现
四、编写个shell脚本将/usr/local/test 目录下大于100K的文件转移到/tmp目录下
五、raid原理
六、oracle数据库备份方式
七、如何查看占用端口8080的进程
八、apache有几种工作模式,分别介绍下其特点,并说明什么情况下采用不同的工作模式?
九、你使用过监控软件吗?说说其特点
十、你对现在运维工程师的理解和以及对其工作的认识
linux运维工程师面试题
linux 面试题
1. 解释top 命令和vmstat 命令
top 动态 vmstat静态
2. 请写出iptables 语句 iptables [-t 表名] -命令 -匹配 -j 动作/目标
1)本地80端口的请求转发到8080端口,当前主机IP 为192.168.2.1
iptables -t nat -A PREROUTING -d 192.168.2.1 -p tcp -dport 80 -j DNAT -to 192.168.2.1:8080
2)允许本机对外连接80端口(本机能连外界服务器为80)
iptables -A OUTPUT -p tcp –dport 80 -j ACCEPT
3)开放本机的3306端口
iptables -A INPUT -p tcp --dport 3306 -j ACCEPT
4)禁止外界ping 本服务器
iptables -A INPUT -p icmp -j DROP
5)防止SYN 攻击(轻量级预防)
iptables -A FORWARD -p tcp --syn -m limit --limit 1/s -j ACCEPT
iptables -A FORWARD -p tcp --tcp-flags SYN,ACK,FIN,RST RST -m limit --limit 1/s -j ACCEPT
3.mysql 高可用方案有哪些?mysql 备份方案有哪些?有什么优缺点?
4. 写出apache 2.x的两种工作模式,以及各自的工作原理。如何查看apache 当前支持的模块。并查看在哪种模式下工作。prefork 和worker
#apachectl -l
5.linux 基础问题
1)linux 怎么查看用户登陆日志
who
/var/log/wtmp
cat /var/log/secure
2)linux 中utmp ,wtmp ,lastlog ,messages 各文件的作用
有关当前登录用户的信息记录在文件utmp 中;======who命令
登录进入和退出纪录在文件wtmp 中;========w命令
最后一次登录文件可以用lastlog 命令察看;
messages======从syslog 中记录信息
3)列举你熟悉的服务器性能查看命令
查看磁盘 df -h
查看内存大小 free vmstat
查看cpu cat /proc/cpuinfo
只看cpu 数量grep "model name" /proc/cpuinfo | wc -l
查看系统内存 cat /proc/meminfo
查看每个进程的情况 cat /proc/5346/status 5347是pid
查看负载 w
查看系统整体状态 top
4)linux 服务器间怎么实现无密码登陆。列举操作步骤
有机器A[192.168.1.1],B[192.168.1.2]。现想A 通过ssh 免密码登录到B
第一步,在A 机下生成公钥/私钥对
ssh-keygen
直接三次回车,它将在~/下生成.ssh 目录,.ssh 下有id_rsa和id_rsa.pub
第二步,把A 机下的id_rsa.pub复制到B 机下
完成后还需要将id_rsa.pub内容追加到B 机的.ssh/authorized_keys文件里
scp ~/.ssh/id_rsa.pub root@192.168.1.2:~/id_rsa.pub
第三步、B 机把从A 机复制的id_rsa.pub添加到.ssh/authorzied_keys文件里
cat id_rsa.pub >> .ssh/authorized_keys
chmod 600 .ssh/authorized_keys
authorized_keys的权限必须是600。
第四步、验证A 机无密码登录B 机。
ssh root@192.168.1.2
6. 软件类问题
1)keepalived 和heartbeat 的优缺点,适用哪些场合
Keepalived使用的vrrp 协议方式,虚拟路由冗余协议 (Virtual Router Redundancy Protocol,简称VRRP) ; Heartbeat是基于主机或网络的服务的高可用方式;
keepalived的目的是模拟路由器的双机
heartbeat的目的是用户service 的双机
lvs的高可用建议用keepavlived
业务的高可用用heartbeat
2)LVS haproxy nginx各优缺点,适用哪些场合
3)apache nginx lighttpd 各优缺点,使用哪些场合
4)squid vamish各优缺点,适用哪些场合
5)memcache dredis各优缺点,适用哪些场合
6)介绍下LVS 负载模式和调度算法,nginx 负载均衡模式有哪几种算法
VS/NAT VS/TUN VS/DR
轮叫调度,加权轮叫,最少连接,加权最少连接,基于局部性的最少连接,带复制的基于局部性最少连接, 目标地址散列,源地址散列
nginx算法:
加权轮询(weighted round robin)
ip hash
fair
通用hash 、一致性hash
7. 设计一个PV 为2千万的网站架构
8. 网络知识部分 1
)简述OSI 参考模型的七个层次
2)简述tcp 协议的三次握手过程
TCP(Transmission Control Protocol) 传输控制协议
TCP是主机对主机层的传输控制协议,提供可靠的连接服务,采用三次握手确认建立一个连接:
位码即tcp 标志位, 有6种标示:SYN(synchronous建立联机) ACK(acknowledgement 确认) PSH(push传送)
FIN(finish结束) RST(reset重置) URG(urgent紧急)Sequence number(顺序号码) Acknowledge number(确认 号码)
第一次握手:主机A 发送位码为syn =1, 随机产生seq number=1234567的数据包到服务器,主机B 由SYN=1知道,A 要求建立联机;
第二次握手:主机B 收到请求后要确认联机信息,向A 发送ack number=(主机A 的seq+1),syn=1,ack=1,随机产生 seq=7654321的包
第三次握手:主机A 收到后检查ack number是否正确,即第一次发送的seq number+1,以及位码ack 是否为1,若正 确,主机A 会再发送ack number=(主机B 的seq+1),ack=1,主机B 收到后确认seq 值与ack=1则连接建 立成功。
完成三次握手,主机A 与主机B 开始传送数据。
3)一个主机IP 202.110.14.137,掩码 255.255.255.224,要求计算这个主机所在网络的网络地址和广播地址 http://zhidao.baidu.com/question/112562843.html
网络地址:
202.112.14.128
广播地址:
202.112.14.159
9. 信息安全部分
1)IDC 机房里发生ARP 攻击,在服务器上抓包,通过分析数据包内容会看到什么现象?如何防止此类攻击
1. 不断弹出“本机的XXX 段硬件地址与网络中的XXX 段地址冲突”的对话框。
2.计算机不能正常上网,出现网络中断的症状。
·在客户端使用arp 命令绑定网关的真实MAC 地址命令
·在交换机上做端口与MAC 地址的静态绑定。
·在路由器上做IP 地址与MAC 地址的静态绑定
·使用“ARP SERVER”按一定的时间间隔广播网段内所有主机的正确IP-MAC 映射表。
2)IDC 机房里一台服务器上运行游戏服务,现在连接不上,从安全角度分析原因
3)如何保证充值,计费数据库的安全
10. 脚本部分
1)从a.log 文件中提取包含“warning”或者“fatal”,同时不包含“IGNOR”的行,然后提取“:”分割的第五个字段 egrep 'WARNING|FATAL' a.log | egrep -v 'IGNOR' | awk -F ":" '{print $5}'
2)添加新组为class01,然后添加输入这个组的30个用户,用户名的形式为std01到std30
#!/bin/bash
groupadd class01
for ((i=1;i<>
do
if [$i -lt 10];then
username="$std0"$i
else
username="$std"$i
fi
useradd -G class01 $username
done
3)在每个月的第一天备份并压缩/etc目录下的所有内容,存放在/root/backup目录下,文件名为yymmdd_etc,shell程序filebach 存放在/usr/bin目录下
#!/bin/bash
filename=`date +%y%m%d`_etc.tar.gz ###``符号
cd /etc
tar -zcvf $filename *
mv $filename /root/backup/
#echo * * 1 * * root ./fileback.sh & >>/etc/crontab
11. 用shell 编程,判断文件是不是字符设备文件,如果是,将其拷贝到/dev目录下
#!/bin/bash
#1.sh
#判断一文件是不是字符或块设备文件,如果是将其拷贝到 /dev 目录下
#file executable: chmod 755 1.sh
PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:~/bin
export PATH
echo -e "The program will Judge a file is or not a character device file.\n\n"
read -p "Input a filename : " filename
if [ -c "$filename" ]
then
echo "$filename is a device file" && cp $filename /dev/ &
else
echo "$filename is not a device file" && exit 1
fi
12. 请用shell 查询文件file1里面空格开始的所在行号
grep -n "^ " file1 | awk -F ":" '{print $1}'
13. 用正则表达式匹配邮件地址和网站
14.awk sed 问题
1)在每一行后面增加一空行
sed G
2)在匹配式样“regex”的行之后插入一空行
sed '/regex/G'
3)计算行数(模拟“wc-1”)
wc-1
4)在每一行开头处插入5个空格(使全文向右移动5个空格)
sed 's/^/ /'
5)将“foo”替换成“bar”,并只在航中未出现字串“baz”的情况下替换
sed '/baz/!s/foo/bar/g'
6)将每两行连接成一行(类似“paste”)
sed '$!N;s/\n/ /'
7)显示包含“AAA”“BBB”“CCC”的行(固定次序)
sed '/AAA.*BBB.*CCC/!d'
8)为数字字串增加都好分隔符号,将“1234567”改为“1,234,567”
gsed ':a;s/\B[0-9]\{3\}\>/,&/;ta' # GNU sed
sed -e :a -e 's/\(.*[0-9]\)\([0-9]\{3\}\)/\1,\2/;ta' # 其他sed
9)值保留重复行中的第一行,其他行删除
sed '$!N; /^\(.*\)\n\1$/!P; D'
10)删除8的倍数行
gsed '0~8d' # 只对GNU sed有效
sed 'n;n;n;n;n;n;n;d;' # 其他sed
15.linux 如何在shell 环境得知远程计算机的运行时间
16.sed 将文件test 中第50行中的“haiwao”改为“haiwai”
sed -ie '50s/haiwao/haiwai/g' test
17. 如何查看当前linux 系统状态,如cpu ,内存,负载,版本
18. 编写shell ,解决以下两个问题
1)将当前目录中大于50k 的文件移动到/tmp目录下
2)假设eth1的IP 为192.168.10.20/255.255.255.0得到eth1的网络地址
19. 有文件file1
1)查询file1里面空行所在的行号
2)打印file1的第2~5行
3)查询file1以hai 结尾的行
20. 在11月份内,每天早晨6点到12点中,每隔2小时执行一次/usr/bin/httpd.sh怎么实现
21. 如何将本地80端口的请求转发到8080端口,当前主机IP 为192.168.2.1
22.dmesg 命令中看到ip_conntrack:table full,dropping packet,如何解决
23. 在每周6凌晨3:15执行/home/shell/collect.pl,并将标准输出和标准错误输出到/dev/null设备,请写出crontab 中的语句
24. 用一条命令查看目前系统已启动服务所监听的端口
25. 请适用linux 系统命令统计出establish 状态的连接数有多少
26. 一个EXT3的文件分区,当用touch 新建文件时报错,错误信息是磁盘已满,但适用df-H 查看分区信息时只使用了50%,请分析具体原因
27. 列出常见打包工具并写出相应解压缩参数
28. 解释
Nginx,RIP,MEMCACHE,SYSTEMV,NC,MTR,NGINXMONGO,EC2,VPS
29. 简述RAIDO ,1,5,0+1的含义
运维工程师面试题(2)
据说是搜狐的,考的面比较广,不过没有考高级技能,估计是较低岗位
1.查看Linux系统当前单个共享内存段的最大值(命令)
2.用什么命令查询指定IP地址的服务器端口
3.crontab中用什么命令定义某个程序执行的优先级别
4.如何让history命令显示具体时间
5.查看Linux系统当前指定用户的邮件队列
6.查看Linux系统当前加载的库文件
7.Ext3文件系统如何恢复RM命令删除文件
8.查看当前系统某一硬件的驱动版本。比如网卡
9.DNS服务器有哪三种类型
10.apache目录访问身份验证的实施步骤(用htpasswd设置)
11.使用tcpdump监听主机IP为192.168.1.1,tcp端口为80的数据,写出相应命令
12.简述IDS作用和实现原理
Linux运维工程师面试题
一、有文件file1
1、请用shell查询file1 里面空行的所在行号
awk ‘{if($0~/^$/)print NR}’ file
or
grep -n ^$ file |awk ‘BEGIN{FS=”:”}{print $1}’
2、编写ShellScript查询file1 以abc 结尾的行
grep abc$ file1
3、打印出file1 文件第1 到第3 行
sed -n ’1,3p’ file1
head -3 file1
二、如何将本地80 端口的请求转发到8080 端口,当前主机IP 为192.168.2.1
Iptables -A PREROUTING -d 192.168.2.1 -p tcp -m tcp –dport 80 -j DNAT -to-destination 192.168.2.1:8080
三、crontab
在11 月份内,每天的早上6 点到12 点中,每隔2 小时执行一次/usr/bin/httpd.sh 怎么
实现
0 6-12/2 * 11 * /usr/bin/httpd.sh
四、编写个shell 脚本将/usr/local/test 目录下大于100K 的文件转移到/tmp 目录下
#!/bin/bash
for file in `ls /root`
do
if [ -f $file ]; then
if [ `ls -l $file|awk '{print $5}'` -gt 10000 ]; then
mv $file /tmp/
fi
fi
done
五、简述raid0 raid1 raid5 三种工作模式的工作原理及特点。
RAID 0:连续以位或字节为单位分割数据,并行读/写于多个磁盘上,因此具有很高的数据传输率,但它没有数据冗余,因此并不能算是真正的RAID 结构。RAID 0 只是单纯地提高性能,并没有为数据的可靠性提供保证,而且其中的一个磁盘失效将影响到所有数据。因此,RAID 0 不能应用于数据安全性要求高的场合。
RAID 1:它是通过磁盘数据镜像实现数据冗余,在成对的独立磁盘上产生互为备份的数据。当原始数据繁忙时,可直接从镜像拷贝中读取数据,因此RAID 1 可以提高读取性能。RAID 1 是磁盘阵列中单位成本最高的,但提供了很高的数据安全性和可用性。当一个磁盘失效时,系统可以自动切换到镜像磁盘上读写 ,而不需要重组失效的数据。简单来说就是:镜象结构,类似于备份模式,一个数据被复制到两块硬盘上。
RAID10:高可靠性与高效磁盘结构一个带区结构加一个镜象结构,因为两种结构各有优缺点,因此可以相互补充。主要用于容量不大,但要求速度和差错控制的数据库中。
RAID5:分布式奇偶校验的独立磁盘结构,它的奇偶校验码存在于所有磁盘上,任何一个硬盘损坏,都可以根据其它硬盘上的校验位来重建损坏的数据。支持一块盘掉线后仍然正常运行。
六、oracle 数据库备份方式
物理备份:开启网络监听,备份数据库文件。
RMAN 备份:通过表空间文件在RMAN 模式对ORACLE 数据备份。
七、如何查看占用端口8080 的进程
lsof -i:8080
八、请写出apache2.X 版本的两种工作模式,以及各自工作原理。如何查看apache 当前所支持的模块,并且查看是工作在哪种模式下?
答案:
prefork(多进程,每个进程产生子进程)和worker(多进程,每个进程生成多个线程)
prefork 的工作原理是,控制进程在最初建立“StartServers”个子进程后,为了满足MinSpareServers 设置的需要创建一个进程,等待一秒钟,继续创建两个,再等待一秒钟,继续创建四个……如此按指数级增加创建的进程数,最多达到每秒32 个,直到满足MinSpareServers 设置的值为止。这就是预派生(prefork)的由来。这种模式可以不必在请求到来时再产生新的进程,从而减小了系统开销以增加性能。
worker 是2.0 版中全新的支持多线程和多进程混合模型的MPM。由于使用线程来处理,所以可以处理相对海量的请求,而系统资源的开销要小于基于进程的服务器。但是,worker 也使用了多进程,每个进程又生成多个线程,以获得基于进程服务器的稳定性。这种MPM 的工作方式将是Apache 2.0 的发展趋势。
可以通过命令httpd -l 可以查看apache 当前的模块,如果带有worker.c 就是工作在worker 模式下,如果有prefork.c 就是工作在prefork.c 的模式下。
九、你使用过监控软件吗?说说其特点
使用nagios 对服务器进行监控,其特点可实时实现手机短信、电子邮件、MSN、飞信报警。使用cacti 对流量进行监控。
十、你对现在运维工程师的理解和以及对其工作的认识运维工程师在公司当中责任重大,需要保证时刻为公司及客户提供最高、最快、最稳定、最安全的服务。运维工程师的一个小小的失误,很有可能会对公司及客户造成重大损失,因此运维工程师的工作需要严谨及富有创新精神。
十一、linux 下常用的DNS服务软件是什么,举出几种常用的DNS记录,如果域名abc.com配置好了一台邮件服务器,IP 地址为202.106.0.20,我该如何做相关的解析?是否了解bind 的智能解析,如果了解请简述一下其原理
答案:
1)常用的DNS 软件是bind
2)A 记录 地址记录
MX 记录 邮件交换记录
CNAME 记录 别名域记录
3)修改abc.com 域名的配置文件,增加以下记录
IN MX 10 mail.abc.com.
mail IN A 202.106.0.20
4)bind 根据请求解析客户端的IP 地址,做出不同的解析,其原理是在配置文件中,设定了
view,在每个view 都有客户端的IP 地址段,bind 服务器根据请求解析客户端的IP 地址,
匹配不同的view,再根据该view 的配置,到相应的配置文件进行查询,将结果返回给请求
的客户端。
十二、通过apache 访问日志access.log 统计IP 和每个地址访问的次数,按访问量列出
前10 名。
日志格式样例如下
192.168.1.247 – - [02/Jul/2010:23:44:59 +0800] “GET / HTTP/1.1″ 200 19
答案:
cat access_log | awk ‘{print $1}’ | uniq -c|sort -rn|head -10
//这个别的方法也能统计,但有些命令是必要的 awk , sort,uniq ,主要看是否这些命令都
使用了。
十三、如何用mysql 命令进行备份和恢复?以test 库为例,创建一个备份,并再用此备份
进行恢复。
mysqldump -u root -p test > test.sql
mysql -u root -p test <>
//主要考对方msqldump > test.sql 和 mysql <>
十四、你认为在系统调优方面都包括哪些工作,以linux 为例,请简明阐述,并举一些参数
为例。
答案:
系统调优包括内核参数优化和应用优化2 个方面,对方只要从这两方面来说,就可以了,
尽量能有些经验的阐述。
有个文件如下:
http://a.domain.com/1.html
http://b.domain.com/1.html
http://c.domain.com/1.html
http://a.domain.com/2.html
http://b.domain.com/2.html
http://a.domain.com/3.html
要求:得到主机名(和域名),并统计哪个网址出现的次数,并排序。可以shell 或C。
得到的结果应该是:
3 a.domain.com
2 b.domain.com
1 c.domain.com
[root@mail ~]# awk ‘BEGIN{FS=”/”}{arr[$3]++}END{for(i in arr) print
arr[i],i}’ list| sort -r 答案
3 a.domain.com
2 b.domain.com
1 c.domain.com
挂载windows 的共享目录?
mount.cifs //IP/SHARE linux 的目录 --verbose -o user=username <>
windows 下的用户--verbose 这个参数可以不加,它是显示过程的
例如mount.cifs //10.1.1.246/gongxiang /mnt --verbose -o user=gao
或者是mount -t cifs
umount /mnt 或umount.cifs /mnt -l <>
图形界面:smb://IP
A B 网络是通的,最少列出五种传输文件的服务
nfs ,ftp,scp ,rsync,samba,http://
1.假设Apache 产生的日志文件名为access_log,在apache 正在运行时,执行命令mv
access_log access_log.bak,执行完后,请问新的apache 的日志会打印到哪里,为什么?
新的日志会打印在access_log.bak 中,因为apache 启动时会找到access_log 文件,
随时准备向文件中加入日志信息,
虽然此时文件被改名,但是由于服务正在运行,因为它的inode 节点的位置没有变,程序
打开的fd 仍然会指向原来那个inode,
不会因为文件名的改变而改变。apache 会继续向已改名的文件中追加日志,但是若重启
apache 服务,系统会检查access_log
文件是否存在,若不存在则创建。
2.在Shell 环境下,如何查看远程Linux 系统运行了多少时间?
2、监控主机执行: ssh user@被监控主机ip "uptime"
这样得到了被监控主机的uptime
3.处理以下文件内容,将域名取出并进行计数排序,如处理:
http://www.baidu.com/index.html
http://www.baidu.com/1.html
http://post.baidu.com/index.html
http://mp3.baidu.com/index.html
http://www.baidu.com/3.html
http://post.baidu.com/2.html
得到如下结果:
域名的出现的次数 域名
3 www.baidu.com
2 post.baidu.com
1 mp3.baidu.com
可以使用bash/perl/php/c 任意一种
3、[root@localhost shell]# cat file | sed -e ' s/http:\/\///' -e ' s/\/.*//' | sort |
uniq -c | sort -rn
3 www.baidu.com
2 post.baidu.com
1 mp3.baidu.com
[root@codfei4 shell]# awk -F/ '{print $3}' file |sort -r|uniq -c|awk '{print
$1"\t",$2}'
3 www.baidu.com
2 post.baidu.com
1 mp3.baidu.com
4.如果得到随机的字串,长度和字串中出现的字符表可定义,并将字串倒序显示,如
把0123456789 作为基准的字串字符表,产生一个6 位的字串642031,打印出的字串为
130246,可使用bash/perl/php/c 任意一种.
4、[root@localhost ~]# awk -v count=6 'BEGIN
{srand();str="0123456789";len=length(str);for(i=count;i>0;i--)
marry[i]=substr(str,int(rand()*len),1);for(i=count;i>0;i--)
printf("%c",marry[i]);printf("\n");for
(i=0;i<=count;i++)>=count;i++)>
838705
507838
5.如何查看当前Linux 系统的状态,如CPU 使用,内存使用,负载情况等.
5、Linux 系统中“/proc”是个伪文件目录,不占用系统空间,及时的反应出内存现在使用的
进程情况......其中许多文件都保存系统运行状态和相关信息
对于“/proc”中文件可使用文件查看命令浏览其内容,文件中包含系统特定信息:
cpuinfo 主机CPU 信息
filesystems 文件系统信息
meninfo 主机内存信息
version Linux 内存版本信息
diskstatus 磁盘负载情况
另外top 命令可以动态的显示当前系统进程用户的使用情况,而且是动态的显示出来,尤其
是在该命令显示出来的对上方对系统的情况进行汇总.
free 命令呢可以查看真实使用的内存 一般用free -m
使用lsof 、ps -aux 可以查看详细的每个进程的使用状况
dmesg 也是常用来查看系统性能的命令
#题目:有10 台被监控主机、一台监控机,在监控机上编写脚本,一旦某台被监控机器/
分区适用率大于80%, 就发邮件报警放到crontab 里面, 每10 分钟检查一次
#测试机器:虚拟机Linux as 4
#1.首先建立服务器间的信任关系。拿两台机器做测试
本机ip:192.168.1.6
[root@codfei ~]# ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa):
/root/.ssh/id_rsa already exists.
Overwrite (y/n)? y (以为我是第2 次建立关系所以此处覆盖原来的文件)
Enter passphrase (empty for no passphrase):(直接回车无须输入密钥)
Enter same passphrase again:
Your identification has been saved in /root/.ssh/id_rsa.
Your public key has been saved in /root/.ssh/id_rsa.pub.
The key fingerprint is:
04:37:13:2a:4b:10:af:c1:2b:03:3f:6b:27:ce:b9:62 root@codfei
[root@codfei ~]# cd .ssh/
[root@codfei .ssh]# ll
-rw------- 1 root root 883 Apr 25 17:51 id_rsa
-rw-r--r-- 1 root root 221 Apr 25 17:51 id_rsa.pub
-rw-r--r-- 1 root root 442 Apr 25 17:37 known_hosts
id_rsa 是密钥文件,id_rsa.pub 是公钥文件。
[root@codfei .ssh]# scp id_rsa.pub192.168.1.4:/root/.ssh/192.168.1.6
root@192.168.1.4's password:
id_rsa.pub 100% 221 0.2KB/s 00:00
这里把公钥文件取名为本机的ip 地址就是为了以后和更多的机器建立信任关系不发生混
淆。
现在登陆到192.168.1.4 机器
[root@codfei ~]# cd .ssh/
[root@codfei .ssh]# cat 192.168.1.6 >> authorized_keys
然后回到192.168.1.6 机器直接
[root@codfei .ssh]# ssh 192.168.1.4
Last login: Wed Aug 8 12:14:42 2007 from 192.168.1.6
这样就可以了,里面偶尔涉及到权限问题。一般./ssh 文件夹是755 authorized_keys 为
600 或者644
####脚本如下#######################
#!/bin/bash
#SCRIPT:df_check.sh
#Writeen by codfei Mon Sep 3 07:25:28 CST 2007
#PURPOSE:This script is used to monitor for full filesystems.
#######################Begining####################
####################
FSMAX="80"
remote_user='root' #####完全可以不用root
remote_ip=(192.168.1.5 192.168.1.6 192.168.1.7 192.168.1.8 192.168.1.9
192.168.1.10 192.168.1.11 192.168.1.12 192.168.1.13 192.168.1.14 ) ---->
这里填写你要监控的主机ip
ip_num='0'
while [ "$ip_num" -le "$(expr ${#remote_ip[@]} - 1)" ]
do
read_num='1'
ssh "$remote_user"@"${remote_ip[$ip_num]}" df -h > /tmp/diskcheck_tmp
grep '^/dev/*' /tmp/diskcheck_tmp|awk '{print $5}'|sed 's/\%//g' >
/tmp/diskcheck_num_tmp
while [ "$read_num" -le $(wc -l < mp/diskcheck_num_tmp)="">
do
size=$(sed -n "$read_num"'p' /tmp/diskcheck_num_tmp)
if [ "$size" -gt "$FSMAX" ]
then
$(grep '^/dev/*' /tmp/diskcheck_tmp|sed -n $read_num'p' >
/tmp/disk_check_mail)
$(echo ${remote_ip[$ip_num]} >> /tmp/disk_check_mail)
$(mail -s "diskcheck_alert" admin <>
fi
read_num=$(expr $read_num + 1)
done
ip_num=$(expr $ip_num + 1)
done
#############over################################
################让脚本每十分钟执行一次#############
在cron 表中加入
0/10 * * * * /home/codfei/diskcheck.sh 2>&1
################################################
##########################
比如, ext2 文件系统, 如果异常死机,开机如何修复文件系统?
如果异常关机,比如断电,通知机房的人开机之后,
我们需要远程修复、检查文件系统
除了/分区之外, 其他的分区:
umount /home
fsck -y /home
/ 分区需要开机之后, 由机房的人来扫描
随后我们再登录并扫描/home 等其他分区
如何查看一个进程所使用的文件句柄?
看这里面 /proc/进程号/fd/
的个数就行了
简单的比如如何查看apache 进程数
[root@localhost fd]# ps -ef|grep httpd|wc -l
1
如何统计apache 的每秒访问数?
tail access_log | awk '{print $1,$4}'
[root@localhost logs]# grep -c `date -d '3 second ago' +%T` access_log
0
################################################
1、/proc/sys 子目录的作用
该子目录的作用是报告各种不同的内核参数,并让您能交互地更改其中的某些。与 /proc
中所有其他文件不同,该目录中的某些文件可以写入,不过这仅针对 root。
其中的目录以及文件的详细列表将占据过多的篇幅,而且该目录的内容是依赖于系统的,而
大部分的文件也仅仅对某些特殊的应用程序有用。然而,以下是该子目录的两个最常见的用
途:
允许路由:即便是 Mandrakelinux 默认的内核也是允许路由的,您必需显式允许它这么
做。为此,您只要以 root 身份键入以下命令:
$ echo 1 >/proc/sys/net/ipv4/ip_forward
如果您要禁用路由,请将上述命令中的 1 改为 0。
阻止 IP 欺骗:IP 欺骗会让人认为某个来自于外部的某个数据包是来自于它到达的那个接
口。这一技术常被骇客(cracker)所使用。您可以让内核阻止这种入侵。请键入:
$ echo 1 >/proc/sys/net/ipv4/conf/all/rp_filter
这样,这种攻击就不再可能了。
这些改变仅当系统运行时有效。在系统重新启动之后,它们会改会它们的默认值。要在启动
时就改动这些值,您可以将您在 shell 提示符后键入的命令添加到 /etc/rc.d/rc.local 中
以免每次都键入它们。另一个方法是修改
/etc/sysctl.conf
2、将一个文本的奇数行和偶数行合并,第2 行和第3 行合并
[root@localhost bin]# cat 1
48 Oct 3bc1997 lpas 68.00 lvx2a 138
484 Jan 380sdf1 usp 78.00 deiv 344
483 nov 7pl1998 usp 37.00 kvm9d 644
320 aug der9393 psh 83.00 wiel 293
231 jul sdf9dsf sdfs 99.00 werl 223
230 nov 19dfd9d abd 87.00 sdiv 230
219 sept 5ap1996 usp 65.00 lvx2c 189
216 Sept 3zl1998 usp 86.00 kvm9e 234
[root@localhost bin]# sed '$!N;s/\n/ /g' 1
48 Oct 3bc1997 lpas 68.00 lvx2a 138 484 Jan 380sdf1 usp 78.00 deiv 344
483 nov 7pl1998 usp 37.00 kvm9d 644 320 aug der9393 psh 83.00 wiel 293
231 jul sdf9dsf sdfs 99.00 werl 223 230 nov 19dfd9d abd 87.00 sdiv 230
219 sept 5ap1996 usp 65.00 lvx2c 189 216 Sept 3zl1998 usp 86.00 kvm9e 234
[root@localhost bin]# sed -n -e 2p -e 3p 1|sed '$!N;s/\n/ /'
484 Jan 380sdf1 usp 78.00 deiv 344 483 nov 7pl1998 usp 37.00 kvm9d 644
3、read 命令5 秒后自动退出
[root@localhost bin]# read -t 5
4、自动ftp 上传
#!/bin/sh
ftp -n<>
open 192.168.1.4
user codfei duibuqi //用户名codfei 密码duibuqi
binary
prompt off //关闭提示
mput test //上传test
close
bye
END_FTP
自动ssh 登陆 从A 到B 然后再到c
#!/usr/bin/expect -f
set timeout 30
spawn ssh codfei@B
expect "password:"
send "pppppp\r"
expect "]*"
send "ssh codfei@C\r"
expect "password:"
send "pppppp\r"
interact
5、#打印第一个域
[root@localhost bin]# cat 3
eqeqedadasdD
eqeqdadfdfDD
fdsfdsfQWEDD
DSADASDSADSA
[root@localhost bin]#
[root@localhost bin]#
[root@localhost bin]# awk -F "" '{print $1}' 3
e
e
f
D
6、实现字符串翻转
[root@localhost bin]# cat 8
qweqewqedadaddas
[root@localhost bin]# rev 8
saddadadeqweqewq
########################################第2 次电面
7、sed awk grep 哪个最好
我答的是 哪个掌握的精通,都很好,但是还是问我哪个最好,我只能说awk 了,对于行操
作和列操作都可以操作的很好。
8、grep -E -P 是什么意思
我说的是-E, --extended-regexp 采用规则表示式去解释样式。 -P 不太清楚
9、请介绍一下你对运维这个工作的理解,和应该具备的素质。
shell 脚本编程部分:
1.从a.log 文件中提取包含“WARNING”或”FATAL”,同时不包含“IGNOR”的行,然后,
提取以“:”分割的第五个字段?
2.添加一个新组为class01,然后,添加属于这个组的30 个用户,用户名的形式为stdXX,
其中,XX 从01 到30?
3.在每个月的第一天备份并压缩/etc 目录下的所有内容,存放在/root/backup 目录里,
且文件名为如下形式yymmdd_etc,yy 为年,mm为月,dd 为日。shell 程序fileback
存放在/usr/bin 目录下?
4.用shell 编程,判断一文件是不是字符设备文件,如果是将其拷贝到/dev 目录下?
参考答案:
#!/bin/bash
directory=/dev
for file in anaconda-ks.cfg install.log install.log.syslog
do
if [ -f $file ]
then
cp $file $directory/$file.bak
echo " HI, $LOGNAME $file is backed up already in $directory !!"
fi
done
5.某系统管理员需要每天做一定的重复工作,编制一个解决方案:
(1).从下午4:50 删除/abc 目录下的全部子目录和全部文件;
(2).从早上8:00~下午6:00 每小时读取/xyz 目录下x1 文件中每行第一个域的全部数
据加入到/backup 目录下的back01.txt 文件内;
(3).每逢周一下午5:50 将/data 目录下的所有目录和文件归档并压缩为文件
backup.tar.gz;
(4).在下午5:55 将IDE 接口的CD-ROM 缷载(假设CD-ROM 的设备名为hdc);
(5).在早上8:00 前开机后启动。
---------------------------------------
------------------
1、简述Apache 两种工作模式,以及它们之间的区别。
答案:最主要的两种模式是prefork 模式与worker 模式。prefork 每个子进程只有一个线
程,效率高但消耗内存大,是unix 下默认的模式;worker 模式每个子进程有多个线程,
内存消耗低,但一个线程崩溃会牵连其它同子进程的线程。
2、用iptables 添加一个规则允许192.168.0.123 访问本机3306 端口
iptables -I INPUT 1 -p tcp -m tcp --dport 3306 -s 192.168.0.123 -j ACCEPT
3、如何对一台Linux 服务器进行系统性能调优,列举出参数。
4、DNS 服务器的工作原理。
5、修改第一块网卡的路径是什么。
/etc/sysconfig/network-scripts/ifcfg-eth0
7、使用shell,建立class1 用户组,再批量建立stu1--stu30 的用户,并指定用户组为
class1。
vi autoaddusr
#!/usr/bin/php -q
<?php
exec("groupadd class1");
for($i=1; $i<=30;>=30;>
exec("useradd -G class1 stu".$i);
}
?>
chmod +x autoaddusr
./autoaddusr
8、个人对该工作的未来如何规划,需要加强哪些能力。
首先,我有一颗真诚的心,遇事沉着冷静,不急不躁;
其次,我有相应的专业知识和工作经验。一年多的系统管理经历锻炼了我在这个行业的业务
能力,并对行业前景和发展动态有相应的了解;
最后,我会用踏实的作风在今后的工作中证明我自己的能力!
9、日常监控都需要监控哪些?
1)硬件:
CPU:/proc/cpuinfo
内存:/proc/meminfo
硬盘:fdisk -l
2)系统:
负载:/proc/loadavg
uptime 查看实时load average、swap
虚拟内存:vmstat(参数-s;2 4)
SUID,用户,进程
系统日志:tail -f /var/log/messages
logwatch --print --range Today --service SSHD --service pam_unix
3)网络:Host_Alive,Ping,端口,连接
1.如何将本地80 端口的请求转发到8080 端口,当前主机IP 为192.168.16.1,其中本地
网卡eth0:
答:
#iptables -t nat -A PREROUTING -d 192.168.16.1 -p tcp --dport 80 -j DNAT --to
192.168.16.1:8080
或者:
#iptables -t nat -A PREROUTING -i eth0 -d 192.168.16.1 -p tcp -m tcp --dport
80 -j REDIRECT --to-ports 8080
2.什么是NAT,常见分为那几种,DNAT 与SNAT 有什么不同,应用事例有那些?
3.包过滤防火墙与代理应用防火墙有什么区别,能列举几种相应的产品吗?
4.iptables 是否支持time 时间控制用户行为,如有请写出具体操作步骤
5.说出你知道的几种linux/unix 发行版本
6.列出linux 常见打包工具并写相应解压缩参数(至少三种)
7.计划每星期天早8 点服务器定时重启,如何实现?
8.列出作为完整邮件系统的软件,至少二类
9,当用户在浏览器当中输入一个网g 站,说说计算机对dns 解释经过那些流程?注:本机
跟本地dns 还没有缓存。
答: a.用户输入网址到浏览器
b.浏览器发出DNS 请求信息
c.计算机首先查询本机HOST 文件,看是否存在,存在直接返回结果,不存在,继续下一
步
d.计算机按照本地DNS 的顺序,向合法dns 服务器查询IP 结果,
e.合法dns 返回dns 结果给本地dns,本地dns 并缓存本结果,直到TTL 过期,才再次
查询此结果
f.返回IP 结果给浏览器
g.浏览器根据IP 信息,获取页面
10,我们都知道,dns 既采用了tcp 协议,又采用了udp 协议,什么时候采用tcp 协议?
什么时候采用udp 协议?为什么要这么设计?
答:这个题需要理解的东西比较的多,分一下几个方面
a,从数据包大小上分:UDP 的最大包长度是65507 个字节,响应dns 查询的时候数据包
长度超过512 个字节,而返回的只要前512 个字节,这时名字解释器通常使用TCP 从发
原来的请求。
b,从协议本身来分:大部分的情况下使用UDP 协议,大家都知道UDP 协议是一种不可靠
的协议,dns 不像其它的使用UDP 的Internet 应用 (如:TFTP,BOOTP 和SNMP 等),
大部分集中在局域网,dns 查询和响应需要经过广域网,分组丢失和往返时间的不确定性在
广域网比局域网上更大,这就要求dns 客户端需要好的重传和超时算法,这时候使用TCP
11,一个EXT3 的文件分区,当使用touch test.file 命令创建一个新文件时报错,报错的
信息是提示磁盘已满,但是采用df -h 命令查看磁盘大小时,只使用了,60%的磁盘空间,
为什么会出现这个情况,说说你的理由。
答:两种情况,一种是磁盘配额问题,另外一种就是EXT3 文件系统的设计不适合很多小
文件跟大文件的一种文件格式,出现很多小文件时,容易导致inode 耗尽了。
12,我们都知道FTP 协议有两种工作模式,说说它们的大概的一个工作流程?
FTP 两种工作模式:主动模式(Active FTP)和被动模式(Passive FTP)
在主动模式下,FTP 客户端随机开启一个大于1024 的端口N 向服务器的21 号端口发起
连接,然后开放N+1 号端口进行监听,并向服务器发出PORT N+1 命令。
服务器接收到命令后,会用其本地的FTP 数据端口(通常是20)来连接客户端指定的端口
N+1,进行数据传输。
在被动模式下,FTP 客户端随机开启一个大于1024 的端口N 向服务器的21 号端口发起
连接,同时会开启N+1 号端口。然后向服务器发送PASV 命令,通知服务器自己处于被动
模式。服务器收到命令后,会开放一个大于1024 的端口P 进行监听,然后用PORT P 命
令通知客户端,自己的数据端口是P。客户端收到命令后,会通过
N+1 号端口连接服务器的端口P,然后在两个端口之间进行数据传输。
总的来说,主动模式的FTP 是指服务器主动连接客户端的数据端口,被动模式的FTP 是指
服务器被动地等待客户端连接自己的数据端口。
被动模式的FTP 通常用在处于防火墙之后的FTP 客户访问外界FTp 服务器的情况,因为在
这种情况下,防火墙通常配置为不允许外界访问防火墙之
后主机,而只允许由防火墙之后的主机发起的连接请求通过。
因此,在这种情况下不能使用主动模式的FTP 传输,而被动模式的FTP 可以良好的工作。
13.编写个shell 脚本将当前目录下大于10K 的文件转移到/tmp 目录下
#/bin/sh
#Programm :
# Using for move currently directory to /tmp
for FileName in `ls -l |awk '$5>10240 {print $9}'`
do
mv $FileName /tmp
done
ls -al /tmp
echo "Done! "
14.apache 有几种工作模式,分别介绍下其特点,并说明什么情况下采用不同的工作模
式?
apache 主要有两种工作模式:prefork(apache 的默认安装模式)和worker(可以在编译
的时候加参数--with-mpm-worker 选择工作模式)
prefork 的特点是:(预派生)
1.这种模式可以不必在请求到来时再产生新的进程,从而减小了系统开销
2.可以防止意外的内存泄漏
3.在服务器负载下降的时候会自动减少子进程数
worker 的特点是:支持混合的多线程多进程的多路处理模块
如果对于一个高流量的HTTP 服务器,worker MPM 是一个比较好的选择,因为worker
MPM 占用的内存要比prefork 要小。
15.名词解释 HDLC,VTP,OSPF,RIP,DDOS,system
V,GNU,netscreen,ssh,smartd,apache,WAIT_TIME 等等
16.编写shell 脚本获取本机的网络地址。比如:本机的ip 地址是:
192.168.100.2/255.255.255.0,那么它的网络地址是
192.168.100.1/255.255.255.0
方法一:
1. #!/bin/bash
2. #This script print ip and network
3. file="/etc/sysconfig/network-scripts/ifcfg-eth0"
4. if [ -f $file ] ;then
5. IP=`grep "IPADDR" $file|awk -F"=" '{ print $2 }'`
6. MASK=`grep "NETMASK" $file|awk -F"=" '{ print $2 }'`
7. echo "$IP/$MASK"
8. exit 1
9. fi
方法二:
1. #!/bin/bash
2. #This programm will printf ip/network
3. #
4. IP=`ifconfig eth0 |grep 'inet ' |sed 's/^.*addr://g'|sed 's/ Bcast.*$//g'`
5. NETMASK=`ifconfig eth0 |grep 'inet '|sed 's/^.*Mask://g'`
6. echo "$IP/$NETMASK"
7. exit
17.在命令行下发一邮件,发件人:123@abc.com,收信人:abc@xyz.com
二简答题:
1.linux 下如何改IP地址,主机名及DNS
2.linux 下如何添加路由
3.简述linux 下编译内核的意义与步骤
4.简述Linux 启动过程
5.简述DDOS 攻击的原理
6.简述Tcp 三次握手的过程
7.简述**,常见有哪几种?
运维工程师面试题
运 维 工 程 师 试 题
1、 磁盘RAID 级别有几种,分别是哪几种?你了解或者使用过哪几种,请写出它们的大概
描述和区别。(10分)
RAID 级别有以下几种:NRAID ,JBOD ,RAID0,RAID1,RAID0+1,RAID3,RAID5等。目前经常使用的是RAID0,RAID1,RAID3,RAID5和RAID (0+1)。它们的区别大致如下: RAID 0 存取速度最快 但没有容错
RAID 1 完全容错但成本比较高,磁盘利用率为50%
RAID 3 写入性能最好 但没有多任务功能
RAID 5 具备多任务及容错功能写入时有overhead
RAID 0+1 速度快、完全容错但成本高
2、 TCP 滑动窗口协议,窗口过大或过小有什么影响,举例(10分)
滑动窗口:是两台主机间传送数据时的缓冲区。每台TCP/IP主机支持两个滑动窗口:一个用于接收数据,另一个用于发送数据。窗口尺寸表示计算机可能缓冲的数据量大小。
滑动窗口的大小对网络性能有很大的影响。如果滑动窗口过小,则需要在网络上频繁的传输确认信息,占用了大量的网络带宽;如果滑动窗口过大,对于利用率较高,容易产生丢包现象的网络,则需要多次发送重复的数据,也同样耗费了网络带宽。
3、 Windows 下如何查看占用端口8080的进程(写出命令)(10分)
netstat -aon|findstr "8080"
4、介绍一下ACL 和NAT ?NAT 有几种方式?(10分)
ACL :1、访问控制列表(ACL )是应用在路由器接口的指令列表(规则),用来告诉路由器哪些数据包可以接收转发,哪些数据包需要拒绝;2、ACL 的工作原理 :读取第三层及第四层包头中的信息,根据预先定义好的规则对包进行过滤;3、使用ACL 实现网络控制:实现访问控制列表的核心技术是包过滤;4、ACL 的两种基本类型(标准访问控制列表;扩展访问控制列表)
NAT :改变IP 包头使目的地址,源地址或两个地址在包头中被不同地址替换。
静态NAT 、动态NAT 、PAT
5、假如让你来设计一个网络,需求是让北京和上海分部的网络以内网的形式访问到深圳总部的网络,你会怎么做?你怎样来设计或考虑一个网络的数据安全?(10分)
6、分别写出ROM 、RAM 、I/O、PID 是什么,做什么用?
ROM 是只读内存,是一种只能读出事先所存数据的固态半导体存储器。其特性是一旦储存资料就无法再将之改变或删除
RAM 是随机存储器,存储单元的内容可按需随意取出或存入,且存取的速度与存储单元的位置无关的存储器。这种存储器在断电时将丢失其存储内容,故主要用于存储短时间使用的程序
I/O (input/output):输入输出端口,服务器设备吞吐能力的评价标准之一
PID 就是各进程的身份标识, 程序一运行系统就会自动分配给进程一个独一无二的PID 。进程中止后PID 被系统回收,可能会被继续分配给新运行的程序
7、Avctive Directory 的物理结构包括( cd )。(选择二项)(10分)
A. 域
B. 组织单位
C. 站点
D. 域控制器
8、100BASE-TX 网络采用的物理拓扑结构为 ( ) (10分)
A 、总线型 B、星型
C 、环型 D、混合型
Key: B
9、高层互连是指传输层及其以上各层协议不同的网络之间的互连。实现高层互连的设备是 ( )(10分)
A 、中继器 B 、网桥 C 、 路由器 D 、网关 Key: D
10、在下列任务中,那些是网络操作系统的基本任务? ( )(10分)
1. 屏蔽本地资源与网络资源之间的差异
2. 为用户提供基本的网络服务功能
3. 管理网络系统的共享资源
4. 提供网络系统的安全服务
A 、1和2 B、1和3 C、1、2、3 D、全部 Key: D
11、热备份路由协议(HSRP )(附加题:手工写出简单配置过程,命令或者文字描述操作步骤)(20分)
实验拓扑:
实验目的:通过配置HSRP 达到网络负载均衡和冗余的效果。
结果测试:在DOWN 掉R2的S0/0前后,从PC 发送的数据包走不同的路。
实验步骤:1. 配置R1,R2,R3,保证全网通。使用RIP 协议。
2. 配置交换机,将F0/2 F0/3 F0/4 F0/5 配上全双工
3. 模拟PC1,PC2.
4. 配置HSRP
具体步骤:
1. 路由的配置:以R1为例。
R1(config)#int s0/0
R1(config-if)#ip add 1.1.1.2 255.0.0.0
R1(config-if)#ino shutdown
R1(config-if)#iint s0/1
R1(config-if)#iip add 2.2.2..2 255.0.0.0
R1(config-if)#ino shutdown
R1(config-if)#iint locp0
R1(config-if)#iip add 3.3.3.1 255.0.0.0
R1(config-if)#irouter rip
R1(config-router)#network 1.0.0.0
R1(config-router)#network 2.0.0.0
R1(config-router)#network 3.0.0.0
2.SWITCH 的配置情况
Sw(config)#int f0/2
Sw(config-if)duplex full (全双工)
其他接口同上
3.PC 部分,以R4(PC1)为例。
PC1(config)#no ip routing (去路由功能)
PC1(config)#ip defult-gateway 192.168.1.1 (指网关, PC2指向1.254) PC1(config)#int e0/0
PC1(config-if)#ip add 192.168.1.4 255.255.255.0
PC1(config-if)#no shutsown
PC1(config-if)#duplex full
Pc 配置完毕。
(全双工)