Linux系统工程师面试题(附答案)
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
方法一:
#!/bin/bash
#This script print ip and network
file=”/etc/sysconfig/network-scripts/ifcfg-eth0″
if [ -f $file ] then
IP=`grep “IPADDR” $file|awk -F”=” ‘{ print $2 }’`
MASK=`grep “NETMASK” $file|awk -F”=” ‘{ print $2 }’`
echo “$IP/$MASK”
exit 1
fi
方法二:
#!/bin/bash
#This programm will printf ip/network
#
IP=`ifconfig eth0 |grep ‘inet ‘ |sed ‘s/^.*addr://g’|sed ‘s/ Bcast.*$//g’`
NETMASK=`ifconfig eth0 |grep ‘inet ‘|sed ‘s/^.*Mask://g’`
echo “$IP/$NETMASK”
exit
17.在命令行下发一邮件,发件人:[email protected], 收信人:[email protected]
二、简述题:
1.linux下如何改IP,主机名,DNS
2.linux下如何添加路由
3.简述linux下编译内核的意义与步骤
4.简述Linux启动过程
5.简述DDOS攻击的原理
6.简述Tcp三次握手的过程
7.简述VPN,常见有哪几种?
三、设计题:
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服务器做负载均衡,用网络拓扑图表示并加以说明!(方法越多越好)
第一种方法: DNS轮巡
www1 IN A 192.168.1.1
www2 IN A 192.168.1.2
www3 IN A 192.168.1.3
ftp1 IN A 192.1.1.4
ftp2 IN A 192.1.1.5
ftp3 IN A 192.1.1.6
www IN CNAME www1
www IN CNAME www2
www IN CNAME www3
ftp IN CNAME ftp1
ftp IN CNAME ftp2
ftp IN CNAME ftp3
你的程序有两个问题,1,
trap
'rm
-f
/tmp/my_tmp_file_$$'
INT
这里应该用
双引号
"
"
将rm命令括起来,用单引号,
$$
不会变成进程pid
2,
while
[
-f
/tmp/my_tmp_file__$$
]
你一直使用的是
/tmp/my_tmp_file_$$,
但是这里却用的是
file__$$
两个下划线,错了。
我这里正好有一个类似的程序,改了一下,看看能否满足需要吧
//file: read_write_fifo.c#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <fcntl.h>
#include <errno.h>
#include <sys/stat.h>
int main(int argc,char **argv)
{
int fd
int len = 0
char read_buf[1024]
char write_buf[1024]
pid_t pid
int status = 0
if(mkfifo("fifo1", 0666) < 0 && errno!=EEXIST) // 创建FIFO管道
perror("Create FIFO Failed")
if((pid = fork()) < 0) // 创建子进程
perror("Fork error\n")
else if (pid == 0)
{
if((fd = open("fifo1", O_WRONLY)) < 0) // 以写打开一个FIFO
{
perror("Open FIFO Failed")
exit(1)
}
while(1)
{
printf("Child send:")
scanf("%s",write_buf)
if(!strcmp(write_buf,"quit"))
{
close(fd)
exit(0)
}
if(write(fd, write_buf, 1024) < 0) // 写入到FIFO中
{
perror("Write FIFO Failed")
close(fd)
exit(1)
}
usleep(100)
}
}
if((fd = open("fifo1", O_RDONLY)) < 0) // 以读打开FIFO
{
perror("Open FIFO Failed")
exit(1)
}
while(waitpid(pid, &status, WNOHANG) == 0)
{
len = read(fd, read_buf, 1024) // 读取FIFO管道
if(len > 0)
printf("Father recv: %s\n", read_buf)
}
close(fd) // 关闭FIFO文件
return 0
}
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)