linux基础笔试练习题笔记(2)

embedded/2024/11/18 22:15:37/
在Linux系统上,下面那个命令不可以用来查看文件内容()
A.cat
B.ls
C.less
D.more

答案解析:

cat命令用用于一次性显示文件的所有内容,一般文件内容较多时一般会使用more或less命令。

more:分页显示文件内容,如果文件内容很长,more可以分页显示。

less:分页显示文件内容,但是与more命令相比,不仅支持向下翻页,还支持向上翻页,并且还可以搜索某一关键词所在的位置。


以下哪个环境变量表示当前路径 () 。A.PATH
B.PWD
C.HOME
D.ROOT

答案解析:

  1. PWD 和 OLDPWD

    • PWD 环境变量确实记录了当前工作目录的路径。当使用 cd 命令切换目录时,PWD 的值会自动更新。
    • OLDPWD 环境变量记录了上一个工作目录的路径,即用户在执行 cd 命令之前所在的目录。
  2. PATH

    • PATH 环境变量确实非常重要,它用于帮助 Shell 找到用户输入的命令。PATH 记录了一系列的目录路径,Shell 会按照这个列表顺序搜索用户输入的命令对应的可执行文件。
  3. HOME

    • HOME 环境变量记录了当前用户的主目录路径,这个路径是由 /etc/passwd 文件中对应用户条目的最后一个字段(通常是倒数第二个字段)决定的。
    • HOME 目录是用户存放个人文件的地方。

一个文件名字为rr.Z,可以用来解压缩的命令是?
A.tar
B.gzip
C.compress
D.uncompress

答案解析:tar是操作.tar的命令 gzip是压缩.gz压缩包的命令 compress:压缩.Z文件 uncompress:解压缩.Z文件


进程之间通信都有哪些方式?
A.共享内存
B.消息队列
C.系统管道
D.临界区

答案解析:

a) 管道(Pipe)

  • 管道是最基本的 IPC 机制之一,允许具有亲缘关系的进程(即父子进程)之间进行单向通信。
  • 有名管道(FIFO)克服了管道的局限性,允许无亲缘关系的进程间通信,并且可以有名字,通过文件系统进行访问。

b) 信号(Signal)

  • 信号是一种软件中断,用于通知进程某个事件已经发生。它不仅可以用于进程间通信,还可以用于进程自我信号处理。
  • Linux 支持多种信号处理机制,包括传统的 signal 函数和符合 POSIX.1 标准的 sigaction 函数。

c) 消息队列(Message Queues)

  • 消息队列允许进程以消息的形式进行通信,可以是 POSIX 消息队列或 System V 消息队列。
  • 消息队列可以克服信号信息量少、管道只能传输无格式字节流以及缓冲区大小受限等缺点。

d) 共享内存(Shared Memory)

  • 共享内存是一种效率很高的 IPC 形式,允许多个进程共享一个给定的存储区。
  • 它通常与其他同步机制(如信号量)结合使用,以实现进程间的同步和互斥。

e) 信号量(Semaphore)

  • 信号量用于控制多个进程对共享资源的访问,是一种同步手段。
  • 它可以用于进程间同步,也可以用于同一进程内不同线程间的同步。

f) 套接口(Socket)

  • 套接口是一种更为通用的 IPC 机制,不仅适用于本机进程间通信,还适用于不同机器上的进程间通信。
  • 套接口最初由 Unix 系统的 BSD 分支开发,现在被广泛支持,包括 Linux 和其他类 Unix 系统。

Windows线程间通信:临界区(Critical Section)、互斥量(Mutex)、信号量(Semaphore)、事件(Event)

Windows 进程间通信:管道、内存共享、消息队列、信号量、socket

Windows 进程和线程共同之处:信号量和消息(事件)


建立(符号)链接的 Linux 命令是()A.ls
B.cd
C.ln
D.more

答案解析:

Linux ls(list files)命令用于显示指定工作目录下之内容(列出目前工作目录所含之文件及子目录);
Linux cd(change directory)命令用于切换当前工作目录;
Linux ln(link files)命令是一个非常重要命令,它的功能是为某一个文件在另外一个位置建立一个同步的链接;
Linux more 命令类似 cat ,不过会以一页一页的形式显示,更方便使用者逐页阅读。


如果存在文本文件 /tmp/testfile,并且文件行数小于等于 10 行,则输出文件前 3 行,下列脚本正确的是()
A.if [[ -n '/tmp/testfile' ]] && [[ `wc -l /tmp/testfile` -le 10 ]];thenhead -3 /tmp/testfile
fi
B.if [[ -f '/tmp/testfile' ]] && [[ `wc -l /tmp/testfile` -le 10 ]];thenhead -3 /tmp/testfile
fi
C.if [[ -n '/tmp/testfile' ]] || [[ `wc -l /tmp/testfile` -le 10 ]];thenhead -3 /tmp/testfilefi
D.if [[ -f '/tmp/testfile' ]] || [[ `wc -l /tmp/testfile` -le 10 ]];thenhead -3 /tmp/testfile
fi

答案解析:

1.并且——使用运算符&&

2.[-f filename]——文件filename是否存在,存在则表达式为真,否则为假

3.[-n str]——判断字符串str是否为空,如果字符串长度大于0则表达式为真,否则为假;此处给出的字符串长度  '/tmp/testfile'
显然大于0,表达式为真,但文件不一定存在。


目录在linux文件系统中是以怎样的形式存在的?
A.文件夹
B.文件
C.inode
D.软链接

答案解析:

  • make config - 纯文本界面 (最常用的选择)。 
  • make menuconfig - 基于文本彩色菜单和单选列表。这个选项可以加快开发者开发速度。需要安装ncurses(ncurses-devel)。 
  • make nconfig - 基于文本的彩色菜单。需要安装curses (libcdk5-dev)。 
  • make xconfig - QT/X-windows 界面。需要安装QT。 
  • make gconfig - Gtk/X-windows 界面。需要安装GTK。 
  • make oldconfig - 纯文本界面,但是其默认的问题是基于已有的本地配置文件。 
  • make silentoldconfig - 和oldconfig相似,但是不会显示配置文件中已有的问题的回答。 
  • make olddefconfig -和silentoldconfig相似,但有些问题已经以它们的默认值选择。 
  • make defconfig - 这个选项将会创建一份以当前系统架构为基础的默认设置文件。 
  • make ${PLATFORM}defconfig - 创建一份使用arch/$ARCH/configs/${PLATFORM}defconfig中的值的配置文件。 
  • make allyesconfig - 这个选项将会创建一份尽可能多的问题回答都为‘yes’的配置文件。 

vi编辑器中,删除一行的命令是?
A.rm
B.dd
C.yy
D.pp

答案解析:rm是系统的删除命令,yy是vi编辑器复制,pp是vi编辑器粘贴


某配置文件针对所有用户的访问权限是只读,但操作者是文件所有者,vi 编辑器强制存盘退出的指令是()
A.:wq
B.ZZ
C.:q!
D.:wq!

答案解析:

:q      不保存退出
:q!    直接强制退出,不写入修改的数据
:wq   强制性写入文件并退出。即使文件没有被修改也强制写入,并更新文件的修改时间
:wq!  强制写入并退出(只有当操作者是文件所有者才可行)
:x      文件有变动时等同于 :wq,文件无变动时等同与 :q
ZZ    等同于 :x

  1. wq

    • 这个命令意味着 "write and quit"(写入并退出)。
    • 它首先会尝试保存当前编辑的文件,然后退出 Vim。
    • 如果文件自上次保存以来没有被修改,或者 Vim 处于正常模式,wq 会成功保存文件并退出。
    • 如果文件已被修改且 Vim 处于插入模式,wq 会先尝试保存文件,如果保存成功,则退出 Vim;如果保存失败(例如,文件被其他进程锁定或磁盘空间不足),则 Vim 会保持打开状态,让你处理保存错误。
  2. wq!

    • 这个命令意味着 "write and quit forcefully"(强制写入并退出)。
    • wq! 会强制保存文件,即使文件是只读的,Vim 也会尝试覆盖它(如果有足够的权限)。
    • 这个命令在保存文件时不会检查文件的只读属性,它会忽略任何文件锁定,强制保存更改。
    • 使用 wq! 时,如果保存成功,Vim 会退出;如果保存失败,Vim 也会退出,但更改可能不会被保存。

如何删除一个非空目录 /tmp () 。A.del /tmp/*
B.rm -rf /tmp
C.rm -Ra /tmp/*
D.rm –rf /tmp/*

答案详解:

  • rm 是删除文件和目录的命令。
  • -r 或 -R 表示递归删除,即包括目录下的所有子目录和文件。
  • -f 表示强制删除,即使文件或目录不存在也不会报错。

查看后台进程作业ID的指令是( )
A.jobs
B.ps
C.ls
D.pg

答案解析:

ps列出系统中当前运行的那些进程

ls:显示当前目录中的文件名字

pg:提供了一次性的查看进程结果,但所提供的查看结果不是动态连续的

jobs:查看后台进程作业


在Linux下查看文件有多种方法,若希望在查看文件内容过程中,可以按空格实现翻页,应使用(      )命令
A.cat
B.more
C.less
D.head

答案解析:

  1. cat

    cat 命令用于连接文件并打印到标准输出设备上,通常用于查看文件内容。默认情况下,cat 命令从文件的第一行开始显示所有内容。
  2. tac

    tac 命令是 cat 的反向操作,它将文件内容反向输出,即从最后一行开始显示文件的所有内容。
  3. more

    more 命令用于分页显示文件内容。用户可以通过按回车键(显示下一行)或 b 键(回退一页)来控制显示。more 命令不支持向上翻页。
  4. less

    less 命令同样用于分页显示文件内容,但它比 more 更为强大和灵活。用户可以向前和向后翻页,使用 / 进行关键词搜索,以及使用 PgUp 和 PgDn 键控制翻页。less 命令支持向上和向下翻页。
  5. head

    head 命令用于输出文件的开头部分,默认显示文件的前10行。可以通过参数指定显示的行数。
  6. tail

    tail 命令用于输出文件的末尾部分,默认显示文件的最后10行。可以通过参数指定显示的行数,或者使用 -f 选项实时跟踪文件末尾的更新。

终止一个前台进程常用到的命令和操作是?
A.kill
B.ctrl+C
C.shut down
D.halt

答案解析:

终止一个前台进程用 ctrl+C;

终止一个后台进程:1、使用kill命令;2、使用fg命令将后台进程变为前台进程,然后 ctrl+C


若一台计算机的内存为128MB ,则交换分区的大小通常是
A.64MB
B.128MB
C.256MB
D.512MB

答案解析:

交换分区,就是windows中虚拟内存在linux中的叫法;其空间的分配的推荐做法是: 
目前Red Hat(红帽官方)推荐交换分区的大小应当与系统物理内存的大小保持线性比例关系。
在小于2GB物理内存的系统中,交换分区大小应该设置为内存大小的两倍;
如果内存大小多于2GB,交换分区大小应该是物理内存大小加上2GB;
原则上,由于交换分区读写速度比真正内存区慢的多,因此在实际应用中如果不是特别需要应该设置的越小越好。


关于linux文件系统权限中的SUID,描述正确的是()
A.当一个设置了SUID 位的可执行文件被执行时,无论谁来执行这个文件,他都暂时拥有文件所有者的权限
B.可以通过chmod u+s 命令设置SUID属性
C.passwd命令就是通过SUID机制,在任何用户修改密码时,有权限访问密码存储文件
D.其他选项均不正确

答案解析:

  1. SUID(Set User ID upon execution)

    • SUID 是一个特殊的权限位,当设置在可执行文件上时,允许执行该文件的用户暂时获得文件所有者的权限。这意味着如果一个文件被设置了 SUID 权限,任何用户执行该文件时都会以文件所有者的权限来运行。
    • 如果这个文件属于 root 用户并且设置了 SUID 权限,那么任何用户执行这个文件都会以 root 用户的权限运行,这可能会带来安全风险。
  2. 权限设定方法

    • 字母表示法
      • chmod u+s FILE...:给文件所有者添加 SUID 权限。
      • chmod u-s FILE...:从文件所有者权限中移除 SUID 权限。
    • 数字表示法chmod 4755 FILE:添加 SUID 权限到二进制程序文件。这里的 "4" 实际上是一个位掩码,它表示设置了 SUID 权限。数字权限位 "755" 表示文件所有者有读、写和执行权限,而组和其他用户只有读和执行权限。

在Linux系统下,你用vi编辑器对文本文件test.txt进行了修改,想保存对该文件所做的修改并正常退出vi编辑器,可以(   )。
A.在命令模式下执行ZZ命令
B.在命令模式下执行WQ命令
C.在末行模式下执行:q!
D.在末行模式下执行:wq

答案解析:Vi三种模式详解 - AngelLee2009 - 博客园


在Linux系统中,有关线程说法正确的是( )
A.线程是程序的多个顺序的流动态执行
B.线程有自己独立的地址空间
C.线程不能够独立执行,必须依存在应用程序中,由应用程序提供多个线程执行控制
D.线程是系统进行资源分配和调度的一个独立单位

答案解析:

进程是具有一定独立功能的程序关于某个数据集合上的一次运行活动,是操作系统进行资源分配和调度的一个独立单位;

线程是进程的一个实体,一个进程中包含多个线程。是CPU调度和分派的基本单位,是比进程更小的能独立运行的基本单位

进程有独立的地址空间,线程没有。线程是共享进程的地址空间,因此B错误

进程是 操作系统进行资源分配和调度的一个独立单位,而线程只是CPU调度和分派的基本单位,因此D错误

进程和线程的区别(超详细)-CSDN博客


在 dhcpd.conf 中用于向某个客户主机分配固定 IP 地址的参数是()
A.server-name
B.fixed-address
C.filename
D.hardware

答案解析:

server-name:通知DHCP客户服务器名称;
fixed-address:分配给客户端一个固定的地址;
filename:开始启动文件的名称,应用于无盘工作站;
hardware:指定网卡接口类型和MAC地址。


Linux进程中,应用可见的内存空间是一样的,是如何做到的?()
A.编译时区分
B.使用虚拟内存转换
C.运行时分配不一样的实际地址
D.都不是

答案解析:

在 Linux 系统中,每个进程都有自己独立的虚拟内存空间,这是通过虚拟内存管理技术实现的。虚拟内存技术允许每个进程拥有一个一致的、私有的地址空间,而实际上这些地址会被映射到物理内存或者磁盘上的交换空间。这种映射是由操作系统的内存管理单元(MMU)在运行时动态完成的,因此不同的进程看到的内存空间是隔离的,它们不会相互干扰。

以下是虚拟内存技术的几个关键点:

  1. 地址空间隔离:每个进程都有自己的虚拟地址空间,这个空间对其他进程是不可见的。

  2. 内存保护:由于每个进程的虚拟地址空间是独立的,一个进程不能直接访问另一个进程的内存空间,这提供了基本的内存保护。

  3. 动态内存分配:操作系统可以根据需要动态地为进程分配物理内存,而不需要在编译时或启动时就确定。

  4. 分页:虚拟内存通常通过分页机制实现,其中虚拟内存地址被映射到物理内存地址,这个过程对应用程序是透明的。

  5. 交换:如果物理内存不足,操作系统可以将不常用的页面交换到磁盘上,从而为当前活动的页面腾出空间。


命令 01 07 * * 5 /usr/bash /usr/local/run.sh 的执行时间是()
A.每周一 5:07 分
B.每周一 07:05 分
C.每周五 07:01 分
D.每周五 01:07 分

答案解析:分时日月周


linux编程中,以下哪个TCP的套接字选项与nagle算法的开启和关闭有关?
A.TCP_MAXSEG
B.TCP_NODELAY
C.TCP_SYNCNT
D.TCP_KEEPALIVE

答案解析:

TCP_SYNCNT的socket选项单独设置某一个TCP连接SYN重传次数;

SO_KEEPALIVE 保持连接检测对方主机是否崩溃,避免(服务器)永远阻塞于TCP连接的输入

TCP套接字选项

1)TCP_MAXSEG 该选项允许我们设置TCP连接的最大分节大小(MSS)

2)TCP_NODELAY 开启本选项将禁止TCP的Nagle算法

通用套接字选项

1)SO_BROADCAST 本选项开启或禁止进程发送广播消息的能力,只有数据报套接字支持广播,并且还必须是在支持广播消息的网络上

2)SO_DEBUG 本选项仅由TCP支持,当TCP开启该选项时,内核将为TCP在该套接字发送和接收的所有分组保留详细跟踪信息,这些信息保存在内核的某个环形缓冲区中,并可用trpt程序进行检查

3)SO_DONTROUTE 本选项规定外出的分组将绕过底层协议的正常路由机制,路由守护进程(routed和gated)经常使用本选项来绕过路由表

4)SO_ERROR 当一个套接字上发生错误时,源自Berkeley的内核中的协议模块将该套接字的明文so_error的变量设为标准的Unix_Exxx值中的一个,我们称它为该套接字的待处理错误,内核能够以下面两种方式之一立即通知该错误:

a)如果进程阻塞在对该套接字的select调用上,那么无论是检查可读条件还是可写条件,select均返回并设置其中一个或所有两个条件;

b)如果进程使用信号驱动式I/O模型,那就给进程或进程组产生一个SIGIO信号

5)SO_KEEPALIVE 设置后,如果2小时内无数据交换,TCP就会自动发送一个保活探测分节(keep-alive probe)

6)SO_LINGER 本选项指定close函数对面向连接协议如何操作,默认操作是close立即返回,但是如果有数据残留在套接字发送缓冲区中,系统将试着把这些数据发送给对端  

7)SO_RCVBUF和SO_SNDBUF 这两个套接字选项允许我们改变接收缓冲区和发送缓冲区默认大小

当设置接收缓冲区大小时,函数调用顺序很重要,这时因为TCP的窗口规模选项是在建立连接时使用SYN分节与对端互换得到的。对于客户,这意味着SO_RCVBUF选项必须在connect之前设置,对于服务器,这意味着该选项必须在调用listen之前给监控套接字设置,给已连接的套接字设置该选项对于可能存在的窗口规模没有任何影响。TCP套接字缓冲区大小至少应该是相应连接MSS的四倍,为避免潜在的缓冲区空间浪费,TCP套接字缓冲区大小还必须是相应连接的MSS值的偶数倍。

8)SO_REUSEADDR 该选项起到以下四个功用:

a)允许启动一个监听服务器并捆绑其众所周知端口,即使以前建立的将该端口用作他们的本地端口的连接仍然存在。这个条件通常是这样碰到的:

I)启动一个监听服务器;

II)连接请求到达,派生一个子进程来处理客户;

III)监听服务器终止,但子进程继续为现有连接上的客户提供服务;

IV)重启监听服务器;

b)允许同一端口上启动同一服务器的多个实例,只要每个实例捆绑一个不同的本地IP即可。

c)允许单个进程捆绑同一端口到多个套接字上,只有每次捆绑指定不同的本地IP地址即可。

d)允许完全重复的捆绑:当一个IP地址和端口已经绑定到某个套接字时,如果传输协议支持,同样的IP地址和端口还可以绑定到另外一个套接字。一般来说仅UDP套接字支持该特性。


如何查看当前Linux系统的状态,如CPU使用,内存使用,负载情况,下列描述正确的是?
A.可以使用top命令分析CPU使用,内存使用,负载等情况
B.可以使用free查看内存整体的使用情况
C.可以使用cat /proc/meminfo查看内存更详细的情况
D.以上描述都不正确

答案解析:

top命令:

Linux下常用的性能分析工具。能够实时显示系统中各个进程对资源的占用状况。

free命令:

可以显示Linux系统中空闲的、已用的物理内存及swap内存,及被内核使用的buffer。

df命令:

用于显示当前在Linux系统上的文件系统的磁盘使用情况的统计信息


❤️肝下25万字的《决战Linux到精通》笔记,你的Linux水平将从入门到入魔❤️【建议收藏】_linux笔记 小小明-CSDN博客


http://www.ppmy.cn/embedded/138635.html

相关文章

JSON.stringify的应用说明

前言 JSON.stringify() 方法将 JavaScript 对象转换为字符串,在日常开发中较常用,但JSON.stringify其实有三个参数,后两个参数,使用较少,今天来介绍一下后两个参数的使用场景和示例。 语法及参数说明 JSON.stringify()&#xf…

OceanBase 升级过程研究(4.2.1.6-4.2.1.8)

模拟业务 使用benchmark加载10仓数据模拟业务场景 升级方法 使用滚动升级方式来进行OB升级。该方法前提是OB集群必须满足官方规定的高可用架构(如果 Zone 个数小于 3,滚动升级时则无法构成多数派), 滚动升级的原理就是轮流完成每个ZONE的升级工作,由于…

关系型数据库和非关系型数据库详解

文章目录 关系型数据库和非关系型数据库详解一、引言二、关系型数据库1、关系型数据库简介1.1、SQL语言 2、关系型数据库的实际应用3、关系型数据库的优点4、关系型数据库的缺点 三、非关系型数据库1、非关系型数据库简介1.1、灵活性示例 2、非关系型数据库的分类3、非关系型数…

Android 删除设置的WLAN偏好选项菜单,即设置不可见

vendor/mediatek/proprietary/packages/apps/MtkSettings/src/com/android/settings/network/NetworkProviderSettings.java preference页面设置不可见 【出现在搜索框里面】【不可以注释network_provider_settings】 private void addPreferences() { addPreferences…

React Hooks在现代前端开发中的应用

💓 博客主页:瑕疵的CSDN主页 📝 Gitee主页:瑕疵的gitee主页 ⏩ 文章专栏:《热点资讯》 React Hooks在现代前端开发中的应用 React Hooks在现代前端开发中的应用 React Hooks在现代前端开发中的应用 引言 React Hooks …

iOS 18.1,未公开的新功能

童锦程祖师爷曾说过:“发誓可以,发朋友圈不行。”表面上看是渣男语录,实际上也说明了人们对隐私的看重。 在当今生活中,智能手机可能是最私密的电子产品,没有之一。不管是照片、联系人、短信、APP数据,甚至…

sentinel服务保护

一、整合sentinel 1、下载并启动sentinel 启动命令(默认是8080端口,因此修改端口号为8070) java -Dserver.port8070 -Dcsp.sentinel.dashboard.serverlocalhost:8070 -Dproject.namesentinel-dashboard -jar sentinel-dashboard-1.8.6.jar…

【C++】引用(reference)

引用是对一个变量或者对象取的别名 定义:真名的数据类型& 别名 真名; 既然是对一个变量或者对象取别名,那就得先有变量或对象,不能凭空取一个别名。也就是定义引用必须初始化。 对引用的操作和对引用对应的变量的操作是完全等价的引用…