你使用命令”vi/etc/inittab”查看该文件的内容,你不小心改动了一些内容,为了防止系统出为,你不想保存所修改的内容,你应该如何操作:
正确答案: B 你的答案: B (正确) 在末行模式下,键入:wq 在末行模式下,键入:q! 在末行模式下,键入:x! 在编辑模式下,键入”ESC”键直接退出vi
理由: A :wq 强制性写入文件并退出。即使文件没有被修改也强制写入,并更新文件的修改时间。 B q! 直接强制退出 C x! 写入文件并退出。仅当文件被修改时才写入,并更新文件修改时间,否则不会更新文件修改时间。 D 在编辑模式下,键入”ESC”键不退出vi 直接进入命令模式
在linux系统中,用来存放系统所需要的配置文件和子目录是
正确答案: A 你的答案: 空 (错误) /etc /var /root /home
dev 设备信息 home 家目录 bin/sbin 可执行文件 etc 系统文件 lib/lib64 动态库/静态库 lost+found 丢失文件 opt 第三方文件(相对于操作系统) root 管理员的家目录 usr 第三方头文件和库 var 系统日志文件/缓存文件
linux下查看当前网络连接的命令。
正确答案: B 你的答案: A (错误) ping netstat route tracert
ping 命令不用说大家都知道,不论windows还是linux,对于PING命令无非是在测试网络连接的性能情况 netstat,字面理解网络状态,包括网络地址信息,网络的连接状态,网络的子网掩码等等,通过命令 netstat -ie ,效果和ifconfig一样 route是路由表信息命令主要是查看路由表相关的 tracert表示并不是很准确,在linux下应该是traceroute,字面理解路径追踪,其实就是在网络中包通过的路由器等相关的个数信息。
Linux什么情况下回发生page fault;
正确答案: B 你的答案: 空 (错误) 系统可用内存不够时 所需访问虚拟内存未被装载 当开始进行swap交换时 当进程被挂起时
1 为什么会存在page fault问题?
计算机的物理内存(看看你的内存条)有限,一般现在都是几个GB的容量了,BTW,我的笔记本有8GB,😃。
但应用程序的需求是无限的,操作系统为了解决这个矛盾,使用了虚拟内存的设计。简单的描述就是,给应用程序
一个与物理内存无关的虚拟地址空间,并提供一套映射机制,将虚拟地址映射到物理内存。当然应用程序是不知道
有这个映射机制存在的,他唯一需要做的就是尽情的使用自己的虚拟地址空间。操作系统提供的映射机制是
运行时动态进行虚拟地址和物理地址之间的映射的,当一个虚拟地址没有对应的物理内存时候,
映射机制就分配物理内存,构建映射表,满足应用程序的需求,这个过程就叫page fault。
与直接访问物理内存不同,page fault过程大部分是由软件完成的,消耗时间比较久,所以是影响性能的一个关键指标。
Linux把page fault又进一步分为minor page fault和major page fault。前面提到的分配物理内存,构建映射表过程可以看做是
minor page fault。major page fault是由swap机制引入的,对于swap情况,地址映射好了后,还需要从外部存储读取数据,这个
过程涉及到IO操作,耗时更久。
- 如何查看应用程序的page fault指标呢?
1) 可以使用time命令:
比如我想看看svm-train的情况(模型训练很耗资源)\time svm-train age_train_equal.txt(前面的斜杠表示不使用shell的内嵌time命令)
输出是:7.68user 0.02system 0:07.71elapsed 99%CPU (0avgtext+0avgdata 42768maxresident)k
0inputs+6696outputs (0major+15445minor)pagefaults 0swaps
可以看到只有minor page fault,没有major。
time命令的实现是用到了Linux提供的rusage机制。Linux的wait API可以返回一个应用程序的运行过程的资源消耗情况。
如果你想在自己的代码中获取资源利用情况,可以使用libc的getrusage函数,这个函数也是内核的API。
2) proc文件系统
Linux系统下的/proc/PID/stat文件,也提供了相关统计数据。
以下命令可以用于获取本机cpu使用率的是:
正确答案: C 你的答案: 空 (错误) ifconfig uptime top netstat
ifconfig是linux中用于显示或配置网络设备(网络接口卡)的命令 uptime显示开机时间 top显示当前系统资源使用情况,相当于任务管理器 netstat命令用于显示与IP、TCP、UDP和ICMP协议相关的统计数据,一般用于检验本机各端口的网络连接情况。
以下的命令得在( )自动执行:
06 03 * * 3 lp /usr/local/message | mail -s “server message” root
正确答案: C 你的答案: A (错误) 每周三06:03分 每周六03:03分 每周三03:06分 每周六03:06分
分 时 日 月 周 命令 第1列表示分钟1~59 每分钟用*或者 */1表示 第2列表示小时1~23(0表示0点) 第3列表示日期1~31 第4列表示月份1~12 第5列标识号星期0~6(0表示星期天) 第6列要运行的命令 *表示 第1列时:表示每分钟都要执行一次, 第2列时:表示每小时都要执行一次,依次类推,
局域网的网络地址192.168.1.0/24,局域网络连接其它网络的网关地址是192.168.1.1。主机192.168.1.20访问172.16.1.0/24网络时,其路由设置正确的是?
route add –net 172.16.1.0 gw 192.168.1.1 netmask 255.255.255.0 metric 1
路由信息是由{目的主机所在的网络地址,下一跳地址,子网掩码}组成
在RHEL5系统vi编辑器的末行模式中,若需要将文件中每一行的第一个“Linux”替换为“RHEL5”,可以使用( )
正确答案: C 你的答案: 空 (错误) 😒/Linux/RHEL5 😒/Linux/RHEL5/g :%s/Linux/RHEL5 :%s/Linux/RHEL5/g
😒/old/new 将当前行中查找到的第一个字符“old” 串替换为“new”
😒/old/new/g 将当前行中查找到的所有字符串“old” 替换为“new”
:#,#s/old/new/g 在行号“#,#”范围内替换所有的字符串“old”为“new”
:%s/old/new/g 在整个文件范围内替换所有的字符串“old”为“new”
😒/old/new/c 在替换命令末尾加入c命令,将对每个替换动作提示用户进行确认
以下说法正确的是
正确答案: A D 你的答案: 空 (错误) linux系统中的/var/log/lastlog日志记录了所有用户最后登录的记录,可以用lastlog命令查看 linux系统中的/var/log/last日志可以用last命令查看 /var/log/wtmp日志记录了登录过本系统的用户信息,可以用tail -f 命令查看 /var/run/utmp日志记录了正在登录本系统中的用户信息,可以用last -f 命令查看
解答: 在 Linux 里,utmp 文件的绝对路径是 /var/run/utmp ,该文件通常用 who 命令来读取;wtmp 文件的绝对路径是 /var/log/wtmp ,该文件通常通过 last 命令来读取。这两个文件都不是普通的文本文件,所以不能用 cat ,less,more 等命令来查看。
utmp日志文件记录有关当前登录的每个用户的信息。因此这个文件会随着用户登录和注销系统而不断变化,它只保留当时联机的用户记录,不会为用户保留永久的记录。系统中需要查询当前用户状态的程序,如 who、w、users、finger等就需要访问这个文件。该日志文件并不能包括所有精确的信息,因为某些突发错误会终止用户登录会话,而系统没有及时更新 utmp记录,因此该日志文件的记录不是百分之百值得信赖的。 wtmp日志文件永久记录每个用户登录、注销及系统的启动、停机的事件。因此随着系统正常运行时间的增加,该文件的大小也会越来越大,增加的速度取决于系统用户登录的次数。该日志文件可以用来查看用户的登录记录,last命令就通过访问这个文件获得这些信息,并以反序从后向前显示用户的登录记录,last也能根据用户、终端tty或时间显示相应的记录。 wtmp和utmp文件都是二进制文件,他们不能被诸如tail命令剪贴或合并(使用cat命令),用户需要使用who、w、users、last和ac来使用这两个文件包含的信息。
-f 文件名 指定登录的日志文件(默认是/var/log/wtmp)
last命令往回搜索wtmp来显示自从文件第一次创建以来登录过的用户 users用单独的一行打印当前登录的用户,每个显示的用户名对应一个登录对话 w命令查询utmp文件并显示当前系统中每个用户和它所运行的进程信息 who命令查询utmp文件并报告当前登录的每个用户 ac命令根据当前的/var/log/wtmp文件中的登录进入和退出来报告用户连结的时间
关于Linux系统的负载(Load),以下表述正确的是______。
正确答案: B C 你的答案: 空 (错误) 通过就绪和运行的进程数来反映 可以通过top命令查看 可以通过uptime查看 Load:2.5,1.3,1.1表示系统的负载压力在逐渐减少
11:39:11表示当前系统时间,42min表示系统运行时间,1 user表示登录用户数,load average:0.50,0.64,0.46表示最近1分钟,5分钟,15分钟系统平均载荷。
实时监控或查看系统资源使用情况的工具,类似于Windows的任务管理器。
为脚本程序指定执行权限命令的参数为
chmod +x filename.sh
chown 修改文件和文件夹的用户和用户组属性 1。要修改文件hh.c的所有者.修改为sakia的这个用户所有 chown sakia hh.c 这样就把hh.c的用户访问权限应用到sakia作为所有者
2。将目录 /tmp/sco 这个目录的所有者和组改为sakia和组net chown -R sakia:net /tmp/sco chmod 修改文件和文件夹读写执行属性 1。把hh.c文件修改为可写可读可执行 chmod 777 hh.c 要修改某目录下所有的文件属性为可写可读可执行 chmod 777 . 把文件夹名称与后缀名用*来代替就可以了。 同理若是要修改所有htm文件的属性 chmod 777 *.htm 2。把目录 /tmp/sco修改为可写可读可执行 chmod 777 /tmp/sco
要修改某目录下所有的文件夹属性为可写可读可执行 chmod 777 * 把文件夹名称用*来代替就可以了
要修改/tmp/sco下所有的文件和文件夹及其子文件夹属性为可写可读可执行 chmod -R 777 /tmp/sco
可写 w=4 可读 r=2 可执行 x=1 777就是拥有全权限。根据需要可以自由组合用户和组的权限
在RHEL5系统中使用vi编辑某文件时,要将第7到10行的内容一次性删除,可以在命令模式下先将光标移到第7行,再使用( )命令
正确答案: B 你的答案: D (错误) dd 4dd de 4de
ndd: 删除当前行开始的连续 n 行。 dd:删除 光 标所在行, n1,n2d: 删除n1到n2行,例如删除1到10行1,10d n,$d:删除从某行开始至文本末尾,例如删除第8行至末尾 8, $ d
在命令行下使用 vi 编辑一个文件时, 如何复制当前行?(最佳选项)
正确答案: C 你的答案: A (错误) cc dd yy Ctrl + c
cc 多数unix通过此调用它们的C编译程序 dd 删除光标所在的一整行 yy 复制光标所在的一整行 p 将已复制的数据在光标的下一行粘贴 P 将已复制的数据在光标的上一行粘贴
关于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, 那么遍历是最简单最有效的实现方式。
下面哪些是死锁的必要条件?
正确答案: A B C D 你的答案: B C (错误) 互斥 请求保持 不可剥夺 环路
产生死锁的原因主要是: (1) 因为系统资源不足。 (2) 进程运行推进的顺序不合适。 (3) 资源分配不当等。 如果系统资源充足,进程的资源请求都能够得到满足,死锁出现的可能性就很低,否则 就会因争夺有限的资源而陷入死锁。其次,进程运行推进顺序与速度不同,也可能产生死锁。 产生死锁的四个必要条件: (1) 互斥条件:一个资源每次只能被一个进程使用。 (2) 请求与保持条件:一个进程因请求资源而阻塞时,对已获得的资源保持不放。 (3) 不剥夺条件:进程已获得的资源,在末使用完之前,不能强行剥夺。 (4) 循环等待条件:若干进程之间形成一种头尾相接的循环等待资源关系。 这四个条件是 死锁的必要条件 ,只要系统发生死锁,这些条件必然成立,而只要上述条件之 一不满足,就不会发生死锁。 死锁的解除与预防: 理解了死锁的原因,尤其是产生死锁的四个必要条件,就可以最大可能地避免、预防和 解除死锁。所以,在系统设计、进程调度等方面注意如何不让这四个必要条件成立,如何确 定资源的合理分配算法,避免进程永久占据系统资源。此外,也要防止进程在处于等待状态 的情况下占用资源。因此,对资源的分配要给予合理的规划。
程序员小李通过管道统计prog.c函数中for语句通过的次数,需要使用的指令分别是
正确答案: B C 你的答案: B (错误) vi grep wc sort
解答: Linux系统中的wc (Word Count) 命令的功能为统计指定文件中的字节数、字数、行数,并将统计结果显示输出。
1. 命令格式:
wc [选项]文件…
2. 命令功能:
统计指定文件中的字节数、字数、行数,并将统计结果显示输出。该命令统计指定文件中的字节数、字数、行数。如果没有给出文件名,则从标准输入读取。wc同时也给出所指定文件的***计数。
3. 命令参数:
-c 统计字节数。
-l 统计行数。
-m 统计字符数。这个标志不能与 -c 标志一起使用。
-w 统计字数。一个字被定义为由空白、跳格或换行字符分隔的字符串。
-L 打印最长行的长度。
-help 显示帮助信息
–version 显示版本信息
4. 使用实例:
实例1:查看文件的字节数、字数、行数
命令:
wc test.txt
输出:
[root@localhost test] # cat test.txt
hnlinux
peida.cnblogs.com
ubuntu
ubuntu linux
redhat
Redhat
linuxmint
[root @localhost test] # wc test.txt
7 8 70 test.txt
[root @localhost test] # wc -l test.txt
7 test.txt
[root @localhost test] # wc -c test.txt
70 test.txt
[root @localhost test] # wc -w test.txt
8 test.txt
[root @localhost test] # wc -m test.txt
70 test.txt
[root @localhost test] # wc -L test.txt
17 test.txt
说明:
7 8 70 test.txt
行数 单词数 字节数 文件名
关于linux文件系统权限中的SUID,描述正确的是()
正确答案: A B C 你的答案: 空 (错误) 当一个设置了SUID 位的可执行文件被执行时,无论谁来执行这个文件,他都暂时拥有文件所有者的权限 可以通过chmod u+s 命令设置SUID属性 passwd命令就是通过SUID机制,在任何用户修改密码时,有权限访问密码存储文件 其他选项均不正确
SUID的作用就是:让本来没有相应权限的用户运行这个程序时,可以访问没有权限访问的资源。 suid意味着如果A用户对属于他自己的shell脚本文件设置了这种权限,那么其他用户在执行这个脚本的时候就拥有了A用户的权限。所以,如果root用户对某一脚本设置了这一权限的话则其他用户执行该脚本的时候则拥有了root用户权限。 权限设定方法: 字母表示法: chmod u+s FILE… chmod u-s FILE… 数字表示法: chmod 4755 FILE 添加SUID权限到二进制程序文件(添加到DIR无意义) 在普通三位数字权限位之前,用4代表添加的SUID位 chmod 0xxx … 可以删除文件的SUID(无法删除目录的SUID)
在linux网络编程中,以下关于socket描述符正确的是:
正确答案: A C 你的答案: A (错误) socket存在两种模式:阻塞和非阻塞 系统调用read从socket中读取数据时,当read返回-1的时候,表示socket中数据读取完毕 如果socket设置成非阻塞模式,当socket的输入缓冲区没有可读数据时,read操作会返回错误 在阻塞socket上调用write函数发送数据,函数返回时,表示数据已经发送出去
B:非阻塞模式下,返回0表示对端发送close关闭连接;所以我觉得这个也不一定正确。 C:正确.非阻塞模式下,如果缓冲区为空,那么read返回-1,同时设置errno=EAGAIN。 D:非阻塞模式下,表示写入内核socket缓冲区;阻塞模式下表示成功发送出去。
|