运维错题总结

1、对linux下mysqldump备份命令的参数描述正确的是

mysqldump -h ip -uroot -p DBNAME > bck.sql

解释:-h 主机名 -u 用户名 -p 密码
DBNAME 数据库名

2、linux中,一个端口能够接受tcp链接数量的理论上限是

无上限

解释:标识一个tcp链接的是,客户端和服务器的ip加端口号,尽管服务器ip地址和端口号一样,但是客户端ip地址不一样,而客户端端口号具有本地意义,理论上服务器的端口能接受的链接无上限

3、unix系统中,可以用于进程间的通信

socket、共享内存、消息队列、信号量

**解释:
linux进程间通信:管道、信号、消息队列、共享内存、信号量、套接字(socket)、文件锁

linux线程间通信:互斥量(mutex)、信号量、条件变量
windows进程间通信:管道、消息队列、共享内存、信号量(semaphore)、套接字
windows线程间通信:互斥量、信号量、临界区(critical section)、事件(event)**

管道(Pipe):管道可用于具有亲缘关系进程间的通信,允许一个进程和另一个与它有共同祖先的进程之间进行通信。

命名管道(named pipe):命名管道克服了管道没有名字的限制,因此,除具有管道所具有的功能外,它还允许无亲缘关系进程间的通信。命名管道在文件系统中有对应的文件名。命名管道通过命令mkfifo或系统调用mkfifo来创建。

信号(Signal):信号是比较复杂的通信方式,用于通知接受进程有某种事件发生,除了用于进程间通信外,进程还可以发送信号给进程本身;linux除了支持Unix早期信号语义函数sigal外,还支持语义符合Posix.1标准的信号函数sigaction(实际上,该函数是基于BSD的,BSD为了实现可靠信号机制,又能够统一对外接口,用sigaction函数重新实现了signal函数)。

消息(Message)队列:消息队列是消息的链接表,包括Posix消息队列system V消息队列。有足够权限的进程可以向队列中添加消息,被赋予读权限的进程则可以读走队列中的消息。消息队列克服了信号承载信息量少,管道只能承载无格式字节流以及缓冲区大小受限等缺

共享内存:使得多个进程可以访问同一块内存空间,是最快的可用IPC形式。是针对其他通信机制运行效率较低而设计的。往往与其它通信机制,如信号量结合使用,来达到进程间的同步及互斥。

内存映射(mapped memory):内存映射允许任何多个进程间通信,每一个使用该机制的进程通过把一个共享的文件映射到自己的进程地址空间来实现它。

信号量(semaphore):主要作为进程间以及同一进程不同线程之间的同步手段。

套接口(Socket):更为一般的进程间通信机制,可用于不同机器之间的进程间通信。起初是由Unix系统的BSD分支开发出来的,但现在一般可以移植到其它类Unix系统上:Linux和System V的变种都支持套接字。

4、从四个选项telnet rsync wget scp 中选择不同的是

rsync

解释: rsync 数据镜像工具 支持的协议可以tcp、udp、而其他都是面向连接(tcp)协议,一定程度上保证可靠性

5、在linux系统中,运行一个程序,程序中为初始化的全局变量会被加载到哪个内存段中

BSS

解释:
BSS(block started by symbol)用来存放程序中未初始化的全局变量和静态变量 特点:可读可写 ,在程序执行前自动清0
DATA 存放程序中已初始化的全局变量,属于静态分配内存
栈(stack)堆栈,用户存放程序临时创建的局部变量 可看作 寄存、交换临时数据的分区

6、关于系统调用的描述错误的是

系统调用中被调用的过程运行在“用户态”

解释:用户空间与系统空间所在的内存空间不同,所以cpu的运行状态也不同,在用户空间cpu处于“用户态”,在系统空间中,cpu处于“系统态”

7、git pull --rebase、git merge、git cherry-pick、git blame 不是合并代码用的

git blame

解释:执行 git blame 会逐行显示文件,并在每一行的行首显示commit号,提交者,最早的提交日期

8、关于clone和fork 的区别描述正确的是

clone是fork的升级版本,不仅可以创建进程或者线程,还可以指定创建的新的命名空间,有选择的继承父进程的内存、甚至可以将创建出来的进程变成父进程的兄弟进程等

解释:fork 复制进程,创建一个新进程,不带参数clone是可选的复制父进程资源,可通过参数控制复制的内容

8、关于android dvm 的进程和linux进程,应用程序的进程说法正确的是

DVM 指dalivk 的虚拟机,每一个android
应用程序都在自己的进程中执行,都拥有一个独立的dalivk虚拟机实例,而每一个DVM都是在linux 中的一个进程,所以可以认为是同一个概念

9、unix 系统由哪几部分组成

kernel内核、shell外壳、工具及应用程序

解释:UNIX系统由内核、shell、文件系统和应用程序等4部分组成。

10、有关bash配置文件,说法正确的是

.bash_logout :退出shell时,要执行的命令

.bash_profile : 每个用户都可以使用该文件输入专用于自己使用的shell信息,当用户登录时,该文件仅执行一次,默认情况下

/etc/profile :此文件为系统的每个用户设置环境信息,当用户第一次登陆时,该文件被执行

解释:/etc/bash.bashrc 对所有用户起作用,~/.bashrc 多拥有者当前的home目录的用户起作用,也就是当前用户

11、在dhcp.conf中用于向某个主机分配固定的IP地址的参数是

fixed-address

hardware 语句
语法:hardware hardware-type hardware-address;
指明物理硬件接口类型和硬件地址。硬件地址由6个8位组构成,每个8位组以“:”隔开。如00:00:E8:1B:54:97
server-name 语句
server-name “name”;
用于告诉客户服务器的名字。
fixed-address 语句
fixed-address address [, address … ];
fixed-address 语句用于指定一个或多个IP地址给一个DHCP客户。只能出现在host声明里。

12、将文件file1复制为file2可以用的命令

cp file1 file2
cat file1 > file2
cat < file1 > file2
dd if= file1 of=file2
cat file1 | cat > file2

解释:dd 作用指定大小的拷贝文件,并在拷贝的同时进行指定的转换 if 输入文件 of 输出文件

13、tcp 的握手与分手,可能出现的情形有:

握手需要三次通信
分手需要四次通信
fin 和ack 在同一个包
ack和syn 在同一个包

解释:ACK和SYN在第二次握手的时候

14、在linux中查看ARP缓存记录的命令是

arp -a

15、linux执行老ls,会引起哪些系统调用

read、 execve、fork

解释:任何shell 都会执行exec 和 fork
ls执行read

16、以下函数strcpy、strncpy、snprintf、strcat、strtok、strncat中,和其他函数不属于同一类得是:

snprintf

解释:
首先,使用场景不同。除了snprintf之外,其他的都是用于两个字符串之间进行比较、拷贝、拼接等操作的,而snprintf最主要是,要把一个用户变量按照一个format打印到字符串中。
其次,函数参数类型不同。除了snprintf之外,其他的都是定长参数,而snprintf是接受变长参数的。最后,定义位置也不同,除了snprintf位于stdio.h之外,其他的都是string.h中的。

17、在UNIX操作系统中,若用户键入的命令参数的个数为1时,执行cat$1命令:若用户键入的命令个数为2时,执行cat>>$2<$1命令,请将下面所示的shell程序的空缺部分补齐

case () in
    1)cat $1;;
    2)cat>>$2<$1;;
    *)echo 'defult...';;
esac

$#

解释:在UNIX中,$$、$@、$#以及$的含义分别如下:
$$表示当前命令的进程标识数。
表示所有位置参量,例如$1、$2等。
$@与$类似,但当用双引号进行转义时,"$@"能够分解多个参数,而"$"合并成一个参数。
$#包括位置参数的个数,但是不包括命令名。

18、哪个变量用来指定一个远程x应用程序将输出放到哪个x server

display

解释:Linux X Window System中X是一个开放的协议规范,当前版本为11,俗称X11。X Window System由客户端和服务端组成,服务端X Server负责图形显示,而客户端库X Client根据系统设置的DISPLAY环境变量,将图形显示请求发送给相应的X Server。

19、awk'BEGIN { Arr[2,79]=78 __________ }'
为了让执行的结果是78,应该填()语句

print Arr【“2\03479”】
print Arr [2,79]
idx=2 SUBSEP 79; print Arr 【idx】
print Arr 【2,79】

解释:
SUBSEP
SUBSEP(Subscript Separator) 数组下标的分隔字符, 预设值为”\034″实际上, awk中的 数组 只接受 字串 当它的下标,如: Arr[“John”]。
但使用者在 awk 中仍可使用 数字 当阵列的下标,甚至可使用多维的数组(Multi-dimenisional Array) 如: Arr[2,79]。 事实上,awk在接受 Arr[2,79] 之前,就已先把其下标转换成字串”2\03479″,之后便以Arr[“2\03479”] 代替 Arr[2,79]。

20、你们公司有三个办事处,这三个办事处的电脑在公司网络上都属于一个Windows 2000域。所有的服务器都装有Windows 2000Server 系统,此网络通过帧中继连接。你在名为Mon1服务器上安装了一个第三方网络管理套件。你需要确保这个新的软件能结合并管理网络中现有的设备。你该怎么做?

除了Mon1.所有的计算机都安装SNMP

解释:SNMP基于TCP/iP协议工作,对网络中支持SNMP协议的设备进行管理,所有支持SNMP的设备,都可以由SNMP统一管理,管理员进行统一的管理操作

关于孤儿进程和僵死进程的描述,说法正确的是

孤儿进程:一个父进程退出,而它的一个或多个子进程还在运行,那么哪些子进程将成为孤儿进程,该进程将被init进程(进程号为1)所收养,并由init 进程对它们完成状态收集工作

僵尸进程:一个进程使用fork创建子进程,如果子进程退出,而父进程并没有调用wait或waitpid获取子进程的状态信息,那么子进程的进程描述符保存在系统中,成为僵尸进程

如果进程不调用wait / waitpid的话,
那么保留的那段信息就不会释放,其进程号就会一直被占用,但是系统所能使用的进程号是有限的,如果大量的产生僵死进程,将因为没有可用的进程号而导致系统不能产生新的进程.
此即为僵尸进程的危害,应当避免。

孤儿进程并不会造成伤害

21、调用recv(int sockfd ,void *buf ,size_t len, int flags)的过程中,一共进行了几次内存复制操作

2

解释:recv 接受对端socket数据,经过两次系统那个调用首先将内核中数据拷贝到自己的协议栈,然后recv返回将数据从内核缓冲拷贝到用户buffer,内核从对端接收数据,放在socket缓冲,然后复制到应用层的buffer,所以一共两个

22、Linux系统中,已经将dhcp服务架设好,客户端的网络接口eth0,可通过()命令获得服务器分配的IP

dhcpclient ifdown eth0 ;ifup eth0 service network stop;service
network start

23、单任务系统中两个程序A,B,A程序:c’pu:10s -> 设备1:5s -> CPU: 5s -> 设备2:10s -> CPU:10s;
B程序:设备1:10s -> CPU:10s -> 设备2:5s -> CPU: 5S -> 设备2: 10s;
执行顺序为A ->B,那么CPU的利用率为( )

50%

解释:两个任务执行完成所需要时间为:10 + 5 + 5 + 10 + 10 + 10 + 10 + 5 + 5 + 10 = 80s
CPU所需时间为: 10 + 5 + 10 + 10 + 5 = 40s
故CPU利用率为:40 / 80 = 0.5.

24、 malloc / free 和 new / delete 的本质区别

malloc/free 是c/c++ 语言的标准库函数,new  /delete 是c/c++的运算符

new 能自动分配空间大小

对于用户自定义的对象而言,用malloc/free无法满足动态管理对象的要求
    对象在创建的时候会自动调用构造函数,对象在消亡之前自动执行析构函数
    由于malloc/free是库函数而不是运算符,不在编译器的控制范围,不能把构
    造函数和析构函数的任务强加于malloc/free 。一次C++需要一个能够对对象完
    成动态分配内存和初始化工作的运算符new,以及一个释放内存的运算符
    delete。简单来说就是new/delete能完成跟家详细的对内存的操作,而malloc/
    free不能。

25、内存空间被分成不同区域,其中用函数
void * malloc(unsigned int size);
申请的内存在

动态存储区

26、在cpu和物理内存之间进行地址转换,()将地址从虚拟(逻辑)地址空间映射到物理地址空间

MMU

解释:MMU内存管理单元,是中央处理器用来管理虚拟内存和物理内存寄存器的控制线路,同时负责虚拟内存映射为物理内存

TCB线程控制块   PCB 进程控制块
CACHE缓冲寄存器
DMA 直接内存存储,传输数据从一个地址空间到另一个地址空间

27、vsftpd 服务流量控制的参数

local_max_rate
anon_max_rate

解释:访问速率设置

anon_max_rate=0
设置匿名登入者使用的最大传输速度,单位为b/s,0表示不限制速度,默认值为0
local_max_rate=0
本地用户使用的最大传输速度,单位为b/s,0表示不限制速度,预设值为0

28、执行指令 find / -name “test.c”,按下ctrl+z 后的提示有【1】166,可以继续执行的方式有

fg 1

解释:fg 将后台的命令调至前台继续执行
bg 将一个在后台暂停的命令,变成继续执行
ctrl +z 将一个正在前台执行的命令放在后台,并且暂停
ctrl + h 在shell 向左删除的作用

29、进程a读取b进程中的某个变量(非共享内存),可行的方式

b进程向消息队列写入一个包含变量内容的消息,a进程从队列读出

哦通过本地环路通信

解释:命名管道虽然可以通讯,但是把变量的地址传递过去是没有用的,因为不同的进程的地址空间是独立的,谁也不能访问谁的,只有传值才行,传地址是不行的,所以错;
子进程虽然是由父进程fork()出来的,但是仍然属于两个进程,不同进程之间也是独立的,子进程无权读取父进程的变量。

30、导致用户从用户态切换到内核的操作是

整数除以0
read 系统调用

解释:用户态切换到内核的3种方式:
系统调用
异常
外围设备的中断

31、bash环境中挂起当前进程的方式

ctrl +z

解释:ctrl+z把正在运行的程序调到后台,暂停一个前台的作业,即挂起 。
ctrl+x在某些文字处理程序中,这个控制字符将会剪切高亮的文本并且将它复制到剪贴板中。
ctrl+v在输入文本的时候,按下之后,可以插入控制字符。
ctrl+c中断,终结一个前台作业。

32、和其他函数read、pread、write、pwrite、发seek、lseek不属于同一类的是

fseek

解释:fseek库函数,其他都是调用

33、关于读屏障、写屏障、通用屏障、优化屏障说法正确的是

优化屏障用于限制编译器的指令重排
通用屏障对读写操作都有影响
读屏障用于保障读操作有序,屏障之前的读操作一定会先于屏障之后的读操作,写操作不受影响

34、在RHEL5系统中,关于shell环境变量配置文件描述正确的是

用户登录系统时,bash首先执行/etc/profile配置文件和/etc/profile.d/目录下的配置文件,这些配置文件对所有用户都有效

解释:/etc/priofile 为系统的每一个用户设置环境信息,当用户第一次登陆,该文件被执行,并从/etc/prifile.d 目录的配置文件中搜集shell的设置
/etc/nashrc 为每一个运行bahs shell 的用户执行此文件,当bash shell 被打开时,该文件被录取
~/.bash_profile 每个用户都可以使用该文件输入专用于自己的shell 信息,当用户登录执行,该文件仅被执行一次,默认情况下,设置一些环境变量,执行 ~/.bashrc
~/.bashrc 该文件包含专用于用户的bash shell 的bash 信息,当登陆时以及每次打开新的shell 该文件被录取

35、在Linux下64位c程序,请计算输出的三个sizeof分别是:

void func(char str_arg[100])
{
cout<<sizeof(str_arg)<<endl;
}
int main(int argc,char* argv[])
{
char str[]=“Hello”;
char *p=str;
cout<<sizeof(str)<<endl;
cout<<sizeof§<<endl;
func(“test”);
return 0;
}

6,8,8

解释:64位系统,字符串大小还包括‘\0’,个数位6,字符指针大小为8

36、windows平台通过栈溢()出想要利用包含stack cookie 保护的函数都有哪些方式

暴力猜解coolie内容
更改函数内部变量改变逻辑
SEH覆盖

37、为所有用户配置一个自定义注册项,用最简洁的操作,才能将自定义注册项添加到一个组策略对象中

配置一个ADM模板并把模板添加到GPO

解释:1.ADM 文件是不能单独打开的。
2.ADM 文件是组策略用以描述基于注册表的策略设置在注册表中的存储位置的模板文件。
3.ADM 文件还描述了管理员在“组策略对象编辑器”管理单元中看到的用户界面。管理员使用组策略对象编辑器创建或修改组策略对象 (GPO)。

38、linux主机的负载相关指标

uptime、top、sar

解释:sar -u 显示cpu信息,-u默认选项,输出以百分比显示cpu使用情况

39、设fp已定义,执行语句fp=fopen(“file”,“w”);后,以下针对文本文件file操作叙述的选项错误的是:

可以随意读写
可以在原有内容后追加写
写操作结束后可以从头开始读

解释:fopen(“file”,”w”)打开文件,并赋值为“w”权限,即写权限,因为这里不具有读权限;用“w”打开的文件只能向该文件写入。若打开的文件不存在,则以指定的文件名建立该文件,若打开的文件已经存在,则将该文件删去,重建一个新文件。D所描述的权限应该是“w+”而非“w”,所以D错误;

40、那些函数必须进入内核才能完成

fopen、exit

解释:fopen是ANSIC标准中的C语言库函数,在不同的系统中应该调用不同的内核api
linux中的系统函数是open,fopen是其封装函数,
exit终止进程,需要内核

41、说法正确的是

对进程来说,其虚拟内存的大小不受物理内存的限制

线程有自己的栈,但没有堆,普通整数的一般赋值、增量和减量语句会产生多条机器指令,操作均不具有原子性,需要同步,虚拟存储器具有请求调入和置换功能,所以虚拟内存的大小不受物理内存大小的限制。

42、有关Nginx配置文件nginx.conf的叙述正确的是

nginx进程数设置为CPU总核心数最佳 设置工作模式与连接数上限时,应考虑单个进程最大连接数(最大连接数=连接数*进程数)

解释:进程数设置为CPU总核心数最佳。
B. 配置虚拟主机,多个域名时,用 空格 分隔。
C. 设定http服务器中 sendfile on; #开启高效文件传输模式, 普通应用设置为on;
用于进行下载等应用磁盘IO重负载应用,设置为off,以平衡磁盘与网络I/O处理速度,降低系统的负载
D. 工作模式与连接数上限 :(最大连接数 = 连接数 * 进程数)

43、在linux编程中,以下哪个TCP的套接字选项与nagle算法的开启和关闭有关

TCP_NODELAY

解释:为了解决大量的小报文对通信造成的影响,提高传输效率

44、哪些命令可以查看当前系统的启动时间

w、 top、uptime、

解释:who -b 查看当前系统的启动时间
last reboot 查看当前系统的启动时间
ps 查看系统的进程
w 查看当前系统的启动时间

top 查看当前系统的启动时间
uptime查看当前系统的启动时间

45、有关ext2和ext3 文件系统描述区别是

EXT2、EXT3:linux环境上的文件系统。ext2/ext3文件系统使用索引节点来记录文件信息,作用像windows的文件分配表。索引节点是一个结构,它包含了一个文件的长度、创建及修改时间、权限、所属关系、磁盘中的位置等信息。
EXT2、EXT3的区别如下:
(1)ext2和ext3的格式完全相同,只是在ext3硬盘最后面有一部分空间用来存放Journal(日志)的记录;
(2)在ext2中,写资料到硬盘中时,先将资料写入缓存中,当缓存写满时才会写入硬盘中;
(3)在ext3中,写资料到硬盘中时,先将资料写入缓存中,鼗缓存写满时系统先通知Journal,再将资料写入硬盘,完成后再通知Journal,资料已完成写入工作;
(4)是否有Journal的差别:
在ext2中,系统开机时会去检查有效位(Valid bit),如果值为1,表示系统上次有正常关机;如果为0,表示上次关机未正常关机,那系统就会从头检查硬盘中的资料,这样时间会很长;
在ext3中,也就是有Journal机制里,系统开机时检查Journal的资料,来查看是否有错误产生,这样就快了很多;
(5)tune2fs –j 将ext2转换成ext3
Ext3 目前所支持的最大16TB 文件系统和最大2TB 文件,Ext4 分别支持 1EB(1,048,576TB, 1EB=1024PB, 1PB=1024TB)的文件系统,以及 16TB 的文件。

46、系统当前已经加载的所有文件系统在 ——文件中得到反映

/etc/mtab

解释:
/etc/matab 作用:记载的是现在系统已经装载的文件系统,包括操作系统建立的虚拟文件
/etc/fatab 作用:记录了计算机上硬盘分区的相关信息,启动linux的时候,检查分区的fsck命令,挂在分区的mount 命令

47、下列程序代码在Linux系统执行后"“会被输出多少次()
void main()
{
int i;
for(i=0;i<3;i++)
{
fork();
printf(”
\n");
}
return;
}

14

解释:
第一个进程用 P 表示,
它的子进程用C+数字表示(C1/C2/C3),
子进程的子进程同样加数字表示(C1子进程C11/C12/C13、、、)。
i = 0 P C1 --------------------------------------------------2个
i = 1 P C1 C2 C11--------------------------------------4个
i = 2 P C1 C2 C3 C11 C12 C111 C21—8个
所以共:2+4+8 = 14个

48、若一台计算机的内存为128MB,则交换分区的大小通常是

256MB

解释:交换分区一般是物理分区的2倍
在小于2GB物理内存的系统中,交换分区大小应该设置为内存大小的两倍;
如果内存大小多于2GB,交换分区大小应该是物理内存大小加上2GB;

49、vsftpd 配置本地用户传输速率的参数

anon _max_rate

50、关于静态库与动态库的区别,说法错误的是

加载动态库的程序运行速度相对较快

1静态链接库的优点 

 (1)代码装载速度快,执行速度略比动态链接库快; 

 (2)只需保证在开发者的计算机中有正确的.LIB文件,在以二进制形式发布程序时不需考虑在用户的计算机上.LIB文件是否存在及版本问题,可避免DLL地狱等问题。 

2动态链接库的优点 

 (1)更加节省内存并减少页面交换;

 (2) DLL文件与EXE文件独立,只要输出接口不变(即名称、参数、返回值类型和调用约定不变),更换DLL文件不会对EXE文件造成任何影响,因而极大地提高了可维护性和可扩展性;

 (3)不同编程语言编写的程序只要按照函数调用约定就可以调用同一个DLL函数;

 (4)适用于大规模的软件开发,使开发过程独立、耦合度小,便于不同开发者和开发组织之间进行开发和测试。

3不足之处

 (1)使用静态链接生成的可执行文件体积较大,包含相同的公共代码,造成浪费;

 (2)使用动态链接库的应用程序不是自完备的,它依赖的DLL模块也要存在,如果使用载入时动态链接,程序启动时发现DLL不存在,系统将终止程序并给出错误信息。而使用运行时动态链接,系统不会终止,但由于DLL中的导出函数不可用,程序会加载失败;速度比静态链接慢。当某个模块更新后,如果新模块与旧的模块不兼容,那么那些需要该模块才能运行的软件,统统撕掉。这在早期Windows中很常见。

51、采用多路复用I/O监听3个套接字的数据时,如果套接字描述符分别是:5,17,19,则
1
select(int maxfd,struct fd_set* rdset,NULL,NULL)
中的maxfd应取为()

20

解释:Maxfd要监视的文件描述符的范围,一般取监视的描述符数的最大值+1

52、述是Linux下多线程编程常用的pthread库提供的函数名和意义,说法正确的有

pthread_create 创建一个线程
pthread_join用来等待一个线程的结束
pthread_mutex_init初始化一个线程互斥锁
pthread_exit结束一个线程

解释:pthread_join()函数等待线程指定的线程
终止。 如果线程已经终止,那么pthread_join()
立即返回。 指定的线程必须可接合线程。

53、使用pthread库的多线程程序编译时1需要加什么连接参数

-lpthread

解释:pthread不是linux默认的库,连接时需要使用库libpthread.a,所以在使用pthread_create创建线程在编译中要加-lpthread参数

54、在退出unix系统账户之后还需要继续运行某个线程,可用

nohup

解释:nohup: no hang up 不挂起
在注销后使用nohup 运行后台的程序

55、linux两个进程可以同时打开同一个文件,如下描述正确的是

两个进程分别产生两个独立的id
两个进程可以任意对文件进行写操作,操作系统并不保证写的原子性
进程可以通过系统调用对文件加锁,从而实现对文件内容的保护
两个进程可以分别读取文件的不同部分而不会相互影响
一个进程对文件长度和内容的修改另外一个进程可以立即感知

解释:如果两个进程同时打开同一个文件,一个线程执行删除操作,只要另一个线程不退出,就可以继续对该文件进行操作,一旦退出才会找不到该文件的索引节点而报错。

55、linux的非root用户,在自己的目录下,不可以删除非空目录dirs的方法是

rm dir dirs
mv dirs /dev/null
destory dirs

解释:/dev/null 文件的权限是666,不具备执行权限,所以不能通过/dev/null 删除

56、网络服务的daemon是

netd

解释:netd :networkdaemon缩写,network守护进程,netd负责与一些涉及网络的配置,操作,管理,查询等相关的功能实现,例如:带宽控制,流量统计,网络地址转换(NAT),个人局域网(pan),ppp链接,soft-ap,共享上网(tether),配置路由表,interface配置管理
inetd 监视网络请求的守护进程,根据网络请求调用相应的服务进程处理请求,为多个服务管理连接,当inetd接到连接,能够确定连接所需的程序,启动相应的进程,并把socket交给他

57、int main{
fork()|| fork()
}
共创建几个进程

3

解释:fork()给子进程返回一个零值,而给父进程返回一个非零值;在main这个主进程中,首先执行 fork() || fork(), 左边的fork()返回一个非零值,根据||的短路原则,前面的表达式为真时,后面的表达式不执行,故包含main的这个主进程创建了一个子进程,由于子进程会复制父进程,而且子进程会根据其返回值继续执行,就是说,在子进程中, fork() ||fork()这条语句左边表达式的返回值是0, 所以||右边的表达式要执行,这时在子进程中又创建了一个进程,即main进程->子进程->子进程,一共创建了3个进程。

58、linux下解释: ip rule add from 192.168.3.112/32 [tos 0x10] table 2 pref 1500

向规则链增加一条规则,规则匹配的对象是IP为192.168.3.112,tos等于0x10的包,使用路由表2,这条规则的优先级是1500

解释:规则包含3个要素:
什么样的包,将应用本规则(所谓的SELECTOR,可能是filter更能反映其作用);
符合本规则的包将对其采取什么动作(ACTION),例如用那个表;
本规则的优先级别。优先级别越高的规则越先匹配(数值越小优先级别越高)。

59、man 5 passwd

显示passwd文件的结构

解释:man的级别:
1:查看命令的帮助
2:查看可被内核调用的函数的帮助
3:查看函数和函数库的帮助
4:查看特殊文件的帮助(主要是/dev目录下的文件)
5:查看配置文件的帮助
6:查看游戏的帮助
7:查看其它杂项的帮助
8:查看系统管理员可用命令的帮助
man -f 【命令】–可以查看这个命令有哪些级别

59、基于linux操作系统开发的ARM应用程序源文件teast.c,那么生成该程序代码的调试信息,编译时使用的GCC正确的是

arm-linux-gcc -g -o test test.c

**解释:arm-linux-gcc -g -o example example.c
-g选项,加入GDB能够 使用 的调试信息, 使用 GDB调试时比较方便
arm-linux-gcc -o example example.c
不加-c、-S、-E参数,编译器将执行预处理、编译、汇编、连接操作直接生成可执行代码。
-o参数用于指定输出的文件,输出文件名为example,如果不指定输出文件,则默认输出a.out

arm-linux-gcc -c -o example.o example.c
-c参数将对源程序example.c进行预处理、编译、汇编操作,生成example.0文件
去掉指定输出选项"-o example.o"自动输出为example.o,所以说在这里-o加不加都可以

arm-linux-gcc -S -o example.s example.c
-S参数将对源程序example.c进行预处理、编译,生成example.s文件
-o选项同上**

60、使用什么命令把打印任务放到打印中打印

lpr

解释:lprm 将一个工作由打印机伫列中一处
lpq 查看一个打印队列的状态,及其包含的任务
lpd 一个常用的打印机管理员,或根据/etc/printcap 的内容管理本地或远端的打印机
lpr 实用程序,将一个或多个文件放入打印队列等待打印

61、哪些因素不会限制linux服务器并发连接数

系统网卡数量

解释:网卡作用是对数据的封装和解封

62、说法正确的是

A:linux系统中的/var/log/lastlog日志记录了所有用户最后登录的记录,可以用lastlog命令查看

B:linux系统中的/var/log/last日志可以用last命令查看
C:/var/log/wtmp日志记录了登录过本系统的用户信息,可以用tail -f命令查看

D:/var/run/utmp日志记录了正在登录本系统中的用户信息,可以用last -f命令查看

解释:B. 执行last指令时,它会读取位于/var/log/wtmp的文件,并把该给文件的内容记录的登录系统的用户名单全部显示出来。
C.wtmp是二进制文件,他们不能被诸如tail命令剪贴或合并,需要使用who、w、users、last和ac来使用这两个文件包含的信息。

63、使用useradd创建用户和主目录相关的参数是

d m M

解释:-p 设定帐户的密码
-m 自动建立用户的主目录
-M 不要自动建立用户的主目录

64、linux查看服务程序占用的端口是

netstat -apn

解释:netstat 命令用于显示各种网络相关信息,如网络连接,路由表,接口状态,连接等信息。
参数apn的作用如下:
-a (all)显示所有选项,默认不显示LISTEN相关
-p 显示建立相关链接的程序名
-n 拒绝显示别名,能显示数字的全部转化成数字。
lsof 查看PID执行的程序

65、有关内核线程和用户线程说法错误的是

内核进程之运行在内核态,不受用户态的影响

解释:协程调度不进入内核态

66、apache目录访问控制的参数

authname、authtype、authuserfile

解释:AuthName:验证窗口的名称
AuthType:验证的类型,这里定义的是Basic
AuthUserFile:验证所使用的帐号密码配置文件
Require:指定可以登录网页的用户

67、

使用fork函数得到的子进程从父进程的继承了整个进程的地址空间,包括:进程上下文、进程堆栈、内存信息、打开的文件描述符、信号控制设置、进程优先级、进程组号、当前工作目录、根目录、资源限制、控制终端等。

子进程与父进程的区别在于:

1、父进程设置的锁,子进程不继承(因为如果是排它锁,被继承的话,矛盾了)

2、各自的进程ID和父进程ID不同

3、子进程的未决告警被清除;

4、子进程的未决信号集设置为空集

68、

线程是程序的多个顺序的流行动态执行

线程不能独立执行,必须依附在应用程序中,由应用程序提供多个线程执行控制
展开阅读全文

没有更多推荐了,返回首页