Linux系统工程师面试题附答案(2)

Linux系统工程师面试题附答案(2),第1张

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

}


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/yw/7228704.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-03
下一篇 2023-04-03

发表评论

登录后才能评论

评论列表(0条)

保存