第一套
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 <等级> 注意:<等级>是参数,不是选项,没有前缀-号。 调整指定用户的所有进程的等级 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 1821 0 100600 8192 1/ 1 Sun May 13 19:22:46 2001 „„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„ 36137 0 1004 4 1/ 1 Tue Apr 24 10:11:15 2001 196829 0 1004 149500 38/ 38 Mon May 27 13:52:04 2001 debugfs: 列出的文件有很多(这里找到2692个),第一字段是文件节点号,第二字段是文件所有者,第三字段是读写权限,接下来是文件大小,占用块数,删除时间。然后就可以根据文件大小和删除日期判断那些是我们需要的。比如我们要恢复节点是196829的文件: 可以先看看文件数据状态: debugfs:stat Inode: 196829 Type: regular Mode: 04 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 [01004] 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 ‘ |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.简述VPN,常见有哪几种? 8. ‘inet 三:设计题: 1.系统设计 请考虑以下系统的设计. 您可以翻阅资料,查询任何您有帮助的资料、指南等。 您有的资源: 8台安装Linux (2.6内核) 的双网卡PC服务器以及相关开源软件,交换机 Apache 2.2.x Tomcat 5.5.X 数据库系统 最多8个Internet IP地址,请您设计一个系统: 1、使用双apache web server前端; 2、采用AJP连接后段的3台Tomcat应用服务器,这些tomcat被配置成cluster, 因此需要考虑apache对后端的分配, 分配采用完全平衡的方法 ; 配置使用cookie来实现session stickness; 3、1台数据库服务器只有tomcat才需要连接,也不需要对Internet提供服务。 4、考虑系统的安全性和维护方便性; 5、通过rewrite规则配置把下属URL规则改写成友好的URL http://server/webapp/getinfo?id=XXXX&name=YYYY –> http://server/getinfo/YYYY/XXXX 您需要提交 1、服务器规划,包括: * 网络结构图 * 每台机器的IP地址分配 * 每台机器上运行的关键软件 * 您从安全性和维护性方面的考虑 2、Apache的以下配置文件给我们: * extra/http-proxy-ajp.conf * extra/http-rewrite.conf 2.你可以采取任何设备和不同操作系统服务器设计对两台WWW服务器和两台FTP服务器做负载均衡,用网络拓扑图表示并加以说明!(方法越多越好) 这个面试已经过了快一个月了,前段时间没有发上来,今天稍微整理了以下发上来了。本来是想写感想那,但是从小学开始语文都不好。也不知道从那里写起。呵呵! 这家公司挺大的,听别人说和sina一个级别的。具体的就在这里不说出来了。我从哪里面试出来之后我就想这是面试的SA,好像不是项目经理吧,外企就是不一样啊! 还有就是他在问了问题之后,我答完之后就接着下一个,中间没有任何什么其他的话,脸上也没有表情。面试完之后完回到家里靠自己的记忆记下了面试中的16道面试题。发给朋友看看,他们有的说变态,有的说这好像不是SA面试题吧。 汗„„还是自己的能力不行啊。 第三套 1、在同一个网站中,当客户访问的时候,会出现有的页面访问的速度快而有的慢,系统和服务完全正常、网络带宽正常。这是那里出现问题了那? 2、你以前做过的项目中,单台服务器的最大并发量是多少?说下你硬件的配置? 3、你以前在工作中遇到的,一个困难的技术问题是什么,最后怎么解决的 ? 4、你说下你技术的强项和不足? 5、在一个系统架构中,我们为了避免单点故障,会怎么做? 6、apache2.x版本中两个不同的运行模式是什么,有什么不同? 7、如果给你很多台服务器,你该怎么去管理? 8、如果给你一个100人的团队你怎么带好他们? 8、如何优化linux系统,说出命令和相应的回值? 9、怎么查看一个服务器运行正常? 10、为什么有些公司会把自己的系统项目外包出去,而自己不招自己系统工程师,说说自己 的看法? 11、如果一个web服务器出现问题,你会怎么做? 12、如何添加一个apache的rewirte模块,rewirte模块的原理是什么? 13、你以前所在的公司接到项目的时候,人员是如何人分配的? 14、你们给客户所做的项目,怎么保证客户系统的安全? 15、你们为客户提供什么样的后期服务? 16、相对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的日志会打印到哪里,为什么? 1、新的日志会打印在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\"\\ 3 www.baidu.com 2 post.baidu.com 1 mp3.baidu.com 4.如果得到随机的字串,长度和字串中出现的字符表可定义,并将字串倒序显示,如 把01234567作为基准的字串字符表,产生一个6位的字串2031,打印出的字串为 130246,可使用bash/perl/php/c任意一种. 4、 [root@localhost ~]# awk -v count=6 'BEGIN {srand();str=\"01234567\";len=length(str);for(i=count;i>0;i--) marry=substr(str,int(rand()*len),1);for(i=count;i>0;i--) printf(\"%c\ (i=0;i<=count;i++) printf(\"%c\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或者4 ####脚本如下####################### #!/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 ############################################################################### ######################################## ####################################################################################################################### 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 4 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 1 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 4 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 usp 65.00 lvx2c 1 216 Sept 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 483 nov 7pl1998 usp 37.00 kvm9d 4 3、read 命令5秒后自动退出 [root@localhost bin]# read -t 5 4、自动ftp上传 #!/bin/sh ftp -n< 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 5ap1996 3zl1998 344 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不太清楚
因篇幅问题不能全部显示,请点此查看更多更全内容
Copyright © 2019- 91gzw.com 版权所有 湘ICP备2023023988号-2
违法及侵权请联系:TEL:199 18 7713 E-MAIL:2724546146@qq.com
本站由北京市万商天勤律师事务所王兴未律师提供法律服务