前言:牛客Linux322道所有刷完,有些题目较老,甚至考核5系统,如今7都出来了几年了 = = 还有些题目解析的很好部分也摘录了进来。不少涉及嵌入式开发的选择题一样的摘录的做为了解使用
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
下列那些命令能够看到文件的大小? ls 显示目录内容 df 查看文件系统占用的磁盘空间使用状况 du 查看指定文件和目录所占用的空间大小 Unix系统和宗,下列那些能够用于进程间的通信: socket、共享内存、消息队列、信号量
unix进程间的通讯方式 (1)管道(Pipe):管道可用于具备亲缘关系进程间的通讯,容许一个进程和另外一个与它有共同祖先的进程之间进行通讯。 (2)命名管道(named pipe):命名管道克服了管道没有名字的限制,所以,除具备管道所具备的功能外,它还容许无亲缘关系进程间的通讯。命名管道在文件系统中有对应的文件名。命名管道经过命令mkfifo或系统调用mkfifo来建立。 (3)信号(Signal):信号是比较复杂的通讯方式,用于通知接受进程有某种事件发生,除了用于进程间通讯外,进程还能够发送信号给进程自己;linux除了支持Unix早期信号语义函数sigal外,还支持语义符合Posix.1标准的信号函数sigaction(实际上,该函数是基于BSD的,BSD为了实现可靠信号机制,又可以统一对外接口,用sigaction函数从新实现了signal函数)。 (4)消息(Message)队列:消息队列是消息的连接表,包括Posix消息队列system V消息队列。有足够权限的进程能够向队列中添加消息,被赋予读权限的进程则能够读走队列中的消息。消息队列克服了信号承载信息量少,管道只能承载无格式字节流以及缓冲区大小受限等缺 (5)共享内存:使得多个进程能够访问同一块内存空间,是最快的可用IPC形式。是针对其余通讯机制运行效率较低而设计的。每每与其它通讯机制,如信号量结合使用,来达到进程间的同步及互斥。 (6)内存映射(mapped memory):内存映射容许任何多个进程间通讯,每个使用该机制的进程经过把一个共享的文件映射到本身的进程地址空间来实现它。 (7)信号量(semaphore):主要做为进程间以及同一进程不一样线程之间的同步手段。 (8)套接口(Socket):更为通常的进程间通讯机制,可用于不一样机器之间的进程间通讯。起初是由Unix系统的BSD分支开发出来的,但如今通常能够移植到其它类Unix系统上:Linux和System V的变种都支持套接字。 如下函数中,和其余函数不属于一类的是(pwrite) fwrite putc pwrite putchar getline scanf fwrite:将数据写入文件流; putc:将一个字符写入文件流; putchar:向终端输出一个字符; getline:从输入流中读入一个字符串; scanf:格式输入函数; 以上为为库函数 pwrite是系统调用,写入起始地址的偏移量,写入地址=文件开始+offset 常见文件系统 系统函数 1 fcntl 文件控制 2 open 打开文件 3 creat 建立新文件 4 close 关闭文件描述字 5 read 读文件 6 write 写文件 7 readv 从文件读入数据到缓冲数组中 8 writev 将缓冲数组里的数据写入文件 9 pread 对文件随机读 10 pwrite 对文件随机写 在Linux系统中,在运行一个程序时,程序中未初始化的全局变量会被加载到如下的哪一个内存段中?(BSS) BSS TEXT DATA STACK BBS(Block Started by Symbol)一般是指用来存放程序中未初始化的全局变量和静态变量的一块内存区域。特色是:可读写的,在程序执行以前BSS段会自动清0.因此,未初始化的全局变量在程序执行以前已经变成0了。 数据段:data segment一般是指用来存放程序中已初始化的全局变量的一块内存区域。数据段属于静态内存分配。 代码段:code segment/text segment一般是指用来存放程序执行代码的一块内存区域。这部分区域的大小在程序容许前就已经肯定,而且内存区域一般属于只读,某些架构也容许代码段为可写,即容许修改程序。在代码段中,也有可能包含一些只读的常数变量,例如字符串常量等。 堆:head堆是用于存放进程运行中被动态分配的内存段,它的大小并不固定,可动态扩张或缩减。当进程调用malloc等函数分配内存时,新分配的内存就被动态添加到堆上(堆被扩张);当利用free等函数释放内存时,被释放的内存从堆中被剔除(堆被缩减) 栈:stack堆又被称为堆栈,是用户存放程序临时建立的局部变量,也就是说咱们函数括弧“{}”中定义的变量(但不包括static声明的变量,static意味着在数据段中存放变量)。除此以外,在函数被调用是,其参数也会被压入发起调用的进程栈中,而且待到调用结束后,函数的返回值也会被存放回栈中。因为栈的先进先出特色,因此栈特别方便用来保存/恢复调用现场。从这个意义上来说,咱们能够把堆栈当作一个寄存、交换临时数据的内存区 下面关于i节点描述错误的是?(A) i节点和文件名是一一对应的 i节点能描述文件占用的块数 i节点描述了文件大小和指向数据块的指针 经过i节点实现文件的逻辑结构和物理结构的转换 inode是index node 简写,中文翻译为索引节点,在linux系统中,文件的管理采用inode实现,具体内容包括: 文件的字节数 文件拥有着的user id 文件的group id 文件的读、写、执行权限 文件的时间戳,共有三个:ctime指inode上一次变更的时间,mtime指文件内容上一次变更的时间,atime指文件上一次打开的时间。 文件数据block的位置 反而,文件名并非文件管理必须使用的,只是为了方便用户,对inode起的一个别名(能够这么理解,由于inode编号是数字,记忆困难),正常状况下一个inode对应一个文件,一个文件名对应一个inode,此时对应关系是一对一的,可是经过硬连接创建一个链接(又起了一个名字)以后,就会出现多个文件名对应同一个inode的状况。
(后面有详细关于软硬连接说明) 1:软连接就至关于快捷方式,删除源文件,快捷方式就没有意义了。 2:硬连接至关于备份了文件,可是还能够和源文件内容同步,删除源文件,硬连接文件任然有效。 3:软连接能够跨文件系统,可是硬连接不能 4:软连接的源文件的inode不相同,可是硬连接文件和源文件inode相同 5:软连接能够连接目录,硬连接不行
在Redhat公司发布的Linux版本中,若要使得用户登录验证,须要修改如下脚本。(/etc/shadow) /etc/inittab /etc/passwd //用户基本信息 /etc/shadow //用户密码 /etc/group 如下那些命令能够打印文件(demo.log)中包含ERP的行到标准输出(D) sed ‘/ERP/a\’ demo.log sed '/ERP/P' demo.log sed '/ERP/d' demo.log sed -n '/ERP/p' demo.log sed命令用于行的新增/删除,行的替换/显示,搜寻并替换,直接修改文件。 -n:使用安静slient模式。通过sed名令特殊处理的那一行才会被列出来 -p:打印,将某个选择的数据印出来。一般p会与参数sed -n一块儿用 -d:删除 -a:新增 关于unix系统代码段和数据段分开的目的: 可共享正文 可共享数据 可重入 可保护代码为只读 更好的内存回收策略 1)防止程序指令被修改,设置代码段权限为只读,设置数据段权限为可读写 2)代码段和数据段分开有利于提升程序的局部性,现代CPU缓存通常设计为数据缓存和指令缓存分离,指令和数据分开存放能够提升CPU缓存命中率。 3)共享指令,当系统运行多个程序的副本时,它们指令时同样的,所以内存只需保存一份程序的指令代码。每一个副本进程的数据区是进程私有,能够节省内存。 linxu用户磁盘配额配置文件aquota.user的默认访问权限是(600) 644 755 600 700 设定linux系统默认为字符模式,须要修改的配置文件是(B) /etc/fstab /etc/inittab /etc/boot /etc/inttab.conf Linux下有7个运行级别: 0 系统停机模式,系统默认运行级别不能设置为0,不然不能正常启动,机器关闭。 1 单用户模式,root权限,用于系统维护,禁止远程登录,就像Windows下的安全模式登陆。 2 多用户模式,没有NFS网络支持。 3 完整的多用户文本模式,有NFS,登录后进入控制台命令行模式。 4 系统未使用,保留通常不用,在一些特殊状况下能够用它来作一些事情。例如在笔记本电脑的电池用尽时,能够切换到这个模式来作一些设置。 5 图形化模式,登录后进入图形GUI模式,X Window系统。 6 重启模式,默认运行级别不能设为6,不然不能正常启动。运行init 6机器就会重启。 新建一个管理员用户admin,须要使用的参数(A) useradd -u 0 -o admin //-o选项,则能够重复使用其余用户的标识号; useradd -g -o admin //表示建立用户组 useradd -p -d admin //-p表示建立密码 useradd -e -f admin // -e指定帐号的有效期限 缺省表示永久有效 -f指定在密码过时后多少天即关闭该帐号 如何删除一个非空子目录/tmp (B) del /tmp/* rm -rf /tmp rm -Ra /tmp/* rm -rf /tmp/* //没读清题目删除一个目录 在一台linux服务器上经过rpm方式安装了dhcp软件包,下列关于dhcp服务器配置文件“dhcpd.conf”说法正确的是(CD)多选 软件包安装好后,dhcpd.conf文件就位于“/etc/”目录下 dhcpd.conf文件默认状况下内容为空 dhcpd.conf文件缺省不存在,须要手工创建 dhcpd.conf文件的配置能够参考模板文件"dhcpd.conf.sample"进行 linux中包括两种连接:硬连接(Hard link)和软连接(soft link),下列说法正确的是() 软连接能够跨文件系统进行链接,硬链接不能够 当删除原文件的时候硬连接文件仍然存在,且内容不变 硬连接被删除,磁盘上的数据文件会同时被删除 硬连接会从新创建一个inode,软连接不会 硬连接与软连接的区别 硬链接是不会创建inode的,他只是在文件原来的inode link count域再增长1而已,也所以硬连接是不能够跨越文件系统的。相反都是软链接会从新创建一个inode,固然inode的结构跟其余的不同,他只是一个指明源文件的字符串信息。一旦删除源文件,那么软链接将变得毫无心义。而硬连接删除的时候,系统调用会检查inode link count的数值,若是他大于等于1,那么inode不会被回收。所以文件的内容不会被删除。 硬连接其实是为文件建一个别名,连接文件和原文件其实是同一个文件。能够经过ls -i来查看一下,这两个文件的inode号是同一个,说明它们是同一个文件;而软连接创建的是一个指向,即连接文件内的内容是指向原文件的指针,它们是两个文件。 软连接能够跨文件系统,硬连接不能够;软连接能够对一个不存在的文件名(filename)进行连接(固然此时若是你vi这个软连接文件,linux会自动新建一个文件名为filename的文件),硬连接不能够(其文件必须存在,inode必须存在);软连接能够对目录进行链接,硬连接不能够。两种连接均可以经过命令 ln 来建立。ln 默认建立的是硬连接。使用 -s 开关能够建立软连接。 硬链接无论有多少个,都指向的是同一个 I 节点,会把结点链接数增长,只要结点的链接数不是 0 ,文件就一直存在无论你删除的是源文件仍是链接的文件。只要有一个存在文件就存在。 当你修改源文件或者链接文件任何一个的时候,其余的文件都会作同步的修改。软连接不直接使用 i 节点号做为文件指针 , 而是使用文件路径名做为指针。因此删除链接文件对源文件无影响,可是删除源文件,链接文件就会找不到要指向的文件。软连接有本身的 i 节点 , 并在磁盘上有一小片空间存放路径名。 软链接能够对目录进行链接。 下面堆linux下mysqldump备份命令及参数描述正确的是(A) mysqldump -h ip -uroot -p DBNAME >bck.sql mysqldump -Pip -hDBNAME>bck.sql mysqldump -uip -P DBNAME>bck.sql mysqldump -h ip -uDBNAME>bck.sql -h:表示主机名或ip地址,因此bc错误 -P:表示数据库链接的TCP/IP端口号 -u:表示用户名而不是数据库名,因此D错误 -p:表示数据库访问密码 下面关于andriod dvm的进程和linux的进程,应用程序的进程说法正确的是(D) DVM指dalivk的虚拟机,每个Android应用程序都在它本身的进程中运行,都拥有一个独立的Dalvik虚拟机实例,而每个DVM不必定都是在Linux中的一个进程,因此说不是一个概念 DVM指dalivk的虚拟机,每个andriod应用系统程序都在它本身的进程中运行,不必定拥有一个独立的Dalvik虚拟机实例,而每个DVM都是在Linux中的一个进程,因此说能够认为是同一个概念 DVM指dalivk的虚拟机,每个andriod应用系统程序都在它本身的进程中运行,不必定拥有一个独立的Dalvik虚拟机实例,而每个DVM不必定都是在Linux中的一个进程,因此说不是一个概念 DVM指dalivk的虚拟机,每个Android应用程序都在它本身的进程中运行,都拥有一个独立的Dalvik虚拟机实例,而每个DVM都是在Linux中的一个进程,因此说能够认为是同一个概念 Android系统用的就是Linux的内核,DVM能够理解成在Linux上跑的程序,每一个应用程序运行时,都会启动一个DVM实例,也就是一个Linux的进程,所以DVM进程和Linux进程其实是一回事。 统计日志中ip登录次数,下面能够正确统计的为 (C D) cat catalina.log | awk -F ' ' '{print $3}' | sort | uniq -c | head -10 cat catalina.log | awk '{print $3}' | uniq -c | wc -l cat catalina.log | awk -F ' ' '{print $3}' | sort | uniq -c | wc -l cat catalina.log | awk '{print $3}' | sort -k1nr | uniq -c | wc –l 答案 C D 知识点: 一、awk -F ' ' '{print $3}' 指定空格是分隔符进行分割,取第三个。(不指定默认分隔符也是空格) 二、uniq -c(uniq命令能够去除排序过的文件中的重复行,所以uniq常常和sort合用。也就是说,为了使uniq起做用,全部的重复行必须是相邻的。参数 - c :进行计数) 三、wc -l 行计数。 A : head -10 统计不完整。不符合题目意思 B : 没排序。重复行不相邻。故uniq -c 没法起到正确的做用。故统计结果错误。 答案C、D仔细一看,没毛病。。 创建动态路由须要用到的文件有(B) /etc/hosts //设定用户自已的IP与名字的对应表 /etc/gateways //设定路由器 7系统好像没有 /etc/resolv.conf //设置DNS 终止一个前台进程可能用到的命令和操做 kill //后台进程 ctrl+c //前台进程 shut down halt 下列不是Linux系统进程类型的是 交互进程 //由shell启动的进程,既可在前台运行,也可在后台运行; 批处理进程 //与终端没有联系,是一个进程序列; 守护进程 //linux系统启动时启动的进程,并在后台运行 就绪进程 //就绪指的是进程三状态之一 按照进程的功能和运行的程序分类,进程可划分为两大类: (1) 系统进程:能够执行内存资源分配和进程切换等管理工做;并且,该进程的运行不受用户的干预,即便是root用户也不能干预系统进程的运行。 (2) 用户进程:经过执行用户程序、应用程序或内核以外的系统程序而产生的进程,此类进程能够在用户的控制下运行或关闭。 针对用户进程,又能够分为交互进程、批处理进程和守护进程三类。 (1) 交互进程:由一个shell终端启动的进程,在执行过程当中,须要与用户进行交互操做,能够运行于前台,也能够运行在后台。 (2) 批处理进程:该进程是一个进程集合,负责按顺序启动其余的进程。 (3) 守护进程:守护进程是一直运行的一种进程,常常在linux系统启动时启动,在系统关闭时终止。它们独立于控制终端而且周期性的执行某种任务或等待处理某些发生的事件。例如httpd进程,一直处于运行状态,等待用户的访问。还有常常用的crond进程,这个进程相似与windows的计划任务,能够周期性的执行用户设定的某些任务。 一个文件名字为rr.Z,能够用来解压缩的命令是: tar gzip compress uncompress compress 是一个至关古老的 unix 档案 压缩 指令,压缩后的档案会加上一个 .Z 延伸档名以区别未压缩的档案,压缩后的档案能够以 u nc ompress解压 。若要将数个档案压成一个压缩档,必须先将档案 tar 起来再压缩。因为 g zip 能够产生更理想的压缩比例,通常人多已改用gzip 为档案压缩工具。 linux 经常使用压缩格式 .zip .gz .bz2 .tar.gz .tar.bz2 zip 压缩文件名 源文件 ——压缩文件 zip -r 压缩文件名 源文件 ——压缩目录 mkdir 名字——建立目录 touch 名字 ——建立文件 unzip 压缩文件 ——解压 .zip文件 gzip 源文件 ——压缩为.gz格式的压缩文件,源文件会消失 gzip -c 源文件 > 压缩文件 ——压缩为.gz格式的压缩文件,源文件会消失 gzip -r 目录 ——压缩目录下的全部子文件,但不能压缩目录 gzip -d 压缩文件 ——解压 .gz文件 gunzip 压缩文件名 ——解压 .gz文件 bzip2 源文件 ——压缩为 .bz2格式,不保留源文件 bzip2 -k 源文件 ——压缩后保留源文件 注意bzip2 不能压缩目录 bzip2 -d 压缩文件 ——解压缩,-k保留压缩文件 bunzip2 压缩文件 ——解压缩 tar -cvf 打包文件名 源文件 tar -zcvf 压缩报名.tar.gz 源文件 ——压缩为.tar.gz格式 tar -zxvf 压缩报名.tar.gz ——解压缩.tar.gz包 tar -jcvf 压缩报名.tar.bz2 源文件 ——压缩为.tar.bz2格式 tar -jxvf 压缩报名.tar.bz2 ——解压缩.tar.bz2包 Samba 服务器的配置文件是D httpd.conf inetd.conf rc.samba smb.conf WEB服务器配置文件 http.conf 启动脚本配置文件 initd.conf samba脚本 rc.samba samba服务配置文件 smb.conf Linux 有三个查看文件的命令,若但愿在查看文件内容过程当中能够用光标上下移动来查看文件内容,应使用命令。 cat more less menu cat,less,more均可以查看,只是查看的方式不同,less可让光标上下移动,more只能用enter键往下翻,cat的话直接跳到最后一页了 FTP服务器有两个端口,其中21端口用于链接,20端口用于传输数据 进行FTP文件传输中,客户端首先链接到FTP服务器的21端口,进行用户的认证,认证成功后,要传输文件时,服务器会开一个端口为20来进行传输数据文件。 也就是说,端口20才是真正传输所用到的端口,端口21只用于FTP的登录认证。咱们日常下载文件时,会遇到下载到99%时,文件不完成,不能成功的下载。实际上是由于文件下载完毕后,还要在21端口再行进行用户认证,而下载文件的时间若是过长,客户机与服务器的21端口的链接会被服务器认为是超时链接而中断掉,就是这个缘由。解决方法就是设置21端口的响应时间。 tar -zcvf 目标文件 源文件 z表示使用gzip压缩 j表示使用bzip2压缩 c表示压缩 x表示解压缩 进程间通信方式有那些?
管道
消息队列
共享内存
文件和记录锁定
//漏掉了文件和记录锁定,
UNIX中有以下的通讯方式:
1) 文件和记录锁定。
为避免两个进程间同时要求访问同一共享资源而引发访问和操做的混乱,在进程对
共享资源进行访问前必须对其进行锁定,该进程访问完后再释放。这是UNIX为共享
资源提供的互斥性保障。
2 )管道。
管道通常用于两个不一样进程之间的通讯。当一个进程建立一个管道,并调用fork创
建本身的一个子进程后,父进程关闭读管道端,子进程关闭写管道端,这样 提供了
两个进程之间数据流动的一种方式。
3 ) FIFO 。
FIFO是一种先进先出的队列。它相似于一个管道,只容许数据的单向流动。每一个
FIFO都有一个名字,容许不相关的进程访问同一个FIFO。所以也成为命名管。
4)消息队列。
UNIX下不一样进程之间可实现共享资源的一种机制;UNIX容许不一样进程将格式化的数
据流以消息形式发送给任意
进程。对消息队列具备操做权限的进程均可以使用msget完成对消息队列的操做控制
。经过使用消息类型,进程能够按任何顺序读消息,或为消息安排优先级顺序。
5 )信号灯。
做为进程间通信的一种方法,它不是用于交换大批数据,而用于多进程之间的同步
(协调对共享存储段的存取)。
6 )共享内存。
经过信号灯实现存储共享(相似“红灯停、绿灯行”)
文件操做的惟一依据是?(B)
文件名
文件句柄
物理地址
文件句柄是惟一标识,至关于ID
在文件I/O中,要从一个文件读取数据,应用程序首先要调用操做系统函数并传送文件名,并选一个到该文件的路径来打开文件。该函数取回一个顺序号,即文件句柄(file handle),该文件句柄对于打开的文件是惟一的识别依据。要从文件中读取一块数据,应用程序须要调用函数ReadFile,并将文件句柄在内存中的地址和要拷贝的字节数据传送给操做系统。当完成任务后,在经过调用系统函数来关闭该文件。
在CPU和物理内存之间进行地址转换时,(B)将地址从虚拟(逻辑)地址空间映射到物理地址空间
TCB
MMU
CACHE
DMA
TCB 线程控制块;PCB,进程控制块
MMU(Memory Management Unit)内存管理单元,是中央处理器用来管理虚拟内存和物理内存寄存器的控制线路,同时也负责虚拟内存映射为物理内存等
CACHE 这道题环境应该是指高速缓冲存储器
DMA (direct memory access)直接内存存储,传输数据从一个地址空间到另外一个地址空间
下面那些命令能够查看file文件的第300-500行的内容?
cat file1 | tail -n +300 | head -n 200
cat file1| head -n 500 | tail -n +300
sed -n '300,500p' file1
下面哪些是死锁发生的必要条件? ABCD
互斥条件
请求和保持
不可剥夺
循环等待
互斥条件,请求和保持,不可剥夺,这三个条件可能发生死锁,但不必定会发生死锁,这三个条件再加上循环等待才必定会发生死锁
系统当前已经加载的全部文件系统在______文件中获得反映
/usr/sbin/cfdisk
/sbin/fdisk
/etc/mtab
/etc/fstab
/etc/mtab:记载的是如今系统已经挂载的文家系统,包括操做系统创建的虚拟文件等;而/etc/fstab/是系统准备挂载的
/etc/fstab:记录了计算机上硬盘分区的相关消息,启动Linux的时候,检查分区的fsck命令,和挂载分区的mount命令,都须要fstab中的信息。来正确的检查和挂载硬盘
dstab不必定都是已经挂载上了
vivek但愿将他的login ID 从vivek改成viv,应该执行下列那个命令?
usermod -l viv vivek
usermod -l vivek viv
usermod -m viv vivek
usermod -m vivek viv
usermod(选项)(参数):参数若为两个,顺序通常为 usermod (选项) 目标参数 原始参数
-c<备注>:修改用户账号的备注文字;
-d<登入目录>:修改用户登入时的目录;
-e<有效期限>:修改账号的有效期限;
-f<缓冲天数>:修改在密码过时后多少天即关闭该账号;
-g<群组>:修改用户所属的群组;
-G<群组>;修改用户所属的附加群组;
-l<账号名称>:修改用户账号名称; 使用格式:usermod -l new_name old_name
-L:锁定用户密码,使密码无效;
-s:修改用户登入后所使用的shell;
-u:修改用户ID;
-U:解除密码锁定。
在linux中用使用tar命令将文件aaa打包为bak.tar。 A
tar -cf bak.tar aaa
tar -xf bak.tar aaa
tar -czf bak.tar aaa
tar -rf bak.tar aaa
//打包就好了,因此不须要+z压缩
tar 主要命令:
-c 建立包
-x 解包
-t 列出包中的内容
-r 增长文件到指定包中
-u 更新包中的文件
这五个是独立的命令,压缩解压都要用到其中一个,能够和别的命令连用但只能用其中一个。下面的参数是根据须要在压缩或解压档案时可选的。
可选命令:
-j 建立或解开包时 使用bzip2 进行压缩或解压
-z 建立或解开包时 使用gzip 进行压缩或解压
-Z 建立或解开包时 使用compress 进行压缩或解压
-f 后面跟指定的包文件名
-v 显示打包/解包过程
-C 指定解包后的路径
Linux下多少个"-"将被打印: (B)
int main(void){ int i; for(i=0;i<4;i++){ fork(); printf("-\n"); } return 0; }
16
30
32
15
i=0时,主进程和其建立的子进程分别打印'-', 打印2个
i=1时,以前两个进程打印'-', 每一个进程又建立新的子进程, 共打印4个'-'
i=2时,以前的四个进程分别打印'-', 并建立新的子进程, 故共打印8个'-'
i=3时,以前的8个进程分别打印'-', 并建立新的子进程,故共打印16个'-'
综上所述, 共打印2+4+8+16=30个
fork的题能够按如下公式来算。
主进程1分为2,每一个子进程1分为2,构成一个二叉树,树高等于循环的次数n。
最后一层是最后获得的子进程数,它是偶数,等于2^n,前面有一题,循环5次有32个进程。
本题是求fork了多少次,即二叉数的节点数,它等于2^(n+1)-1,注意第一次fork后就会打印2个模杠,实际上没有第0次。
因此是2^(n+1) - 1 -1当n=4时,得30.
关于linux的I/O复用接口select和epoll,下列说法错误的是(C)
select调用时会进行线性遍历,epoll采用回调函数机制,不须要线性遍历
select的最大链接数为FD_SETSIZE
select较适合于有大量并发链接,且活跃连接较多的场景
epoll较适用于有大量并发链接,但活跃链接很少的场景
epoll的效率不随FD数目增长而线性降低
epoll经过共享存储实现内核和用户的数据交互
select 和 epoll效率差别的缘由:select采用轮询方式处理链接,epoll是触发式处理链接。
Select:
1.Socket数量限制:该限制可操做的Socket数由FD_SETSIZE决定,内核默认32*32=1024.
2.操做限制:经过遍历FD_SETSIZE(1024)个Socket来完成调度,无论哪一个Socket是活跃的,都遍历一遍。
Epoll
1.Socket数量无限制:该模式下的Socket对应的fd列表由一个数组来保存,大小不限制(默认4k)。
2.操做无限制:基于内核提供的反射模式,有活跃Socket时,内核访问该Socket的callback,不须要遍历轮询。
但当全部的Socket都活跃的时候,全部的callback都被唤醒,会致使资源的竞争。既然都是要处理全部的Socket,
那么遍历是最简单最有效的实现方式
select
select能监控的描述符个数由内核中的FD_SETSIZE限制,仅为1024,这也是select最大的缺点,由于如今的服务器并发量远远不止1024。即便能从新编译内核改变FD_SETSIZE的值,但这并不能提升select的性能。
每次调用select都会线性扫描全部描述符的状态,在select结束后,用户也要线性扫描fd_set数组才知道哪些描述符准备就绪,等于说每次调用复杂度都是O(n)的,在并发量大的状况下,每次扫描都是至关耗时的,颇有可能有未处理的链接等待超时。
每次调用select都要在用户空间和内核空间里进行内存复制fd描述符等信息。
poll
poll使用pollfd结构来存储fd,突破了select中描述符数目的限制。
与select的后两点相似,poll仍然须要将pollfd数组拷贝到内核空间,以后依次扫描fd的状态,总体复杂度依然是O(n)的,在并发量大的状况下服务器性能会快速降低。
epoll
epoll维护的描述符数目不受到限制,并且性能不会随着描述符数目的增长而降低。
服务器的特色是常常维护着大量链接,但其中某一时刻读写的操做符数量却很少。epoll先经过epoll_ctl注册一个描述符到内核中,并一直维护着而不像poll每次操做都将全部要监控的描述符传递给内核;在描述符读写就绪时,经过回掉函数将本身加入就绪队列中,以后epoll_wait返回该就绪队列。也就是说,epoll基本不作无用的操做,时间复杂度仅与活跃的客户端数有关,而不会随着描述符数目的增长而降低。
epoll在传递内核与用户空间的消息时使用了内存共享,而不是内存拷贝,这也使得epoll的效率比poll和select更高。
在退出unix系统帐户以后还须要继续运行某个进程,那么可用(D)
awk
sed
crontab
nohup
nohup命令:若是你正在运行一个进程,并且你以为在退出账户时该进程还不会结束,那么能够使用nohup命令。该命令能够在你退出账户/关闭终端以后继续运行相应的进程。nohup就是不挂起的意思
下面哪一个命令不是用来查看网络故障?
telnet
ping
init
netstat
A选项:telnet命令一般用来远程登陆。telnet程序是基于TELNET协议的远程登陆客户端程序。Telnet协议是TCP/IP协议族中的一员,是Internet远程登陆服务的标准协议和主要方式。它为用户提供了在本地计算机上完成远程主机工做的能力。
B选项:Linux系统的ping命令是经常使用的网络命令,它一般用来测试与目标主机的连通性,咱们常常会说“ping一下某机器,看是否是开着”、不能打开网页时会说“你先ping网关地址192.168.1.1试试”。它经过发送ICMP ECHO_REQUEST数据包到网络主机(send ICMP ECHO_REQUEST to network hosts),并显示响应状况,这样咱们就能够根据它输出的信息来肯定目标主机是否可访问(但这不是绝对的)。有些服务器为了防止经过ping探测到,经过防火墙设置了禁止ping或者在内核参数中禁止ping,这样就不能经过ping肯定该主机是否还处于开启状态。
C选项: init init 命令进程和做业管理 init 命令是 Linux 下的进程初始化工具, init 进程是全部 Linux 进程的父进程,它的进程号为 1 。 init 命令是 Linux 操做系统中不可缺乏的程序之一, init 进程是 Linux 内核引导运行的,是系统中的第一个进程。
D选项: n etstat命令用于显示与IP、TCP、UDP和ICMP协议相关的统计数据,通常用于检验本机各端口的网络链接状况。 n etstat是在内核中访问网络及相关信息的程序,它能提供TCP链接,TCP和UDP监听,进程内存管理的相关报告。 若是你的计算机有时候接收到的数据报致使出错数据或故障,你没必要感到奇怪,TCP/IP能够允许这些类型的错误,并可以自动重发数据报。但若是累计的出错状况数目占到所接收的IP数据报至关大的百分比,或者它的数目正迅速增长,那么你就应该使用 n etstat查一查为何会出现这些状况了。
若是参数列表个数为1则执行$<1 , 若是参数列表个数为2则执行$<2<$ ,其余状况则……,补充下面的命令
Case ( ) in (B) 1> $<1 2> $<2<$1 Default > echo ……
$$
$#
$@
$*
$# 是传给脚本的参数个数
$0是脚本自己的名字
$1是传递给该shell脚本的第一个参数
$2是传递给该shell脚本的第二个参数
$@ 是传给脚本的全部参数的列表
$* 是以一个单字符串显示全部向脚本传递的参数,与位置变量不一样,参数可超过9个
$$ 是脚本运行的当前进程ID号
$? 是显示最后命令的退出状态,0表示没有错误,其余表示有错误
请问下面的程序最后会产生多少个进程:
#include<stdio.h> #include<unistd.h> Int main( ) { int i; for(i = 0; i<5;i++){ int pid = fork(); if(pid == 0){ //do something } else { //do something } } // do somthing,sleep return 0; }
5 10 15 32
25=32。
每个fork()出来的新进程,和父进程使用相同的代码段,复制父进程的数据段和堆栈段,不过有“逻辑”复制和“物理”复制之分,在本题没有影响。也就是说每个fork()出的新进程和父进程有相同大小的i,而且执行位置也是同样的。
i = 0时,生成两个进程
i = 1时,两个进程各生成两个进程
i = 2时,4个进程各生成两个进程
i = 3时,8个进程各生成两个进程
i = 4时,16个进程各生成两个进程,总共32个
若基于Linux操做系统所开发的ARM应用程序源文件名为test.c,那么要生成该程序代码的调试信息,编译时使用的GCC命令正确的是? (D)
arm-linux-gcc -c -o test.o test.c
arm-linux-gcc -S -o test.o test.c
arm-linux-gcc -o test test.c
arm-linux-gcc -g -o test test.c
D
-o参数用于指定输出的文本,若是不指定输出文件则默认输出.out文件
-c参数将对源程序test.c进行预处理、编译、汇编操做,生成test.0文件
-S参数将对源程序test.c进行预处理、编译,生成test.s文件
-g选项,加入GDB可以使用的调试信息,使用GDB调试时比较方便
因此选D
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选项同上
使用pthread库的多线程程序编译时须要加什么链接参数?
-pthread
-fthis-is-varialble
fcond-mismatch
-MMD
A,由于:-fthis-is-varialble 就是向传统c++看齐,能够使用this当通常变量使用.
-fcond-mismatch容许 条件表达式 的第二和第三参数 类型不匹配 ,表达式的值将为void类型
-MMD和-MM相同,可是输出将导入到.d的文件里面
int main() { char *p = "hello,world"; return 0; }
p和"hello,world"存储在内存哪一个区域?
栈,堆
栈,栈
堆,只读存储区
栈,只读存储区
(1)从静态存储区域分配:
内存在程序编译时就已经分配好,这块内存在程序的整个运行期间都存在。速度快、不容易出错,由于有系统会善后。例如全局变量,static变量等。
(2)在栈上分配:
在执行函数时,函数内局部变量的存储单元都在栈上建立,函数执行结束时这些存储单元自动被释放。栈内存分配运算内置于处理器的指令集中,效率很高,可是分配的内存容量有限。
(3)从堆上分配:
即动态内存分配。程序在运行的时候用malloc或new申请任意大小的内存,程序员本身负责在什么时候用free或delete释放内存。动态内存的生存期由程序员决定,使用很是灵活。若是在堆上分配了空间,就有责任回收它,不然运行的程序会出现内存泄漏,另外频繁地分配和释放不一样大小的堆空间将会产生堆内碎块。
一个C、C++程序编译时内存分为5大存储区:堆区、栈区、全局区、文字常量区、程序代码区。
关于Linux系统的负载(Load),如下表述正确的是______。 (B、C)
经过就绪和运行的进程数来反映
能够经过TOP命令查看
能够经过uptime查看
Load:2.5,1.3,1.1表示系统的负载压力在逐渐减小
D三个数分别表明不一样时间段的系统平均负载(一分钟、五分钟、以及十五分钟),它们的数字固然是越小越好。数字越高,说明服务器的负载越大,这也多是服务器出现某种问题的信号。可是一分钟和五分钟的平均负载大于十五分钟的,不是负载在变小吧。
Linux中,一个端口可以接受tcp连接数量的理论上限是? (D)
1024
65535
65535 * 65535
无上限
一个端口能够创建的链接数量没有理论上限,上限就是你系统的性能
不算 main 这个进程自身,到底建立了多少个进程啊? (B)
int main(int argc, char* argv[]) { fork(); fork() && fork() || fork(); fork(); }
18 19 20 21
fork()是一个分叉函数, 返回值: 若成功调用一次则返回两个值,子进程返回0,父进程 返回子进程标记;不然,出错返回-1
每一次fork()就翻倍;
fork();
fork() && fork() || fork();
fork();
第一条和第三条分别X2;关键在第二条语句。第二条有 5个分支;
A&&B||C
A为假,跳过B,判断C-----------------------2
A为真,判断B,若B为真,跳过C-----------1
若B为假,判断C ------------2
故总数为2*(2+1+2)*2=10;减去本身就是19.
此题考查两个知识点:
1.fork()是一个分叉函数,返回值: 若成功调用一次则返回两个值,子进程返回0, 父进程 返回子进程标记;不然,出错返回-1。
2. A&& B|| C的考查, A&&B,若是A=0,就没有必要继续执行&&B了;A非0,就须要继续执行&&B。
A||B,若是A非0,就没有必要继续执行||B了,A=0,就须要继续执行||B。
因此,第一次fork()以后,进程数为2,
第二条,
A&& B|| C
A执行后,返回两个分别为0,和非0,按照上面2的规则,执行状况一共是5条路径,因此结束后共有进程数2*5,最后一条执行完毕,再次加倍,2*5*2=20,减去main()主进程,共有19个
关于 linux 的进程,下面说法不正确的是: (A)
僵尸进程会被 init 进程接管,不会形成资源浪费;
孤儿进程的父进程在它以前退出,会被 init 进程接管,不会形成资源浪费;
进程是资源管理的最小单位,而线程是程序执行的最小单位。Linux 下的线程本质上用进程实现;
子进程若是对资源只是进行读操做,那么彻底和父进程共享物理地址空间。
linux提供了一种机制能够保证只要父进程想知道子进程结束时的状态信息, 就能够获得。这种机制就是: 在每一个进程退出的时候,内核释放该进程全部的资源,包括打开的文件,占用的内存等。 可是仍然为其保留必定的信息(包括进程号the process ID,退出状态the termination status of the process,运行时间the amount of CPU time taken by the process等)。直到父进程经过wait / waitpid来取时才释放。
孤儿进程:一个父进程退出,而它的一个或多个子进程还在运行,那么那些子进程将成为孤儿进程。孤儿进程将被init进程(进程号为1)所收养,并由init进程对它们完成状态收集工做。
僵尸进程:一个进程使用fork建立子进程,若是子进程退出,而父进程并无调用wait或waitpid获取子进程的状态信息,那么子进程的进程描述符仍然保存在系统中。这种进程称之为僵死进程。
僵死进程并非问题的根源,罪魁祸首是产生出大量僵死进程的那个父进程,因此,解决方法就是kill那个父进程,因而僵尸进程就能够被init进程接收,释放。
linux下查看磁盘挂载状态的命令式? (B)
rpm mount netstat df
//选了D df为磁盘空间查看命令
Linux执行ls,会引发哪些系统调用(B、C、D)
nmap
read
execve
fork
任何shell都会执行 exec 和 fork
而 ls会执行read
三个加起来
下列哪一个git命令不是合并代码用的:
git pull --rebase
git merge
git cherry-pick
git blame
执行git blame;命令时,会逐行显示文件,并在每一行的行首显示commit号,提交者,最先的提交日期等
你被须要检查系统中的设备状况,须要检查哪一个log日志?
/var/log/tmp
/var/log/lastlog
/var/log/messages
/var/log/utmp
/var/log/messages — 包括总体系统信息,其中也包含系统启动期间的日志。此外,mail,cron,daemon,kern和auth等内容也记录在var/log/messages日志中。
/var/log/dmesg — 包含内核缓冲信息(kernel ring buffer)。在系统启动时,会在屏幕上显示许多与硬件有关的信息。能够用dmesg查看它们。
/var/log/auth.log — 包含系统受权信息,包括用户登陆和使用的权限机制等。
/var/log/boot.log — 包含系统启动时的日志。
/var/log/daemon.log — 包含各类系统后台守护进程日志信息。
/var/log/dpkg.log – 包括安装或dpkg命令清除软件包的日志。
/var/log/kern.log – 包含内核产生的日志,有助于在定制内核时解决问题。
/var/log/lastlog — 记录全部用户的最近信息。这不是一个ASCII文件,所以须要用lastlog命令查看内容。
/var/log/maillog /var/log/mail.log — 包含来着系统运行电子邮件服务器的日志信息。例如,sendmail日志信息就所有送到这个文件中。
/var/log/user.log — 记录全部等级用户信息的日志。
/var/log/Xorg.x.log — 来自X的日志信息。
/var/log/alternatives.log – 更新替代信息都记录在这个文件中。
/var/log/btmp – 记录全部失败登陆信息。使用last命令能够查看btmp文件。例如,”last -f /var/log/btmp | more“。
/var/log/cups — 涉及全部打印信息的日志。
/var/log/anaconda.log — 在安装Linux时,全部安装信息都储存在这个文件中。
/var/log/yum.log — 包含使用yum安装的软件包信息。
/var/log/cron — 每当cron进程开始一个工做时,就会将相关信息记录在这个文件中。
/var/log/secure — 包含验证和受权方面信息。例如,sshd会将全部信息记录(其中包括失败登陆)在这里。
/var/log/wtmp或/var/log/utmp — 包含登陆信息。使用wtmp能够找出谁正在登录进入系统,谁使用命令显示这个文件或信息等。
/var/log/faillog – 包含用户登陆失败信息。此外,错误登陆命令也会记录在本文件中。
除了上述Log文件之外, /var/log还基于系统的具体应用包含如下一些子目录:
/var/log/httpd/或/var/log/apache2 — 包含服务器access_log和error_log信息。
/var/log/lighttpd/ — 包含light HTTPD的access_log和error_log。
/var/log/mail/ – 这个子目录包含邮件服务器的额外日志。
/var/log/prelink/ — 包含.so文件被prelink修改的信息。
/var/log/audit/ — 包含被 Linux audit daemon储存的信息。
/var/log/samba/ – 包含由samba存储的信息。
/var/log/sa/ — 包含每日由sysstat软件包收集的sar文件。
/var/log/sssd/ – 用于守护进程安全服务。
局域网的网络地址192.168.1.0/24,局域网络链接其它网络的网关地址是192.168.1.1。主机192.168.1.20访问172.16.1.0/24网络时,其路由设置正确的是?
route add –net 192.168.1.0 gw 192.168.1.1 netmask 255.255.255.0 metric 1
route add –net 172.16.1.0 gw 192.168.1.1 netmask 255.255.255.0 metric 1
route add –net 172.16.1.0 gw 172.16.1.1 netmask 255.255.255.0 metric 1
route add default 192.168.1.0 netmask 172.168.1.1 metric 1
-net 后面跟的是目标网络,gw就是gateway(网关入口)就是你从哪一个网关去到那个目标网络。
设fp已定义,执行语句fp=fopen("file","w");后,如下针对文本文件file操做叙述的选项错误的是: (B、C、D)
能够随意读和写
只能写不能读
能够在原有内容后追加写
写操做结束后能够从头开始读
fopen(“file”,”w”)打开文件,并赋值为“w”权限,即写权限,则B正确,A错误,由于这里不具备读权限;对于C的解释:用“w”打开的文件只能向该文件写入。若打开的文件不存在,则以指定的文件名创建该文件,若打开的文件已经存在,则将该文件删去,重建一个新文件。因此C错误;对于D的解释:D所描述的权限应该是“w+”而非“w”,因此D错误;
有一个文件ip.txt,每行一条ip记录,共若干行,下面哪一个命令能够实现“统计出现次数最多的前3个ip及其次数”?(B)
uniq -c ip.txt│sort -nr│head -n 3
sort ip.txt│uniq -c│sort -rn│head -n 3
cat ip.txt │count -n│sort -rn│head -n 3
cat ip.txt │sort │uniq -c│sort -rn│top -n 3
sort | uniq -c| 搭配使用,而且须要优先sort 再uniq -c 才能再输出行前面加上每行在文件中出现的次数;
count命令不存在,
top命令能够实时动态地查看系统的总体运行状况,是一个综合了多方信息监测系统性能和运行信息的实用工具。
sort 是按ASCII码排序
-n 依照数值的大小排序。
-r 以相反的顺序来排序。
uniq -c 是去重并显示个数
head -n 3 为取前3行
你在一台Windows 2000 Server 上部署了几个web 站点,这些Web 站点都已启用了日志。你用一个第三方的报表工具来分析web站点产生的日志文件,你发现全部从上午7:00到午夜的数据都被包含在次日的日志文件中。你但愿这些数据包含在当天的日志文件中,你该怎么作?
确保日志类型被设置为W3C
在web站点的日志属性中修改日志翻转属性
在web服务器的时间属性中修改时间区域设置
在web服务器上配置时间服务器使用LocalSystem帐户
下面哪些属于,Fork后子进程保留了父进程的什么?AC
环境变量
父进程的文件锁,pending alarms和pending signals
当前工做目录
进程号
使用fork函数获得的子进程从父进程的继承了整个进程的地址空间,包括:进程上下文、进程堆栈、内存信息、打开的文件描述符、信号控制设置、进程优先级、进程组号、当前工做目录、根目录、资源限制、控制终端等。
子进程与父进程的区别在于:
一、父进程设置的锁,子进程不继承(由于若是是排它锁,被继承的话,矛盾了)
二、各自的进程ID和父进程ID不一样
三、子进程的未决告警被清除;
四、子进程的未决信号集设置为空集。
子进程继承父进程
用户号UIDs和用户组号GIDs
环境Environment
堆栈
共享内存
打开文件的描述符
执行时关闭(Close-on-exec)标志
信号(Signal)控制设定
进程组号
当前工做目录
根目录
文件方式建立屏蔽字
资源限制
控制终端
子进程独有
进程号PID
不一样的父进程号
本身的文件描述符和目录流的拷贝
子进程不继承父进程的进程正文(text),数据和其余锁定内存(memory locks)
不继承异步输入和输出
父进程和子进程拥有独立的地址空间和PID参数。
子进程从父进程继承了用户号和用户组号,用户信息,目录信息,环境(表),打开的文件描述符,堆栈,(共享)内存等。
通过fork()之后,父进程和子进程拥有相同内容的代码段、数据段和用户堆栈,就像父进程把本身克隆了一遍。事实上,父进程只复制了本身的PCB块。而代码段,数据段和用户堆栈内存空间并无复制一份,而是与子进程共享。只有当子进程在运行中出现写操做时,才会产生中断,并为子进程分配内存空间。因为父进程的PCB和子进程的同样,因此在PCB中断中所记录的父进程占有的资源,也是与子进程共享使用的。这里的“共享”一词意味着“竞争”
下面有关Ext2和ext3文件系统的描述,错误的是?AD
ext2/ext3文件系统使用索引节点来记录文件信息,包含了一个文件的长度、建立及修改时间、权限、所属关系、磁盘中的位置等信息
ext3增长了日志功能,即便在非正常关机后,系统也不须要检查文件系统
ext3文件系统可以极大地提升文件系统的完整性,避免了意外宕机对文件系统的破坏
ext3支持 1EB 的文件系统,以及 16TB 的文件。
EXT二、EXT3:linux环境上的文件系统。ext2/ext3文件系统使用索引节点来记录文件信息,做用像windows的文件分配表。索引节点是一个结构,它包含了一个文件的长度、建立及修改时间、权限、所属关系、磁盘中的位置等信息。
EXT二、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 的文件。
vsftpd服务流量控制的参数( )BC
system_max_rate
local_max_rate
anon_max_rate
guest_max_rate
访问速率设置:
anon_max_rate=0
设置匿名登入者使用的最大传输速度,单位为B/s,0 表示不限制速度。默认值为0。
local_max_rate=0
本地用户使用的最大传输速度,单位为B/s,0 表示不限制速度。预设值为0。
下列哪一个命令能够看到文件的大小? C
ls df du find
du : disk usage df: disk. free
man 5 passwd D
显示关于passwd的前五处说明文档显示关于passwd的前五处说明文档
显示passwd命令的使用方法
显示passwd命令的说明的前五行
显示passwd文件的结构
当前目录下有a和b两个文件,执行命令“ls>c”,请问文件c里面的内容是什么?
a b ab abc
使用ls命令产生的输出为当前路径下的全部文件名。>c即表明将结果输出至c中,若没有c则先产生c文件,即内容里含有abc
下列关于管道(Pipe)通讯的叙述中,正确的是() C
一个管道能够实现双向数据传输
管道的容量仅受磁盘容量大小限制
进程对管道进行读操做和写操做均可能被阻塞
一个管道只能有一个读进程或一个写进程对其操做
管道其实是一种固定大小的缓冲区,管道对于管道两端的进程而言,就是一个文
件,但它不是普通的文件,它不属于某种文件系统,而是自立门户,单独构成一种文件系统,而且只存在于内存中。它相似于通讯中半双工信道的进程通讯机制,一个管道能够实现双向 的数据传输,而同一个时刻只能最多有一个方向的传输,不能两个方向同时进行。管道的容 量大小一般为内存上的一页,它的大小并非受磁盘容量大小的限制。当管道满时,进程在 写管道会被阻塞,而当管道空时,进程读管道会被阻塞,所以选 C。
管道是半双工的,读写不能同时双向进行数据操做。管道的容量还受其它因素的影响,管道缓冲区的大小也会影响程序的执行结果。管道必须打开一个读端和一个写端。若写端关闭,读端只能返回0。如读端关闭,写端返回错误值-1
命令:[-z””]&&echo 0 ||echo 1的输出是什么 0
1 0
[ -z "" ] 命令判断双引号中变量的字符串长度是否为0,
[ -z "" ] && echo 0 || echo 1
^ ^ ^
命令1 命令2 命令3
本题即: 先判断 “” 变量中是否无值,成功
而后根据 && 符特性,当命令1执行成功时执行命令2,也就是执行echo 0
而后根据 || 符特性,前一个命令不能执行才执行后一个,命令2 echo 0 执行成功,因此命令3 echo 1 不执行
命令结束
在CPU和物理内存之间进行地址转换时,( )将地址从虚拟(逻辑)地址空间映射到物理地址空间
TCB
MMU
CACHE
DMA
MMU 是Memory Manage Unit的缩写,便是存储管理单元,其功能是和物理内存之间进行地址转换 在CPU和物理内存之间进行地址转换,将地址从逻辑空间映映射到物理地址空间。
A.TCB,线程控制块;PCB,进程控制块
B.MMU(Memory Management Unit) 内存管理单元,是中央处理器用来管理虚拟内存和物理内存寄存器的控制线路,同时也负责虚拟内存映射为物理内存等。
C.CACHE,感受在这道题里应该指的是高速缓冲存储器。
D.DMA,(direct memory access)直接内存存储,传输数据从一个地址空间到另外一个地址空间。
64位Linux系统里,下面几个sizeof的运行结果是()D
1
2
3
4
5
6
int intValue = 1024; char str[] = “Tencent”; const char* ch = str; sizeof(intValue) = __a__; sizeof(str) = ___b__; sizeof(ch) = __c___;
a=1,b=1,c=1
a=4,b=4,c=4
a=4,b=8,c=4
a=4,b=8,c=8
64位操做系统
char :1个字节(固定)
*(即指针变量): 8个字节
short int : 2个字节(固定)
int: 4个字节(固定)
unsigned int : 4个字节(固定)
float: 4个字节(固定)
double: 8个字节(固定)
long: 8个字节
unsigned long: 8个字节(变化*其实就是寻址控件的地址长度数值)
long long: 8个字节(固定)
b末尾还有一个\0
在RHEL5系统中使用vi编辑文件report.txt时,要自下而上查找字符串“2006”,应该在命令模式下使用( )B
/2006
?2006
#2006
%2006
/从上到下查找
?从下到上查找
下面的内存管理模式中,会产生外零头的是()BD
页式
段式
请求页式
请求段式
操做系统在分配内存时,有时候会产生一些空闲可是没法被正常使用的内存区域,这些就是内存碎片,或者称为内存零头,这些内存零头一共分为两类:内零头和外零头。
内零头是指进程在向操做系统请求内存分配时,系统知足了进程所须要的内存需求后,还额外还多分了一些内存给该进程,也就是说额外多出来的这部份内存归该进程全部,其余进程是没法访问的。
外零头是指内存中存在着一些空闲的内存区域,这些内存区域虽然不归任何进程全部,可是由于内存区域过小,没法知足其余进程所申请的内存大小而造成的内存零头。
页式存储管理是以页为单位(页面的大小由系统肯定,且大小是固定的)向进程分配内存的,例如:假设内存总共有100K,分为10页,每页大小为10K。如今进程A提出申请56K内存,由于页式存储管理是以页为单位进程内存分配的,因此系统会向进程A提供6个页面,也就是60K的内存空间,那么在最后一页中进程只使用了6K,从而多出了4K的内存碎片,可是这4K的内存碎片系统已经分配给进程A了,其余进程是没法再访问这些内存区域的,这种内存碎片就是内零头。
段式存储管理是段(段的大小是程序逻辑肯定,且大小不是固定的)为单位向进程进行内存分配的,进程申请多少内存,系统就给进程分配多少内存,这样就不会产生内零头,可是段式分配会产生外零头。
例如:假设内存总的大小为100K,如今进程A向系统申请60K的内存,系统在知足了进程A的内存申请要求后,还剩下40K的空闲内存区域;这时若是进程B向系统申请50K的内存区域,而系统只剩下了40K的内存区域,虽然这40K的内存区域不归任何进程全部,可是由于大小没法知足进程B的要求,因此也没法分配给进程B,这样就产生了外零头。请求段式存储管理是在段式存储管理的基础上增长了请求调段功能和段置换功能。
因此段式和请求段式存储管理会产生外零头,选BD
页式-内零头
段式-外零头
有关线程说法正确的是( )AC
线程是程序的多个顺序的流动态执行
线程有本身独立的地址空间
线程不可以独立执行,必须依存在应用程序中,由应用程序提供多个线程执行控制
线程是系统进行资源分配和调度的一个独立单位
进程是具备必定独立功能的程序关于某个数据集合上的一次运行活动,是操做系统进行资源分配和调度的一个独立单位;
线程是进程的一个实体,一个进程中包含多个线程。是CPU调度和分派的基本单位,是比进程更小的能独立运行的基本单位
B进程有独立的地址空间,线程没有。线程是共享进程的地址空间,所以B错误
D进程是 操做系统进行资源分配和调度的一个独立单位,而线程只是CPU调度和分派的基本单位,所以D错误
apache目录访问控制的参数有( )
authname
authtype
authhost
authuserfile
AuthName:验证窗口的名称
AuthType:验证的类型,这里定义的是Basic
AuthUserFile:验证所使用的账号密码配置文件
Require:指定能够登陆网页的用户
Linux系统中,已经将DHCP服务器架设好,客户端的网络接口eth0,能够经过( )命令得到服务器分配的IP地址。ABD
dhclient
ifdown eth0;
ifdown eth0;ifup eth0
ifconfig
service network stop;service network start
在xdm的配置目录中,哪一个文件用来设置在用户经过xdm登陆后自动起动的应用程序?B
The Xsession file
The Xsetup_0 file
The Xstart_up file
The GiveConsole file
xdm (X Display Manager)是一种图形化的登陆界面。配置文件都放在/etc/X11/xdm目录下
Xsession文件决定了用户会话的风格,包含用户会话使用的命令
Xsetup_0文件中的程序会和图形登陆界面一块儿运行
GiveConsole文件决定了在Xwindows移交给用户以前要执行的一些程序。
linux下解释: ip rule add from 192.168.3.112/32 [tos 0x10] table 2 pref 1500。 B
向规则链增长一条规则,规则匹配的对象是IP为192.168.3.112,tos等于0x10的包,使用路由表2,优先选择1500的端口
向规则链增长一条规则,规则匹配的对象是IP为192.168.3.112,tos等于0x10的包,使用路由表2,这条规则的优先级是1500
向规则链增长一条规则,规则匹配的对象是IP为192.168.3.112,tos等于0x10的包,不使用路由表2,优先选择1500的端口
命令语法不正确
规则包含3个要素:
什么样的包,将应用本规则(所谓的SELECTOR,多是filter更能反映其做用);
符合本规则的包将对其采起什么动做(ACTION),例如用那个表;
本规则的优先级别。优先级别越高的规则越先匹配(数值越小优先级别越高)。
pref是preference(优先)的缩写
在RHEL5系统vi编辑器的末行模式中,若须要将文件中每一行的第一个“Linux”替换为“RHEL5”,能够使用( )
:s/Linux/RHEL5
:s/Linux/RHEL5/g
:%s/Linux/RHEL5
:%s/Linux/RHEL5/g
A选项:指将当前行中的第一个linux换为RHEL5
B选项:指将当前行中全部的linux换为RHEL5
C选项:指将文件中每一行的第一个linux换为RHEL5
D选项:整个文档范围内的linux换为RHEL5
:S 表示当前行 g表示对应范围内的全部
%S表示整个文档
:s/old/new 将当前行中查找到的第一个字符“old” 串替换为“new”
:s/old/new/g 将当前行中查找到的全部字符串“old” 替换为“new”
:#,#s/old/new/g 在行号“#,#”范围内替换全部的字符串“old”为“new”
:%s/old/new/g 在整个文件范围内替换全部的字符串“old”为“new”
:s/old/new/c 在替换命令末尾加入c命令,将对每一个替换动做提示用户进行确认
使用什么命令把打印任务放到打印队列中去打印D
lprm
lpq
lpd
lpr
答案: lpr
lprm 命令用于将一个工做由打印机贮列中移除
lpq 命令用于查看一个打印队列的状态,该程序能够查看打印机队列状态及其所包含的打印任务。
lpd 命令 是一个常驻的打印机管理程序,它会根据 /etc/printcap 的内容来管理本地或远端的打印机。
lpr(line printer,按行打印)实用程序用来将一个或多个文件放入打印队列等待打印。
在Linux系统中搭建DHCP服务器时,若须要给客户机指定默认网关地址为192.168.1.1,能够在dhcpd.conf配置文件中进行( )设置
option default-gate-way 192.168.1.1;
option gateways 192.168.1.1;
option routers 192.168.1.1;
option router-servers 192.168.1.1;
option routers 192.168.1.1:网关IP设置
什么命令用来查看硬盘被占用了多少空间和剩余多少空间?B
du
df
free
vmstat
Linux系统中,用户文件描述符0表示 __ ___ 。 A
标准输入设备文件描述符
标准输出设备文件描述符
管道文件描述符
标准错误输出设备文件描述符
文件描述符0:标准输入设备
文件描述符1:标准输出设备
文件描述符2:标准错误输出设备
linux 建立文件的命令有() BCDE
ls
touch
cat
vi/vim
>
ls用来显示目标列表
当前位置:首页 » 文件和目录管理 » ls ls命令 目录基本操做 ls命令用来显示目标列表
当前位置:首页 » 文件和目录管理 » ls ls命令 目录基本操做 ls命令用来显示目标列表
touch命令
建立空白文件或修改文件时间
cat主要有三大功能:
1.一次显示整个文件。
2.从键盘建立一个文件。
只能建立新文件,不能编辑已有文件.
3.将几个文件合并为一个文件
vi/vim可用来建立文件编辑文件并保存
> 是定向输出到文件,若是文件不存在,就建立文件;若是文件存在,就将其清空;
将光盘/dev/hdc卸载的命令是?AC
umount /mnt/cdrom /dev/hdc
mount /dev/hdc
umount /dev/hdc
mount /mnt/cdrom /dev/hdc
挂载设备使用mount,卸载设备使用umount,有三种方式,经过设备名,挂载点或者设备名和挂载点
如题目所示:
umount /dev/hdc
umount /mnt/cdrom
umount /mnt/cdrom /dev/hdc
在linux编程中,如下哪一个TCP的套接字选项与nagle算法的开启和关闭有关?
TCP_MAXSEG
TCP_NODELAY
TCP_SYNCNT
TCP_KEEPALIVE
当有一个TCP数据段不足MSS,好比要发送700Byte数据,MSS为1460Byte的状况。nagle算法会延迟这个数据段的发送,等待,直到有足够的数据填充成一个完整数据段。也许有人会问,这有什么影响呢?没有太大的影响,整体上来讲,这种措施能节省没必要要的资源消耗。可是要发送的整体数据很小时,这种措施就是拖后腿了。好比,用户请求一个网页,大约十几KB的数据,TCP先发送了八九个数据包,剩下几百字节一直不发送,要等到另外一个RTT才发送,这时候前面发送数据的ACK已经返回了。这样的用户体验是很很差的。 因此,如今不少服务器都选择主动关闭nagle算法,由于带宽够大,资源消耗不是问题,速度反而是个大问题。
从上述描述中,禁用 nagle,实质就是不在延迟 TCP_NODELAY
下述是Linux下多线程编程经常使用的pthread库提供的函数名和意义,说法正确的有?ABCD
pthread_create 建立一个线程
pthread_join用来等待一个线程的结束
pthread_mutex_init 初始化一个线程互斥锁
pthread_exit结束一个线程
pthread_join()函数等待线程指定的线程
终止。 若是线程已经终止,那么pthread_join()
当即返回。 指定的线程必须可接合线程。
若是retval不是NULL,那么pthread_join()退出状态的副本
目标线程(即。 目标线程提供的价值
pthread_exit(3))* retval所指向的位置。 若是沥青量
线程被取消了,那么PTHREAD_CANCELED放在* retval。
若是多个线程同时试图加入相同的线程,
结果是未定义的。 若是线程调用pthread_join()
取消,而后目标仍可接合线程(即。 ,它将
不分离)。
如下哪些命令能够查看当前系统的启动时间(ABD)
w
top
ps
uptime
//漏了W
ps 查看当前系统中的进程
who -b 查看当前系统的启动时间
last reboot 查看当前系统的启动时间
w 查看当前系统的启动时间
top 查看当前系统的启动时间
uptime 查看当前系统的启动时间
编译内核时,能够使用哪些命令对内核进行配置?ABCD
make config
make menuconfig
make oldconfig
make xconfig
在Linux主机上彻底安装了RHEL5,这时系统会默认安装DHCP服务器软件包,下面关于DHCP服务器的配置文件描述正确的是(BD)
DHCP服务器的配置文件为/etc/dhcp/dhcpd.conf
DHCP服务器的配置文件为/etc/dhcpd.conf
DHCP服务器的配置文件默认是存在的,不须要建立
DHCP服务器的配置文件默认是不存在的,须要手工建立
对于Linux说法,下列说法正确的是()A
线性访问内存非法时,当前线程会进入信号处理函数
用mv命令移动文件时,文件的修改时间会发生变化
ulimit -c设置的是函数调用栈的大小
malloc函数是应用程序向操做系统申请内存的接口
A
B:不会变化
C:ulimit用于shell启动进程所占用的资源.-c size:设置core文件的最大值.单位:blocks
D:malloc的全称是memory allocation,中文叫动态内存分配,当没法知道内存具体位置的时候,想要绑定真正的内存空间,就须要用到动态的分配内存。
若是系统的umask设置为244,建立一个新文件后,它的权限:()
--w-r--r--
-r-xr--r--
-r---w--w-
-r-x-wx-wx
umask是从权限中“拿走”相应的位,且文件建立时不能赋予执行权限.
建立时,文件 默认666,目录默认777,减去umask的位就是结果。
Linux系统中某个可执行文件属于root而且有setid,当一个普通用户 mike运行这个程序时,产生的进程的有效用户和实际用户分别是?
root mike
root root
mike root
mike mike
deamon mike
mike deamon
setuid位是让普通用户能够以root用户的角色运行只有root账号才能运行的程序或命令。
所以当程序设置了setid权限位时,普通用户会临时变成root权限,但实际用户任然是原来的mike。
调用setid使进程成长为一个会话组长,setid调用成功后,进程成为新的会话组长和进程组长,并与原来的登录会话和进程组脱离,因为会话过程对控制终端的独占性,进程同时与控制终端脱离。
这也是在建立daemon程序时,常常用到的一个步骤。
从四个选项选出不一样的一个。B
telnet
rsync
wget
scp
linux下,这些四个命令或者工具,都在特定目录下对应有相应的可执行程序,终端下输入的参数,对应的是源码中函数的参数,因此工具或者命令,它们的都是可执行程序。
telnet为用户提供了在本地计算机上完成远程主机工做的能力,使用Telnet协议,是TCP/IP 协议族中的一员,是Internet远程登录服务的标准协议和主要方式。;
wget 是一个从网络上自动下载文件的自由工具,支持经过HTTP、HTTPS、FTP三个最多见的TCP/IP协议下载,并能够使用HTTP代理。
scp是有Security的文件copy,能够把当前一个文件copy到远程另一台主机上,基于SSH登陆,SSH采用面向链接的TCP协议传输 ,应用22号端口 安全系数较高。
rsync是类unix系统下的数据镜像备份工具——remote sync。支持本地复制,或者与其余SSH、rsync主机同步。能够使用scp、ssh等方式来传输文件,固然也能够经过直接的socket链接。
我的认为,rsync支持的协议更多,能够是面向链接的(tcp协议),也能够是无链接的(udp协议,socket中能够选择),然而上面三个采用的都是面向链接的协议(Telnet,TCP,HTTP, SSH等),必定程度上保证可靠性。
关于静态库与动态库的区别,如下说法错误的是()C
加载动态库的程序运行速度相对较快
静态库会被添加为程序的一部分进行使用
动态库可用节省内存和磁盘空间
静态库从新编译,须要将应用程序从新编译
动态库的函数到实际使用的时候才加载到内存,因此运行速度较慢
linux的系统调用是指D
由内核发起的调用
glibc函数库里的函数
由系统管理员运行的程序
是用户进程调用内核功能的接口
所谓系统调用,就是内核提供的、功能十分强大的一系列的函数。这些系统调用是在内核中实现的,再经过必定的方式把系统调用给用户,通常都经过门(gate)陷入(trap)实现。系统调用是用户程序和内核交互的接口。
bash中,须要将脚本demo.sh的标准输出和标准错误输出重定向至文件demo.log,如下哪些用法是正确的()ABC
bash demo.sh &>demo.log
bash demo.sh>&demo.log
bash demo.sh >demo.log 2>&1
bash demo.sh 2>demo.log 1>demo.log
该题考察Linux下的输入/输出重定向。在Linux中,每一个打开的文件被赋予一个文件描述符(file descriptor),包括标准输入(stdin),标准输出(stdout)和标准错误输出(stderr),由0,1,2分别描述。
A选项,command &> file 表示将标准输出(stdout)和标准错误输出(stderr)重定向至指定的文件file中。
B选项,语法错误。正确的语法是M >& N,M和N都是文件描述符,M在不指定的状况下默认是文件描述符1。
C选项,command > file 2>&1,是由两部分组成。首先command>file表示将标准输出(stdout)重定向到文件file中。接下来的2>&1表示将标准错误输出(stderr)输出到文件描述符1指定的位置,即标准输出(stdout)的位置,因为标准输出已经冲定向到文件file中,因此标准错误输出也会重定向到文件file中。
D选项,command 2> file 1> file,也可当作是由两部分组成。首先command 2> file,表示将标准错误输出(stderr)重定向到文件file中;1> file,表示将标准输出(stdout)重定向到文件file中。 最终的file中不会包含标准错误输出(stderr)的信息,由于会被以后的标准输出(stdout)覆盖。
下列有关Nginx配置文件nginx.conf的叙述正确的是()
nginx进程数设置为CPU总核心数最佳
虚拟主机配置多个域名时,各域名间应用逗号隔开
sendfile on;表示为开启高效文件传输模式,对于执行下载操做等相关应用时,应设置为on
设置工做模式与链接数上限时,应考虑单个进程最大链接数(最大链接数=链接数*进程数)
参考网络上的一篇总结。 Nginx配置文件nginx.conf中文详解
详见:http://www.2cto.com/os/201212/176520.html
A. 进程数设置为CPU总核心数最佳。 (正确)
B. 配置虚拟主机,多个域名时,用 空格 分隔。 (错误)
C. 设定http服务器中 sendfile on; #开启高效文件传输模式
普通应用设置为on;
用于进行下载等应用磁盘IO重负载应用,设置为off,以平衡磁盘与网络I/O处理速度,下降系统的负载。(错误)
D. 工做模式与链接数上限 :(最大链接数 = 链接数 * 进程数)(正确)
程序员小李经过管道统计prog.c函数中for语句经过的次数,须要使用的指令分别是BC
vi
grep
wc
sort
grep “for” proc.c | wc -l
Redhat 9所支持的安装方式有?
经过HTTP进行网络安装
经过Telnet进行网络安装
经过NFS进行网络安装
从本地硬盘驱动器进行安装
光盘安装 (常规状况) 硬盘安装 (无光驱状况)
网络安装-NFS方式 (适合于批量安装大量服务器,和kickstart自动安装一块儿使用)
网络安装-FTP方式 (适合于批量安装大量服务器,和kickstart自动安装一块儿使
网络安装-HTTP方式 (适合于批量安装大量服务器,和kickstart自动安装一块儿使
Linux系统上,下面哪些文件是与用户管理相关的配置文件()ABC
/etc/passwd
/etc/shadow
/etc/group
/etc/password
在Linux系统下,你用vi编辑器对文本文件test.txt进行了修改,想保存对该文件所作的修改并正常退出vi编辑器,能够( )。AD
在命令模式下执行ZZ命令
在命令模式下执行WQ命令
在末行模式下执行:q!
在末行模式下执行:wq
//漏了A
在bash中,下列哪些语句是赋值语句?()C
a ="test"
$a ="test"
a="test"
$a="test"
bash中有两个内置的命令declare 和 typeset 可用于建立变量。除了使用内置命令来建立和设置变量外,还能够直接赋值,格式为:变量名=变量值
注意:变量名前面不该加美圆“$”符号。(和PHP不一样)
等号“=”先后不能够有空格。
Shell中不须要显式的语法来声明变量。
变量名不能够直接和其余字符相连,若是想相连,必须用括号: echo “this is $(he)llo!”
下面说法哪一个正确的: D
各个线程拥有相同的堆栈
i++是线程安全的,不须要同步
x=y是线程安全的,不须要同步
对进程来讲,其虚拟内存的大小不受物理内存大小的限制
线程有本身的栈,但没有堆因此A错。普通整数的通常赋值、增量和减量语句会产生多条机器指令,操做均不具备原子性,须要同步,BC错。虚拟存储器具备请求调入和置换功能,因此虚拟内存的大小不受物理内存大小的限制。D对
你尝试登出时收到一个错误消息,显示你还有任务未完成,你须要使用下面哪一个命令?A
kill PID-of-the-process
kill job-number-of-process
kill
kill PID-of-the-last-command
答案A
B不行
想使用命令结束一个正在运行的job:
kill %job number
大家公司有三个办事处,这三个办事处的电脑在公司网络上都属于一个Windows 2000域。全部的服务器都装有Windows 2000Server 系统,此网络经过帧中继链接。你在名为Mon1服务器上安装了一个第三方网络管理套件。你须要确保这个新的软件能结合并管理网络中现有的设备。你该怎么作?
在Mon1上安装SNMP
除了Mon1,全部的计算机都安装SNMP
在Mon1上的TCP/IP安装属性中配置SNMP服务选项
在除了Mon1的全部计算机上的TCP/IP安装属性中配置SNMP服务选项
SNMP基于TCP/IP协议工做,对网络中支持SNMP协议的设备进行管理。换句话说就是全部 支持 SNMP协议的 设备 ,均可以由SNMP统一管理,那么管理员能够使用统一的操做进行,不用担忧下面的设备是linux,mac,win仍是路由器,防火墙。
而后NMS是 一个网管平台,也叫管理站,负责网管命令的发出、数据存储、及数据分析。被管理的设备上要运行SNMP代理,代理实现设备与管理站的SNMP通讯。
如今题目的意思就是 Mon1服务器安装那个NMS管理站,因此其余被他管的设备就要安装SNMP服务做为代理。
就比如各个国家的人组成一个公司。老大说中文,他就安装一个中文管理软件,属下英国人、西班牙人、意大利人就各自安装语言翻译器做为代理吧。
如下哪个命令只查找源代码、二进制文件和帮助文件,而不是因此类型的文件?此命令查找的目录是由环境变量$PATH指定的
whereis
whatis
which
apropos
whereis命令只能用于程序名的搜索,并且只搜索二进制文件(参数-b)、man说明文件(参数-m)和源代码文件(参数-s)。若是省略参数,则返回全部信息。
和find相比,whereis查找的速度很是快,这是由于linux系统会将 系统内的全部文件都记录在一个数据库文件中,当使用whereis和下面即将介绍的locate时,会从数据库中查找数据,而不是像find命令那样,通 过遍历硬盘来查找,效率天然会很高。
可是该数据库文件并非实时更新,默认状况下时一星期更新一次,所以,咱们在用whereis和locate 查找文件时,有时会找到已经被删除的数据,或者刚刚创建文件,却没法查找到,缘由就是由于数据库文件没有被更新。
1.命令格式:
whereis [-bmsu] [BMS 目录名 -f ] 文件名
2.命令功能:
whereis命令是定位可执行文件、源代码文件、帮助文件在文件系统中的位置。这些文件的属性应属于原始代码,二进制文件,或是帮助文件。whereis 程序还具备搜索源代码、指定备用搜索路径和搜索不寻常项的能力。
3.命令参数:
-b 定位可执行文件。
-m 定位帮助文件。
-s 定位源代码文件。
-u 搜索默认路径下除可执行文件、源代码文件、帮助文件之外的其它文件。
-B 指定搜索可执行文件的路径。
-M 指定搜索帮助文件的路径。
-S 指定搜索源代码文件的路径。
下面有关bash配置文件,说法正确的是?
.bash_logout:退出shell时,要执行的命令
.bash_profile:每一个用户均可使用该文件输入专用于本身使用的shell信息,当用户登陆时,该文件仅仅执行一次!默认状况下
/etc/bash.bashrc 该文件包含专用于我的的bash shell的bash信息,当登陆时以及每次打开新的shell时,该文件被读取
/etc/profile:此文件为系统的每一个用户设置环境信息,当用户第一次登陆时,该文件被执行
正确答案:A、B、D
.bash_profile 相似于编程中的构造函数,当登陆shell时,shell会寻找该文件作环境初始化。
.bashrc 是在bash环境时.bash_profile的替补。
.bash_logout 相似于编程中的析构函数,当登陆shell退出时,shell会寻找该文件,并按其指示办事。
/etc/profile是系统文件,对系统下全体用户起做用
C选项中:/etc/bash.bashrc 对全部用户起做用
而容易混淆的: ~/.bashrc 是对拥有当前home目录的用户起做用,也就是当前用户。
TCP的握手与分手,可能出现的情形有()。
握手须要3次通讯
分手须要进行4次通讯
FIN和ACK 在同一包里
ACK 和SYN 在同一包里
ABCD, C正确,理论上在接受到fin后,接收方刚好也要关闭链接,则能够在一个包内发送fin和ack(这从tcp包头格式能够看出是正确的,fin和ack不是在同一个bit位上的,因此为何不能同时发),其次在tcp状态转移图中也能够看到从fin_wait1直接到time_wait的状况,这种状况就就同时接受到fin和ack的结果
运行在多核处理器上的Linux环境中,若临界区很是短,且不容许线程上下文切换的状况下,使用下列哪一种机制知足上述需求而且性能最好?A
SpinLock
Mutex
Semaphore
Condition variable
spinlock在多处理器多线程环境的场景中有很普遍的使用,通常要求使用spinlock的临界区尽可能简短,这样获取的锁能够尽快释放,以知足其余忙等的线程。Spinlock和mutex不一样,spinlock不会致使线程的状态切换(用户态->内核态),可是spinlock使用不当(如临界区执行时间过长)会致使cpu busy飙高。
Linux下两个进程能够同时打开同一个文件,这时以下描述错误的是:D
两个进程中分别产生生成两个独立的fd
两个进程能够任意对文件进行读写操做,操做系统并不保证写的原子性
进程能够经过系统调用对文件加锁,从而实现对文件内容的保护
任何一个进程删除该文件时,另一个进程会当即出现读写失败
两个进程能够分别读取文件的不一样部分而不会相互影响
一个进程对文件长度和内容的修改另一个进程能够当即感知
应该选D, 通常删除都是文件索引,若是两个文件同时打开同一个文件,一个线程执行删除操做,只要另外一个线程不退出,就能够继续对该文件进行操做,一旦退出才找不到该文件的索引节点而报错
下面有关内核线程和用户线程说法错误的是?C
用户线程因 I/O 而处于等待状态时,整个进程就会被调度程序切换为等待状态,其余线程得不到运行的机会
内核线程只运行在内核态,不受用户态上下文的影响。
用户线程和内核线程的调度都须要通过内核态。
内核线程有利于发挥多处理器的并发优点,但却占用了更多的系统开支。
线程一般被定义为一个进程中代码的不一样执行路线。从实现方式上划分,线程有两种类型:“用户级线程”和“内核级线程”。 用户线程指不须要内核支持而在用户程序中实现的线程,其不依赖于操做系统核心,应用进程利用线程库提供建立、同步、调度和管理线程的函数来控制用户线程。这种线程甚至在象 DOS 这样的操做系统中也可实现,但线程的调度须要用户程序完成,这有些相似 Windows 3.x 的协做式多任务。另一种则须要内核的参与,由内核完成线程的调度。其依赖于操做系统核心,由内核的内部需求进行建立和撤销,这两种模型各有其好处和缺点。用户线程不须要额外的内核开支,而且用户态线程的实现方式能够被定制或修改以适应特殊应用的要求,可是当一个线程因 I/O 而处于等待状态时,整个进程就会被调度程序切换为等待状态敏感词线程得不到运行的机会;而内核线程则没有各个限制,有利于发挥多处理器的并发优点,但却占用了更多的系统开支。 Windows NT和OS/2支持内核线程。Linux 支持内核级的多线程
用户线程指不须要内核支持而在用户程序中实现的线程,其不依赖于操做系统核心,应用进程利用线程库提供建立、同步、调度和管理线程的函数来控制用户线程
在 Linux 中查看 ARP 缓存记录的命令是?A
"arp –a"
"arp –d"
"arp -L"
"arp –D"
arp缓存就是IP地址和MAC地址关系缓存列表。在Windows下 arp -d [$ip] 不指定IP地址时清除全部arp缓存 。在Linux下 arp -d $ip 必须指定IP地址才能执行这条命令的此参数, 全部在Linux系统下 arp -d $ip 命令只能清除一个IP地址的对应MAC地址缓存
arp -a 查看缓存记录
arp -d 删除某些内容
将文件file1复制为file2能够用下面哪些命令()ABCDE
cp file1 file2
cat file1 >file2
cat < file1 >file2
dd if=file1 of=file2
cat file1 | cat >file2
cp命令 :cp指令用于复制文件或目录。
将文件file1复制成文件file2命令以下:cp file1 file2
cat命令 :cat命令是linux下的一个文本输出命令,一般是用于观看某个文件的内容的。
一次显示整个文件命令以下: cat filename
> : linux中的数据流重导向:输出导向,覆盖导向的文件内容。
< : linux中的数据流重导向:输入导向,理解为本来由键盘输入改成文本输入
dd命令 : 做用是用指定大小的块拷贝一个文件,并在拷贝的同时进行指定的转换。
参数:if 输入文件(或设备名称) of 输出文件(或设备名称)
将文件file1拷贝到文件file2中命令以下: dd if=file1 of=file2
| :管道命令操做符,处理经由前面一个指令传出的正确输出信息,而后,传递给下一个命令,做为标准的输入
在Linux上,对于多进程,子进程继承了父进程的下列哪些?
进程地址空间
共享内存
信号掩码
已打开的文件描述符
以上都不是
子进程继承父进程
用户号UIDs和用户组号GIDs
环境Environment
堆栈
共享内存
打开文件的描述符
执行时关闭(Close-on-exec)标志
信号(Signal)控制设定
进程组号
当前工做目录
根目录
文件方式建立屏蔽字
资源限制
控制终端
子进程独有
进程号PID
不一样的父进程号
本身的文件描述符和目录流的拷贝
子进程不继承父进程的进程正文(text),数据和其余锁定内存(memory locks)
不继承异步输入和输出
父进程和子进程拥有独立的地址空间和PID参数。
子进程从父进程继承了用户号和用户组号,用户信息,目录信息,环境(表),打开的文件描述符,堆栈,(共享)内存等。
通过fork()之后,父进程和子进程拥有相同内容的代码段、数据段和用户堆栈,就像父进程把本身克隆了一遍。事实上,父进程只复制了本身的PCB块。而代码段,数据段和用户堆栈内存空间并无复制一份,而是与子进程共享。只有当子进程在运行中出现写操做时,才会产生中断,并为子进程分配内存空间。因为父进程的PCB和子进程的同样,因此在PCB中断中所记录的父进程占有的资源,也是与子进程共享使用的。这里的“共享”一词意味着“竞争”
在/etc/fstab文件中指定的文件系统加载参数中, 参数通常用于CD-ROM等移动设备D
defaults
sw
rw和ro
noauto
题目的意思是什么参数通常用于CD-ROM等移动设备
参数 default表示和使用默认设置
sw 表示自动挂载的可读写分区
ro 表示挂载只读权限的
rw 表示挂载读写权限的
因此选择D。表示手动挂载的,也用于CD-ROW等移动设备
linux中调用write发送网络数据返回n(n>0)表示(B )
对端已收到n个字节
本地已发送n个字节
系统网络buff收到 n个字节
系统调用失败
B
已发送,但不保证对方收到
write函数的返回值的含义原本就是这样
下列关于网络编程的描述中,错误的是?
一个 Socket 能够绑定多个网卡
客户端和服务器端均可以主动关闭 Socket
Socket 支持阻塞模式和非阻塞模式
TCP 和 UDP 协议不能绑定同一端口
TCP、UDP能够绑定同一端口来进行通讯。
相似于文件描述符,每一个端口都拥有一个叫端口号(port number)的整数型标识符,用于区别不一样端口。因为TCP/IP传输层的两个协议TCP和UDP是彻底独立的两个软件模块,所以各自的端口号也相互独立,如TCP有一个255号端口,UDP也能够有一个255号端口,两者并不冲突。
下面有关孤儿进程和僵尸进程的描述,说法错误的是?D
孤儿进程:一个父进程退出,而它的一个或多个子进程还在运行,那么那些子进程将成为孤儿进程。
僵尸进程:一个进程使用fork建立子进程,若是子进程退出,而父进程并无调用wait或waitpid获取子进程的状态信息,那么子进程的进程描述符仍然保存在系统中。这种进程称之为僵死进程。
孤儿进程将被init进程(进程号为1)所收养,并由init进程对它们完成状态收集工做。
孤儿进程和僵尸进程均可能使系统不能产生新的进程,都应该避免
孤儿进程:一个父进程退出,而它的一个或多个子进程还在运行,那么那些子进程将成为孤儿进程。孤儿进程将被init进程(进程号为1)所收养,并由init进程对它们完成状态收集工做。
僵尸进程:一个进程使用fork建立子进程,若是子进程退出,而父进程并无调用wait或waitpid获取子进程的状态信息,那么子进程的进程描述符仍然保存在系统中。这种进程称之为僵死进程。
若是进程不调用wait / waitpid的话, 那么保留的那段信息就不会释放,其进程号就会一直被占用,可是系统所能使用的进程号是有限的,若是大量的产生僵死进程,将由于没有可用的进程号而致使系统不能产生新的进程. 此即为僵尸进程的危害,应当避免。
孤儿进程是没有父进程的进程,孤儿进程这个重任就落到了init进程身上 ,init进程就好像是一个民政局,专门负责处理孤儿进程的善后工做。每当出现一个孤儿进程的时候,内核就把孤 儿进程的父进程设置为init,而init进程会循环地wait()它的已经退出的子进程。这样,当一个孤儿进程凄凉地结束了其生命周期的时候,init进程就会表明党和政府出面处理它的一切善后工做。 所以孤儿进程并不会有什么危害。
内核不包括的子系统是 D
进程管理系统
内存管理系统
I/O管理系统
硬件管理系统
内核分为进程管理子系统,内存管理子系统,io管理子系统,文件管理子系统
下面那些命令能够用来查看Linux主机的默认路由()AD
route
ifconfig
ping
netstat
答案:A
A,route命令用来显示目前本机路由表的内容,而且还能够针对路由表中的记录来进行相应的添加、删除或修改等操做。
B,ifconfig命令用来来检测和设置本机的网络接口。
C,ping命令用来检测两部主机之间的传输信道是否畅通,或远程主机是否正常
D,netstat命令用来查看主机的链接状态
如下哪些命令能够获取linux主机的负载相关指标ABD
uptime
top
ls
sar
crontab
uptime命令过去只显示系统运行多久。如今,能够显示系统已经运行了多长时间,信息显示依次为:如今时间、系统已经运行了多长时间、目前有多少登录用户、系统在过去的1分钟、5分钟和15分钟内的平均负载。
top命令能够查看系统总体状态
最后一些输出信息的解释:
load average: 0.09, 0.05, 0.01
三个数分别表明不一样时间段的系统平均负载(一分钟、五 分钟、以及十五分钟),它们的数字是越小越好。在多核处理中,系统的均值不该该高于处理器核心的总数量
进程使用的内存能够用top,有3个列VIRT RES SHR, 标示了进程使用的内存状况, VIRT标识这个进程能够使用的内存总大小, 包括这个进程真实使用的内存, 映射过的文件, 和别的进程共享的内存等. RES标识这个这个进程真实占用内存的大小. SHR标识能够和别的进程共享的内存和库大小.
sar -u输出显示CPU信息。-u选项是sar的默认选项。该输出以百分比显示CPU的使用状况
ls跟dos下的dir命令是同样的都是用来列出目录下的文件
crontab是一个定时执行任务命令,不能查看系统负载。
批量删除当前目录下后缀名为.c的文件。如a.c、b.c。AB
rm *.c
find . -name "*.c" -maxdepth 1 | xargs rm
find . -name "*.c" | xargs rm
以上都不正确
A, B
A没有问题
B:题目中是说删除当前目录下 后缀名为.c的文件,须要加上-maxdepth 1,表示是当前目录,不包括其子目录
因此C这样是不对的
用 xargs 是因为不少命令不支持 | 管道来传递参数,而平常工做中有有这个必要,因此就有了 xargs 命令
int main{ fork() || fork() }
共建立了()个进程 A
3
2
1
4
fork()给子进程返回一个零值,而给父进程返回一个非零值;
在main这个主进程中,首先执行 fork() || fork(), 左边的fork()返回一个非零值,根据||的短路原则,前面的表达式为真时,后面的表达式不执行,故包含main的这个主进程建立了一个子进程,
因为子进程会复制父进程,并且子进程会根据其返回值继续执行,就是说,在子进程中, fork() ||fork()这条语句左边表达式的返回值是0, 因此||右边的表达式要执行,这时在子进程中又建立了一个进程,
即main进程->子进程->子进程,一共建立了3个进程。
在linux网络编程中,如下关于socket描述符正确的是:ABC
socket存在两种模式:阻塞和非阻塞
系统调用read从socket中读取数据时,当read返回0的时候,表示socket中数据读取完毕
若是socket设置成非阻塞模式,当socket的输入缓冲区没有可读数据时,read操做会返回错误
在阻塞socket上调用write函数发送数据,函数返回时,表示数据已经发送出去
我以为答案是AC.
B:非阻塞模式下,返回0表示对端发送close关闭链接;因此我以为这个也不必定正确。
C:正确.非阻塞模式下,若是缓冲区为空,那么read返回-1,同时设置errno=EAGAIN。
D:非阻塞模式下,表示写入内核socket缓冲区;阻塞模式下表示成功发送出去。
进程A读取B进程中的某个变量(非共享内存),可行的方式有()
B进程向消息队列写入一个包含变量内容的消息,A进程从队列中读出
经过本地环路通讯
若是A、B 非亲属,那么A经过命名管道把这个变量的地址发给B进程
若是 B是A 进程的子进程,那么B直接读取变量内容便可
答案:A、B、C
本题考查进程间通讯方式。
A选项为消息队列的实现方式。
B选项为本地socket通讯方式。
C选项为命名管道通讯方式。
D选项经过fork子进程的方式,可是两者的地址空间是各自独立的,子进程没法读取父进程的数据,故不可用。
下列关于文件系统中元数据(好比ext2中的inode)的基本做用及ext2和ext3的根本区别描述错误的有?B
EXT2 inode用来定义文件系统的结构以及描述系统中每一个文件的管理信息,每一个文件都有且只有一个inode,即便文件中没有数据,其索引结点也是存在的
EXT2 inode包含文件访问权限、属主、组、大小、生成时间、访问时间、最后修改时间等信息。它是linux管理文件系统的最基本单位,也是文件系统链接任何子目录、文件的桥梁。
ext2文件系统是非日志文件系统,而ext3有多种日志模式
ext3文件系统可以极大地提升文件系统的完整性
inode分為內存中的inode和文件系統中的inode,為了避免混淆,我們稱前者為VFS inode, 而後者以EXT2為表明,我們稱為Ext2 inode。下面分別對VFS inodee與Ext2 inode作一下簡單的描述:
一、VFS inode包含文件訪問許可權、屬主、組、大小、生成時間、訪問時間、最後修改時間等信息。它是linux管理文件系統的最基本單位,也是文件系統連接任何子目錄、文件的橋樑。inode結構中的靜態信息取自物理設備上的文件系統,由文件系統指定的函數填寫,它只存在於內存中,能够通過inode緩存訪問。雖然每個文件都有相應的inode結點,可是只有在须要的時候系統才會在內存中為其创建相應的inode數據結構,创建的inode結構將造成一個鏈表,我們能够通過遍歷這個鏈表去获得我們须要的文件結點,VFS也為已分配的inode構造緩存和哈希表,以提 高系統性能。inode結構中的struct inode_operations *i_op為我們提供了一個inode操做列表,通過這個列表提供的函數我們能够對VFS inode結點進行各種操做。每個inode結構都有一個i結點號i_ino,在同一個文件系統中每個i結點號是惟一的。
二、EXT2 inode用來定義文件系統的結構以及描述系統中每個文件的管理信息,每個文件都有且只有一個inode,即便文件中沒有數據,其索引結點也是存在的。每個文件用一個單獨的Ext2 inode結構來描述,并且每一個inode都有惟一的標誌號。Ext2 inode為內存中的inode結構提供了文件的基本信息,隨著內存中inode結構的變化,系統也將更新Ext2 inode中相應的內容。Ext2 inode對應的是Ext2_inode結構。
EXT2 inode不包含文件的建立时间,ext3 inode包含。因此B错误。
init启动进程须要读取()配置文件
/sbin/init
/bin/sh
/etc/sysvinit
/etc/inittab
/sbin/init在核心完整的加载后,开始运行系统的第一支程序,主要的功能就是准备软件运行的环境,包括系统的主机名称、网络配置、语系处理、文件系统格式及其余服务的启动等。
/bin/sh解释脚本的shell命令,开机后运行
/etc/sysvinit就是 system V 风格的 init 系统,顾名思义,它源于 System V 系列 UNIX。sysvinit 中运行模式描述了系统各类预订的运行模式。
/etc/inittab定义了系统引导时的运行级别, 进入或者切换到一个运行级别时作什么。
执行指令find / -name “test.c”,按ctrl+z后的提示有[1] 166,能够继续执行的方式有()C
kill 166
Ctrl+h
fg 1
bg 1
fg是将进程放到前台并唤醒
bg是将进程放到后台并唤醒
linux下查看当前网络链接的命令。
正确答案: B 你的答案: A (错误)
ping
netstat
route
tracert
inux查看网络连接情况命令:netstat
ping测试网络是否链接
route设置路由表
tracert不是linux命令,在linux下应该是traceroute,追踪数据包在网络上传输时的路径
内存空间被分红不一样区域,其中用函数
void* malloc(unsigned int size);
申请的内存在()
正确答案: C 你的答案: B (错误)
程序区
静态存储区
动态存储区
ROM区
静态储存:全局变量 静态变量 Stack:局部变量 系统会自动回收 heap:new malloc
Linux执行ls,会引发哪些系统调用()
正确答案: B C D 你的答案: A B C (错误)
nmap
read
execve
fork
任何shell都会执行 exec 和 fork
而 ls会执行read
三个加起来
你被须要检查系统中的设备状况,须要检查哪一个log日志?
正确答案: C 你的答案: A (错误)
/var/log/tmp
/var/log/lastlog
/var/log/messages
/var/log/utmp
答案:C
/var/log/messages — 包括总体系统信息,其中也包含系统启动期间的日志。此外,mail,cron,daemon,kern和auth等内容也记录在var/log/messages日志中。
/var/log/dmesg — 包含内核缓冲信息(kernel ring buffer)。在系统启动时,会在屏幕上显示许多与硬件有关的信息。能够用dmesg查看它们。
/var/log/auth.log — 包含系统受权信息,包括用户登陆和使用的权限机制等。
/var/log/boot.log — 包含系统启动时的日志。
/var/log/daemon.log — 包含各类系统后台守护进程日志信息。
/var/log/dpkg.log – 包括安装或dpkg命令清除软件包的日志。
/var/log/kern.log – 包含内核产生的日志,有助于在定制内核时解决问题。
/var/log/lastlog — 记录全部用户的最近信息。这不是一个ASCII文件,所以须要用lastlog命令查看内容。
/var/log/maillog /var/log/mail.log — 包含来着系统运行电子邮件服务器的日志信息。例如,sendmail日志信息就所有送到这个文件中。
/var/log/user.log — 记录全部等级用户信息的日志。
/var/log/Xorg.x.log — 来自X的日志信息。
/var/log/alternatives.log – 更新替代信息都记录在这个文件中。
/var/log/btmp – 记录全部失败登陆信息。使用last命令能够查看btmp文件。例如,”last -f /var/log/btmp | more“。
/var/log/cups — 涉及全部打印信息的日志。
/var/log/anaconda.log — 在安装Linux时,全部安装信息都储存在这个文件中。
/var/log/yum.log — 包含使用yum安装的软件包信息。
/var/log/cron — 每当cron进程开始一个工做时,就会将相关信息记录在这个文件中。
/var/log/secure — 包含验证和受权方面信息。例如,sshd会将全部信息记录(其中包括失败登陆)在这里。
/var/log/wtmp或/var/log/utmp — 包含登陆信息。使用wtmp能够找出谁正在登录进入系统,谁使用命令显示这个文件或信息等。
/var/log/faillog – 包含用户登陆失败信息。此外,错误登陆命令也会记录在本文件中。
除了上述Log文件之外, /var/log还基于系统的具体应用包含如下一些子目录:
/var/log/httpd/或/var/log/apache2 — 包含服务器access_log和error_log信息。
/var/log/lighttpd/ — 包含light HTTPD的access_log和error_log。
/var/log/mail/ – 这个子目录包含邮件服务器的额外日志。
/var/log/prelink/ — 包含.so文件被prelink修改的信息。
/var/log/audit/ — 包含被 Linux audit daemon储存的信息。
/var/log/samba/ – 包含由samba存储的信息。
/var/log/sa/ — 包含每日由sysstat软件包收集的sar文件。
/var/log/sssd/ – 用于守护进程安全服务。
设fp已定义,执行语句fp=fopen("file","w");后,如下针对文本文件file操做叙述的选项错误的是:
正确答案: A C D 你的答案: C D (错误)
能够随意读和写
只能写不能读
能够在原有内容后追加写
写操做结束后能够从头开始读
正确答案:ACD;本题考察C语言中的文件操做;
解析:
fopen(“file”,”w”)打开文件,并赋值为“w”权限,即写权限,则B正确,A错误,由于这里不具备读权限;对于C的解释:用“w”打开的文件只能向该文件写入。若打开的文件不存在,则以指定的文件名创建该文件,若打开的文件已经存在,则将该文件删去,重建一个新文件。因此C错误;对于D的解释:D所描述的权限应该是“w+”而非“w”,因此D错误;
有一个文件ip.txt,每行一条ip记录,共若干行,下面哪一个命令能够实现“统计出现次数最多的前3个ip及其次数”?()
正确答案: B 你的答案: A (错误)
uniq -c ip.txt│sort -nr│head -n 3
sort ip.txt│uniq -c│sort -rn│head -n 3
cat ip.txt │count -n│sort -rn│head -n 3
cat ip.txt │sort │uniq -c│sort -rn│top -n 3
sort | uniq -c| 搭配使用,而且须要优先sort 再uniq -c 才能再输出行前面加上每行在文件中出现的次数;
sort 是按ASCII码排序
-n 依照数值的大小排序。
-r 以相反的顺序来排序。
uniq -c 是去重并显示个数
head -n 3 为取前3行
关于Linux系统的负载(Load),如下表述正确的是______。
正确答案: B C 你的答案: B (错误)
经过就绪和运行的进程数来反映
能够经过TOP命令查看
能够经过uptime查看
Load:2.5,1.3,1.1表示系统的负载压力在逐渐减小
D三个数分别表明不一样时间段的系统平均负载(一分钟、五分钟、以及十五分钟),它们的数字固然是越小越好。数字越高,说明服务器的负载越大,这也多是服务器出现某种问题的信号。可是一分钟和五分钟的平均负载大于十五分钟的,不是负载在变小吧。
下面选项关于linux下查看cpu,内存,swap,硬盘信息的命令描述错误的是?
正确答案: C 你的答案: C
cat /proc/cpuinfo 查看CPU相关参数的linux系统命令
cat /proc/meminfo 查看linux系统内存信息的linux系统命令
du -h: 查看硬盘信息
cat /proc/swaps :查看全部swap分区的信息
1.查看CPU信息命令
cat /proc/cpuinfo
2.查看内存信息命令
cat /proc/meminfo
3.查看硬盘信息命令
fdisk -l
下面哪一个命令不是用来查看网络故障?
正确答案: C 你的答案: C
telnet
ping
init
netstat
A选项:telnet命令一般用来远程登陆。telnet程序是基于TELNET协议的远程登陆客户端程序。Telnet协议是TCP/IP协议族中的一员,是Internet远程登陆服务的标准协议和主要方式。它为用户提供了在本地计算机上完成远程主机工做的能力。
B选项:Linux系统的ping命令是经常使用的网络命令,它一般用来测试与目标主机的连通性,咱们常常会说“ping一下某机器,看是否是开着”、不能打开网页时会说“你先ping网关地址192.168.1.1试试”。它经过发送ICMP ECHO_REQUEST数据包到网络主机(send ICMP ECHO_REQUEST to network hosts),并显示响应状况,这样咱们就能够根据它输出的信息来肯定目标主机是否可访问(但这不是绝对的)。有些服务器为了防止经过ping探测到,经过防火墙设置了禁止ping或者在内核参数中禁止ping,这样就不能经过ping肯定该主机是否还处于开启状态。
C选项: init init 命令进程和做业管理 init 命令是 Linux 下的进程初始化工具, init 进程是全部 Linux 进程的父进程,它的进程号为 1 。 init 命令是 Linux 操做系统中不可缺乏的程序之一, init 进程是 Linux 内核引导运行的,是系统中的第一个进程。
D选项: n etstat命令用于显示与IP、TCP、UDP和ICMP协议相关的统计数据,通常用于检验本机各端口的网络链接状况。 n etstat是在内核中访问网络及相关信息的程序,它能提供TCP链接,TCP和UDP监听,进程内存管理的相关报告。 若是你的计算机有时候接收到的数据报致使出错数据或故障,你没必要感到奇怪,TCP/IP能够允许这些类型的错误,并可以自动重发数据报。但若是累计的出错状况数目占到所接收的IP数据报至关大的百分比,或者它的数目正迅速增长,那么你就应该使用 n etstat查一查为何会出现这些状况了。
网络服务的daemon是:
正确答案: C 你的答案: C
netd
httpd
inetd
lpd
A: Netd 就是Network Daemon 的缩写,表示Network守护进程. Netd负责跟一些涉及网络的配置,操做,管理,查询等相关的功能实现,好比,例如带宽控制(Bandwidth),流量统计,带宽控制,网络地址转换(NAT),我的局域网(pan),PPP连接,soft-ap,共享上网(Tether),配置路由表,interface配置管理,等等.好像Andorid用的
C: inetd是监视一些网络请求的 守护进程 ,其根据网络请求来调用相应的服务进程来处理链接请求。它能够为多种服务管理链接,当 inetd 接到链接时,它可以肯定链接所需的程序,启动相应的进程,并把 socket 交给它 。
我的以为应该选A
下列关于 clone 和 fork 的区别描述正确的有?
正确答案: C 你的答案: C
clone和fork最大不一样在于fork再也不复制父进程的栈空间,而是本身建立一个新的。
clone和fork最大不一样在于clone再也不复制父进程的栈空间,而是本身建立一个新的。
clone是fork的升级版本,不只能够建立进程或者线程,还能够指定建立新的命名空间(namespace)、有选择的继承父进程的内存、甚至能够将建立出来的进程变成父进程的兄弟进程等等
fork是clone的升级版本,不只能够建立进程或者线程,还能够指定建立新的命名空间(namespace)、有选择的继承父进程的内存、甚至能够将建立出来的进程变成父进程的兄弟进程等等
fork() 函数复制时将父进程的因此资源都经过复制数据结构进行了复制,而后传递给子进程,因此 fork() 函数不带参数; clone() 函数则是将部分父进程的资源的数据结构进行复制,复制哪些资源是可选择的,这个能够经过参数设定,因此 clone() 函数带参数,没有复制的资源能够经过指针共享给子进程
fork()是所有复制
vfork()是共享内存
clone()是能够将父进程资源有选择地复制给子进程,而没有复制的数据结构则经过指针的复制让子进程共享,具体要复制哪些资源给子进程,由参数列表中的clone_flags来决定。另外,clone()返回的是子进程的pid。
下面有关linux查看系统负载的命令,说法错误的是?
正确答案: D 你的答案: D
uptime命令主要用于获取主机运行时间和查询linux系统负载等信息
vmstat命令能够查看查看cpu负载
sar命令能够查看网络接口信息
free命令能够查看磁盘负载状况
D错误
free - Display amount of tree and used memory in the system
描述的是内存使用状况,不是磁盘负载
Linux下经过哪一个命令怎么查看中断?
正确答案: B 你的答案: B
cat /proc/ioports
cat /proc/interrupts
cat /proc/kcore
cat /proc/kms
/proc/interrupts 显示使用的中断
/proc/ioports 当前使用的I/O端口
/proc/kcore 系统物理内存映像。与物理内存大小彻底同样,但不实际占用这么多的内存。
/proc/kmsg 内核输出的消息,也被送到syslog
Linux下的进程有哪三种状态?()
正确答案: B 你的答案: B
精确态,模糊态和随机态
运行态,就绪态和等待态
准备态,执行态和退出态
手动态,自动态和自由态
运行态 (Running) : 占有CPU,并在CPU上运行
就绪态 (Ready): 已经具有运行条件,但因为没有空闲CPU,而暂时不能运行
等待态 (Waiting/Blocked): 因等待某一事件而暂时不能运行:如等待读盘结果
查看TCP链接的命令是什么?正确答案: C 你的答案: Ctcpdumptopnetstatifconfigtcpdump是简单可靠网络监控的实用工具top 显示活动进程方面的状况netstat显示网络有关的信息,好比套接口使用状况、路由、接口、协议(TCP等)等ifconfig是查看活动的网卡信息