linux系统工程师面试题

第一套
1.查看Linux系统当前单个共享内存段的最大值(命令)
ipcs -m
ipcs -a
2.用什么命令查询指定IP地址的服务器端口
题意应该是 nmap 和nbtscan 命令来扫吧。
3.crontab中用什么命令定义某个程序执行的优先级别
nice/renice:进程执行优先级
概念:
进程优先级:系统按进程优先级的不一样分配CPU时间,优先级高的进程会获得更多的CPU使用时间,以提升速度,缩短总的执行时间。
进程优先级范围:-20至19
最高等级:-20
最低等级:19
系统管理员有权将进程优先级设置为-1至-20,而普通用户只能设置0至19。
进程运行的默认等级为0。
用nice执行的进程其默认等级为10(即nice <程序名>,不指定等级时)。
格式:
nice <程序名>
nice -<等级> <程序名>
如:(命令后加&表示之后台运行)
vi & 优先等级0,默认等级。
nice vi & 优先等级10,使用nice执行程序时的默认等级。
nice -50 vi & 优先等级19,-号表示选项,等级50超过最低等级19,所以系统以等级19执行。
nice -18 vi & 优先等级18。
nice --50 vi & 优先等级-20,选项值为-50,超过最高等级-20,所以系统以等级-20执行。
nice --18 vi & 优先等级-18。
经过ps -l可查看以上命令的执行状况(注意查看各vi进程NI值的不一样)。
从新调整正在执行的进程的优先级:
调整指定PID进程的等级
renice <等级> <PID>
注意:<等级>是参数,不是选项,没有前缀-号。
调整指定用户的全部进程的等级
renice <等级> <用户名1> <用户名2> ...
调整指定组的全部用户的全部进程的等级
renice <等级> -g <组名1>
4.如何让history命令显示具体时间
HISTTIMEFORMAT="%Y-%m-%d %H:%M:%S "
expect HISTTIMEFORMAT
从新开机后会还原,能够写/etc/profile
5.查看Linux系统当前指定用户的邮件队列
mailq 命令
打印两种类型的列表:
mailq 命令列出以下所示的邮件队列:
Mail Queue(1 request)
---QID---- --Size-- -----Q-Time----- ------Sender/Recipient-----
AA02508 3 Thu Dec 17 10:01 root
(User unknown)
bad_user
mailq -v 命令列出以下所示的邮件队列:
Mail Queue (1 request)
---QID---- --Size-- -Priority- ---Q-Time--- --Sender/Recipient--
AA02508 3 1005 Dec 17 10:01 root
(User unknown)
bad_user
6.查看Linux系统当前加载的库文件
lsof
7.Ext3文件系统如何恢复RM命令删除文件
(1).Ext3文件系统结构的简单介绍
在 Linux所用的Ext3文件系统中,文件是以块为单位存储的,默认状况下每一个块的大小是1K,不一样的块以块号区分。每一个文件还有一个节点,节点中包含有文件全部者,读写权限,文件类型等信息。对于一个小于12个块的文件,在节点中直接存储文件数据块的块号。若是文件大于12个块,那么节点在12个块号以后存储一个间接块的块号,在这个间接块号所对应的块中,存储有256个文件数据块的块号(Ext2fs中每一个块号占用4字节,这样一个块中所能存储的块号就是1024/4=256)。若是有更大的文件,那么还会在节点中出现二级间接块和三级间接块。
(2).恢复被误删文件的方法
大多数Linux发行版都提供一个debugfs工具,能够用来对Ext3文件系统进行编辑操做。不过在使用这个工具以前,还有一些工做要作。

首先以只读方式从新挂载被误删的文件所在分区。使用以下命令:(假设文件在/usr分区)
mount -r -n -o remount /usr
-r表示只读方式挂载;-n表示不写入/etc/mtab,若是是恢复/etc上的文件,就加上这个参数。若是系统说xxx partion busy,能够用fuser命令查看一下是哪些进程使用这个分区上的文件:
fuser -v -m /usr
若是没有什么重要的进程,用如下命令停掉它们:
fuser -k -v -m /usr
而后就能够从新挂载这些文件系统了。
如 果是把全部的文件统一安装在一个大的/分区当中,能够在boot提示符下用linux single进入单用户模式,尽可能减小系统进程向硬盘写入数据的机会,要不干脆把硬盘挂在别的机器上。另外,恢复出来的数据不要写到/上面,避免破坏那些有用的数据。若是机器上有dos/windows,能够写到这些分区上面:
mount -r -n /dev/hda1 /mnt/had
而后就能够执行debugfs:(假设Linux在 /dev/hda5)
#debugfs /dev/hda5
就会出现debugfs提示符debugfs:
使用lsdel命令能够列出不少被删除的文件的信息:
debugfs:lsdel
debugfs: 2692 deleted inodes found.
Inode Owner Mode Size Blocks Time deleted
164821 0 100600 8192 1/ 1 Sun May 13 19:22:46 2001
…………………………………………………………………………………
36137 0 100644 4 1/ 1 Tue Apr 24 10:11:15 2001
196829 0 100644 149500 38/ 38 Mon May 27 13:52:04 2001
debugfs:
列出的文件有不少(这里找到2692个),第一字段是文件节点号,第二字段是文件全部者,第三字段是读写权限,接下来是文件大小,占用块数,删除时间。而后就能够根据文件大小和删除日期判断那些是咱们须要的。好比咱们要恢复节点是196829的文件:
能够先看看文件数据状态:
debugfs:stat
Inode: 196829 Type: regular Mode: 0644 Flags: 0x0 Version: 1
User: 0 Group: 0 Size: 149500
File ACL: 0 Directory ACL: 0
Links: 0 Blockcount: 38
Fragment: Address: 0 Number: 0 Size: 0
ctime: 0x31a9a574 -- Mon May 27 13:52:04 2001
atime: 0x31a21dd1 -- Tue May 21 20:47:29 2001
mtime: 0x313bf4d7 -- Tue Mar 5 08:01:27 2001
dtime: 0x31a9a574 -- Mon May 27 13:52:04 2001
BLOCKS:
594810 594811 594814 594815 594816 594817 ………………………………….
TOTAL: 38
而后就能够用dump指令恢复文件:
debugfs:dump /mnt/hda/01.sav
这样就把文件恢复出来了。退出debugfs:
debugfs:quit
另外一种方法是手工编辑inode:
debugfs:mi
Mode [0100644]
User ID [0]
Group ID [0]
Size [149500]
Creation time [0x31a9a574]
Modification time [0x31a9a574]
Access time [0x31a21dd1]
Deletion time [0x31a9a574] 0
Link count [0] 1
Block count [38]
File flags [0x0]
Reserved1 [0]
File acl [0]
Directory acl [0]
Fragment address [0]
Fragment number [0]
Fragment size [0]
Direct Block #0 [594810]
…………………………….
Triple Indirect Block [0]
使用mi指令后每次显示一行信息以供编辑,其它行能够直接按回车表示确认,把deletion time改为0(未删除),Link count改为1。改好后退出debugfs:
debugfs:quit
而后用fsck检查/dev/hda5
fsck /dev/hda5
程序会说找到丢失的数据块,放在lost+found里面。
8.查看当前系统某一硬件的驱动版本。好比网卡
dmidecode
9.DNS服务器有哪三种类型
主 从 缓存
10.apache目录访问身份验证的实施步骤(用htpasswd设置)
htpasswd -c /目录 user
alias /目录
11.使用tcpdump监听主机IP为192.168.1.1,tcp端口为80的数据,写出相应命令
tcpdump tcp port 80 host 192.168.1.1
12.简述IDS做用和实现原理
***检测,设备放在intelnet进来的第一台路由后面。对进入路由的全部的包进行检测,若是有异常就报警。
13.用sed修改test.txt的23行test为tset;
sed ‘23s/test/tset/g ’ test.txt

第二套

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,当用户在浏览器当中输入一个网站,说说计算机对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目录下

    1. #/bin/sh
    2. #Programm :
    3. # Using for move currently directory to /tmp
    4. for FileName in `ls -l |awk ‘$5>10240 {print $9}’`
    5. do
    6. mv $FileName /tmp
    7. done
    8. ls -al    /tmp
    9. echo “Done! “

复制代码

14.apache有几种工做模式,分别介绍下其特色,并说明什么状况下采用不一样的工做模式?
apache主要有两种工做模式:prefork(apache的默认安装模式)和worker(能够在编译的时候加参数–with-mpm-worker选择工做模式)
prefork的特色是:(预派生)
1.这种模式能够没必要在请求到来时再产生新的进程,从而减少了系统开销
2.能够防止意外的内存泄漏
3.在服务器负载降低的时候会自动减小子进程数(prefork的详细原理能够看个人博客另一篇文章apache的性能优化)
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.简述×××,常见有哪几种?
8.
三:设计题:
1.系统设计
请考虑如下系统的设计. 您能够翻阅资料,查询任何您有帮助的资料、指南等。
您有的资源:
8台安装Linux (2.6内核) 的双网卡PC服务器以及相关开源软件,交换机
Apache 2.2.x
Tomcat 5.5.X
数据库系统
最多8个Internet IP地址,请您设计一个系统:
一、使用双apache web server前端;
二、采用AJP链接后段的3台Tomcat应用服务器,这些tomcat被配置成cluster, 所以须要考虑apache对后端的分配, 分配采用彻底平衡的方法

; 配置使用cookie来实现session stickness;
三、1台数据库服务器只有tomcat才须要链接,也不须要对Internet提供服务。
四、考虑系统的安全性和维护方便性;
五、经过rewrite规则配置把下属URL规则改写成友好的URL
http://server/webapp/getinfo?id=XXXX&name=YYYY –> http://server/getinfo/YYYY/XXXX

您须要提交

一、服务器规划,包括:
* 网络结构图
* 每台机器的IP地址分配
* 每台机器上运行的关键软件
* 您从安全性和维护性方面的考虑
二、Apache的如下配置文件给咱们:
* extra/http-proxy-ajp.conf
* extra/http-rewrite.conf

2.你能够采起任何设备和不一样操做系统服务器设计对两台WWW服务器和两台FTP服务器作负载均衡,用网络拓扑图表示并加以说明!(方法越多越好)

 这个面试已通过了快一个月了,前段时间没有发上来,今天稍微整理了如下发上来了。原本是想写感想那,可是从小学开始语文都很差。也不知道从那里写起。呵呵!
 
  这家公司挺大的,听别人说和sina一个级别的。具体的就在这里不说出来了。我从哪里面试出来以后我就想这是面试的SA,好像不是项目经理吧,外企就是不同啊!
 
  还有就是他在问了问题以后,我答完以后就接着下一个,中间没有任何什么其余的话,脸上也没有表情。面试完以后完回到家里靠本身的记忆记下了面试中的16道面试题。发给朋友看看,他们有的说变态,有的说这好像不是SA面试题吧。
 
  汗……仍是本身的能力不行啊。

第三套
 
  一、在同一个网站中,当客户访问的时候,会出现有的页面访问的速度快而有的慢,系统和服务彻底正常、网络带宽正常。这是那里出现问题了那?
 
  二、你之前作过的项目中,单台 服务器的最大并发量是多少?说下你硬件的配置?
 
  三、你之前在工做中遇到的,一个困难的技术问题是什么,最后怎么解决的 ?
 
  四、你说下你技术的强项和不足?
 
  五、在一个系统架构中,咱们为了不单点故障,会怎么作?
 
  六、apache2.x版本中两个不一样的运行模式是什么,有什么不一样?
 
  七、若是给你不少台 服务器,你该怎么去管理?
 
  八、若是给你一个100人的团队你怎么带好他们?
 
  八、如何优化 linux系统,说出命令和相应的回值?
 
  九、怎么查看一个服务器运行正常?
 
  十、为何有些公司会把本身的系统项目外包出去,而本身不招本身系统工程师,说说本身 的见解?
 
  十一、若是一个web服务器出现问题,你会怎么作?
 
  十二、如何添加一个apache的rewirte模块,rewirte模块的原理是什么?
 
  1三、你之前所在的公司接到项目的时候,人员是如何人分配的?
       1四、大家给客户所作的项目,怎么保证客户系统的 安全
 
  1五、大家为客户提供什么样的后期服务?
 
  1六、相对web服务来讲,大家怎么知道当时客户的系统已经不能知足需求,当不能知足需求的时候,大家就用什么解决?
 
  以上就是我能记得的面试题了,还有几个记不起来了。真是一个比一个各色。面对这么各色的面试题,你能答出来多少?
 
  看完这个以后但愿你们能把本身能打答出来的写下来!

第四套

1,编写shell脚本获取本机的网络地址。好比:本机的ip地址是:192.168.100.2/255.255.255.0,那么它的网络地址是192.168.100.1/255.255.255.0
2,当用户在浏览器当中输入一个网站,说说计算机对dns解释通过那些流程?注:本机跟本地dns尚未缓存。
3,咱们都知道,dns既采用了tcp协议,又采用了udp协议,何时采用tcp协议?何时采用udp协议?为何要这么设计?
4,一个EXT3的文件分区,当使用touch test.file命令建立一个新文件时报错,报错的信息是提示磁盘已满,可是采用df -h命令查看磁盘大小时,只使用了,60%的磁盘空间,为何会出现这个状况,说说你的理由。
5,咱们都知道FTP协议有两种工做模式,说说它们的大概的一个工做流程?
1,#!/bin/sh
        LAN=eth0
        LOCALNET_MASK=`ifconfig $LAN|sed -e 's/^.*Mask:\([^ ]*\)$/\1/p' -e d`
        LOCALNET_ADDR=`netstat -rn|grep $LAN|grep $LOCALNET_MASK|cut -f1 -d' '`
        LOCALNET=$LOCALNET_ADDR/$LOCALNET_MASK
2,a.用户输入网址到浏览器
        b.浏览器发出DNS请求信息
        c.计算机首先查询本机HOST文件,看是否存在,存在直接返回结果,不存在,继续下一步
        d.计算机按照本地DNS的顺序,向合法dns服务器查询IP结果,
        e.合法dns返回dns结果给本地dns,本地dns并缓存本结果,直到TTL过时,才再次查询此结果
        f.返回IP结果给浏览器
        g.浏览器根据IP信息,获取页面
3,这个题须要理解的东西比较的多,分一下几个方面
        a,从数据包大小上分:UDP的最大包长度是65507个字节,响应dns查询的时候数据包长度超过512个字节,而返回的只要前512个字节,这时名字解释器一般使用TCP从发原来的请求。
        b,从协议自己来分:大部分的状况下使用UDP协议,你们都知道UDP协议是一种不可靠的协议,dns不像其它的使用UDP的Internet应用 (如:TFTP,BOOTP和SNMP等),大部分集中在局域网,dns查询和响应须要通过广域网,分组丢失和往返时间的不肯定性在广域网比局域网上更大,这就要求dns客户端须要好的重传和超时算法,这时候使用TCP
4,两种状况,一种是磁盘配额问题,另一种就是EXT3文件系统的设计不适合不少小文件跟大文件的一种文件格式,出现不少小文件时,容易致使inode耗尽了。
5,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能够良好的工做。

第五套

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系统运行了多少 时间?
二、监控主机执行: 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任意一种
三、[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}'
          www.baidu.com
          post.baidu.com
          mp3.baidu.com

4.若是获得随机的字串,长度和字串中出现的字符表可定义,并将字串倒序显示,如
把0123456789做为基准的字串字符表,产生一个6位的字串642031,打印出的字串为
130246,可以使用bash/perl/php/c任意一种.
四、 [root@localhost ~]#  awk -v count=6 'BEGIN {srand();str="0123456789";len=length(str);for(i=count;i>0;i--) marry =substr(str,int(rand()*len),1);for(i=count;i>0;i--) printf("%c",marry);printf("\n");for

(i=0;i<=count;i++) printf("%c",marry );printf("\n")}'
838705
507838
5.如何查看当前Linux系统的状态,如CPU使用,内存使用,负载状况等.
五、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 < /tmp/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 < /tmp/disk_check_mail)               
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
#######################################################################################################################
#######################################################################################################################
一、/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行和第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
三、read 命令5秒后自动退出
[root@localhost bin]# read -t 5
四、自动ftp上传
#!/bin/sh
ftp -n<<END_FTP
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

五、#打印第一个域
[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
六、实现字符串翻转
[root@localhost bin]# cat 8
qweqewqedadaddas
[root@localhost bin]# rev 8
saddadadeqweqewq
########################################第2次电面
七、sed awk grep哪一个最好
我答的是 哪一个掌握的精通,都很好,可是仍是问我哪一个最好,我只能说awk了,对于行操做和列操做均可以操做的很好。
八、grep -E -P 是什么意思
我说的是-E, --extended-regexp 采用规则表示式去解释样式。 -P不太清楚
九、还问了我对运维这个工做的理解,和应该具有的素质。
…………


后记:百度面试的这些日子,很刻苦的学习了一个阶段。脚本编写能力有了很大的提升。可是仍是很遗憾,没有去到那。打算在大连找个运维的工做,继续个人理想。工做几年以后,我还会继续努力的。
3年前,我是个连电脑开机关机都不会的农村孩子,如今我感受本身已经对于Linux入门了,我颇有成就感,可是我仍是被百度通知,我没有发展潜力。我是东软的学生,我老是认为计算机这个行业不看出身,只要有实力就能够了。可是第一次电面我没有被提早通知会电面,忽然打来的电话,当时正在睡觉,头脑一片空白……进入到第2次面试的时候,没有慌张准备的很充分,可是仍是没有最终被录取。面试的考官问我,你最失落的事是什么,我说我最失落的事是我高考前意外受伤休学了,我如今才意识到,我当时应该回答他,我最失落的时刻应该是我得知被百度拒绝的那一刻。已经付出了努力,即便失败也很坦然。
相关文章
相关标签/搜索