2021年04月11日Linux专项练习1

考点1:查看文件内容的命令

在Linux系统上,下面那个命令不可以用来查看文件内容()

  • A cat
  • B ls
  • C less
  • D more

解析

显示答案/隐藏答案正确答案: B

考点2:查看线程信息功能的gdb命令

写出完成gdb查看线程信息功能的gdb命令。

  • A bt
  • B info thread
  • C set scheduler-locking off
  • D info break

解析

显示答案/隐藏答案正确答案: B
命令 描述
backtrace bt 打印当前的函数调用栈的所有信息。
info threads 显示当前可调试的所有线程,每个线程会有一个GDB为其分配的ID,后面操作线程的时候会用到这个ID。前面有*的是当前调试的线程。
set scheduler-locking 线程调试 显示线程状态,参数off表示不锁定任何线程
info break 可列出所有断点信息,info break 后也可设置要查看的break num

考点3:八进制文件权限授权命令

在linux中,将文件属性设置为所有者只读,其余无任何权限的命令为(假设文件名为myfile)

  • A chown 400 myfile
  • B chmod 750 myfile
  • C chown u+r myfile
  • D chmod 400 myfile

解析

显示答案/隐藏答案正确答案: D

考点4:查看硬盘占用空间和剩余空间

什么命令用来查看硬盘被占用了多少空间和剩余多少空间?

  • A du
  • B df
  • C free
  • D vmstat

解析

显示答案/隐藏答案正确答案: B

du(disk usage)

统计目录(或文件)所占磁盘空间的大小
查看/root目录占用磁盘空间的大小:

1
2
3
[root@localhost ~]# du -h -d 0 /root
45M /root
[root@localhost ~]#

查看/root目录以及/root目录的一级子目录所占的磁盘空间大小

1
2
3
4
5
6
7
8
9
[root@localhost ~]# du -h -d 1 /root
8.0K /root/.pki
20K /root/.ssh
2.6M /root/.nvm
12K /root/.config
42M /root/.npm
84K /root/C_Test
45M /root
[root@localhost ~]#

df(disk free)

用于显示文件系统的磁盘使用情况

1
2
3
4
5
6
7
8
9
10
11
12
13
[root@localhost ~]# df
文件系统 1K-块 已用 可用 已用% 挂载点
/dev/block/bootdevice/by-name/userdata 56814352 14404892 42393076 26% /
tmpfs 1822552 368 1822184 1% /dev
tmpfs 1843032 0 1843032 0% /dev/shm
/data/media 56763152 14421276 42341876 26% /mnt/files
[root@localhost ~]# df -h
文件系统 容量 已用 可用 已用% 挂载点
/dev/block/bootdevice/by-name/userdata 55G 14G 41G 26% /
tmpfs 1.8G 368K 1.8G 1% /dev
tmpfs 1.8G 0 1.8G 0% /dev/shm
/data/media 55G 14G 41G 26% /mnt/files
[root@localhost ~]#

free

可以显示当前系统未使用的和已使用的内存数目,还可以显示被内核使用的内存缓冲区

1
2
3
4
5
6
7
8
9
[root@localhost ~]# free
total used free shared buff/cache available
Mem: 3686064 1383564 673684 2108 1628816 2266427
Swap: 0 0 0
[root@localhost ~]# free -h
total used free shared buff/cache available
Mem: 3.5G 1.3G 657M 2.1M 1.6G 2.2G
Swap: 0B 0B 0B
[root@localhost ~]#

vmstat

命令报告关于内核线程、虚拟内存、磁盘、陷阱和 CPU 活动的统计信息

1
2
3
4
5
[root@localhost ~]# vmstat
procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu-----
r b swpd free buff cache si so bi bo in cs us sy id wa st
1 0 0 669372 164900 1529292 0 0 33 27 5 21 15 5 80 0 0
[root@localhost ~]#

考点5:八进制文件权限

linux系统中某文件的组外成员的权限为只读;所有者有全部权限;组内的权限为读与写,则该文件的权限为:

  • A 753
  • B 763
  • C 754
  • D 764

解析

显示答案/隐藏答案正确答案: D

ls -l第一列第1位含义

1
2
3
4
5
6
7
8
9
[root@localhost blog]# ls -l
总用量 14056
-rw-r--r--. 1 root root 3196 3月 18 14:47 _config.yml
-rw-r--r--. 1 root root 14159968 3月 20 22:46 db.json
......
drwxr-xr-x. 307 root root 8192 3月 18 14:49 node_modules
-rw-r--r--. 1 root root 817 3月 18 14:49 package.json
......
drwxr-xr-x. 3 root root 4096 3月 18 14:47 themes
ls -l第一列第一位 含义
l 链接文件
d 目录
- 文件

ls -l第1列第2到10为含义

1
2
3
4
5
6
7
[root@localhost ~]# ls -l
总用量 4
lrwxrwxrwx. 1 root root 15 3月 19 02:30 blog -> /opt/hexo/blog/
drwxr-xr-x. 2 root root 4096 4月 3 22:48 C_Test
lrwxrwxrwx. 1 root root 14 3月 19 21:17 exam -> /opt/hexo/exam
lrwxrwxrwx. 1 root root 11 3月 22 02:43 share -> /mnt/files/
[root@localhost ~]#
ls -l第一列第2~10位 含义 二进制 八进制
r 100 4
w 010 2
x 执行 001 1

chmod 八进制写法

命令 ls -l结果
chmod 777 _config.yml -rwxrwxrwx. 1 root root 3196 3月 18 14:47 _config.yml
chmod 776 _config.yml -rwxrwxrw-. 1 root root 3196 3月 18 14:47 _config.yml
chmod 775 _config.yml -rwxrwxr-x. 1 root root 3196 3月 18 14:47 _config.yml
chmod 774 _config.yml -rwxrwxr--. 1 root root 3196 3月 18 14:47 _config.yml
chmod 773 _config.yml -rwxrwx-wx. 1 root root 3196 3月 18 14:47 _config.yml
chmod 772 _config.yml -rwxrwx-w-. 1 root root 3196 3月 18 14:47 _config.yml
chmod 771 _config.yml -rwxrwx--x. 1 root root 3196 3月 18 14:47 _config.yml
chmod 770 _config.yml -rwxrwx---. 1 root root 3196 3月 18 14:47 _config.yml

u-g-o:用户-组内用户-其他用户
r-w-x:用4-2-1表示。
所有者u有全部权限:rwx; = 7
组内g的权限为读与写:rw- = 6
组外成员o的权限为只读:r– = 4

考点6:fork()方法短路或

int main(){fork()||fork();}共创建几个进程:___

  • A 1
  • B 2
  • C 3
  • D 4
  • E 5
  • F 6

解析

显示答案/隐藏答案正确答案: C

fork()返回值

fork()给子进程返回一个零值,而给父进程返回一个非零值
在main这个主进程中,首先执行

1
fork()|| fork()

左边的fork()会复制父进程得到一个子进程,然后左边这个fork()该子进程的ID,也就是返回一个非零值,根据||的短路原则,前面的表达式为真时,后面的表达式不执行,故包含main的这个主进程创建了一个子进程。

由于子进程会复制父进程,而且子进程会根据fork()的返回值继续执行,就是说,在子进程中的

1
fork()||fork()

这条语句左边表达式的返回值是0,所以||右边的表达式要执行,这时在子进程中又创建了一个进程,

即main进程->子进程->孙子进程,一共创建了3个进程。

fork函数在父进程中返回新创建子进程的进程ID,大于0,此时父进程根据左值优先原则,不在与后面进行异或;
fork函数在子进程中返回0,此时子进程仍然需要进行下一个fork函数。

代码验证

forkTest.c
1
2
3
4
5
6
7
8
9
10
#include <unistd.h>
#include <stdio.h>
int main()
{
fork()||fork();
printf("num\n");
// sleep(100);
wait(NULL);
return 0;
}

运行结果

1
2
3
4
5
6
7
8
9
10
11
12
[root@localhost C_Test]# ls
a.out file1.txt file3.txt forkTest.c redCharacter.out terminalColor.c
command.sh file2.txt file4.txt redCharacter.c strerror.c terminalColor.out
[root@localhost C_Test]# gcc forkTest.c -o forkTest.o
[root@localhost C_Test]# ls
a.out file1.txt file3.txt forkTest.c redCharacter.c strerror.c terminalColor.out
command.sh file2.txt file4.txt forkTest.o redCharacter.out terminalColor.c
[root@localhost C_Test]# ./forkTest.o
num
num
num
[root@localhost C_Test]#

考点7:Linux守护进程

网络服务的daemon是:

  • A netd
  • B httpd
  • C inetd
  • D lpd

解析

显示答案/隐藏答案正确答案: A

Service

1、 Service就是指常驻内存大一些程序,且可以提供一些系统或是网络功能。提供service的那个程序就成为daemon。Daemon和service可以视为等同,不必刻意去区分。

Daemon

2、 Daemon可以分为两类,一类是可独立启动的,成为stand alone;另一类是通过一支super daemon来统一管理的服务。

3、 Stand alone类型的daemon能够自动启动,常驻内存,对请求响应较快,如httpd、vsftpd等。
4、 Super daemon统一管理的是用户有请求,super daemon就唤醒响应daemon,如果用户请求结束,就kill掉该daemon。优点不用常驻内存,缺点装到内存需要时间。如telnet。这个super daemon早期是inetd,后来被xinetd取代。
这里说的是网络的daemon应该指的是network daemon,netd表示network的守护进程,netd主要负责一些网络的相关配置,操作,管理和查询功能的实现

关于netd的资料找到的很少,以下是唯一找到的一片文章介绍的 http://gaozhipeng.me/posts/netd-learn1/

守护进程

https://zh.wikipedia.org/zh-cn/守护进程
在一个多任务的电脑操作系统中,守护进程(英语:daemon,/ˈdiːmən/或/ˈdeɪmən/)是一种在后台执行的电脑程序。此类程序会被以进程的形式初始化。守护进程程序的名称通常以字母“d”结尾:例如,syslogd就是指管理系统日志的守护进程。
通常,守护进程没有任何存在的父进程(即PPID=1),且在UNIX系统进程层级中直接位于init之下。守护进程程序通常通过如下方法使自己成为守护进程:对一个子进程运行fork,然后使其父进程立即终止,使得这个子进程能在init下运行。这种方法通常被称为“脱壳”。
系统通常在启动时一同引导守护进程。守护进程为对网络请求,硬件活动等进行响应,或其他通过某些任务对其他应用程序的请求进行回应提供支持。守护进程也能够对硬件进行配置(如在某些Linux系统上的devfsd),运行计划任务(例如cron),以及运行其他任务。
在DOS环境中,此类应用程序被称为驻留程序(TSR)。在Windows系统中,由称为Windows服务的应用程序来履行守护进程的职责。
在原本的Mac OS系统中,此类应用程序被称为“extensions”。而作为Unix-like的Mac OS X有守护进程。(在Mac OS X中也有“服务”,但他们与Windows中类似的程序在概念上完全不相同。)
http://c.biancheng.net/view/5935.html

https://baike.baidu.com/item/守护进程
按照服务类型分为如下几个。
系统守护进程:syslogd、login、crond、at等。
网络守护进程:sendmail、httpd、xinetd、等。
独立启动的守护进程:httpd、named、xinetd等。
被动守护进程(由xinetd启动):telnet、finger、ktalk等。

考点8:Linux多线程编程pthread库函数

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

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

解析

显示答案/隐藏答案正确答案: ABCD

考点9:Nginx配置文件nginx.conf

下列有关Nginx配置文件nginx.conf的叙述正确的是()

  • A nginx进程数设置为CPU总核心数最佳
  • B 虚拟主机配置多个域名时,各域名间应用逗号隔开
  • C sendfile on;表示为开启高效文件传输模式,对于执行下载操作等相关应用时,应设置为on
  • D 设置工作模式与连接数上限时,应考虑单个进程最大连接数(最大连接数=连接数*进程数)

解析

显示答案/隐藏答案正确答案: AD

参考网络上的一篇总结。 Nginx配置文件nginx.conf中文详解
详见:>http://www.2cto.com/os/201212/176520.html
A. 进程数设置为CPU总核心数最佳。 (正确)
B. 配置虚拟主机,多个域名时,用 空格 分隔。 (错误)
C. 设定http服务器中 sendfile on; #开启高效文件传输模式
普通应用设置为on; 用于进行下载等应用磁盘IO重负载应用,设置为off,以平衡磁盘与网络I/O处理速度,降低系统的负载。(错误)
D. 工作模式与连接数上限 :(最大连接数 = 连接数 * 进程数)(正确)

考点10:DNS服务主配置文件有哪些

下列不是dns服务主配置文件的是( )。

  • A named.conf
  • B dns.conf
  • C name.conf
  • D named.local

解析

显示答案/隐藏答案正确答案: BCD