• SLAM面试笔记(7) — Linux面试题


    目录

    问题1:Linux系统基本组件?

    问题2:Linux和Unix有什么区别?

    问题3:Linux下编译程序

    问题4:gcc基本格式和常用指令

    问题5:用什么命令查找内存和交换使用情况?

    问题6:Linux常用指令汇总

    问题7:软链接和硬链接的区别?

    问题8:解释Linux中的文件权限?

    问题9:绝对路径用什么符号表示?当前目录、上层目录用什么表示?主目录用什么表示? 切换目录用什么命令?

    问题10:怎么清屏?怎么退出当前命令?怎么执行睡眠?怎么查看当前用户 id?查看指定帮助用什么命令?

    问题11:Linux 下命令有哪几种可使用的通配符?分别代表什么含义?

    问题12:Linux 中进程有哪几种状态?在 ps 显示出来的信息中,分别用什么符号表示的?

    问题13:du 和 df 的定义,以及区别?

    问题14:如何在 Linux 中创建和删除目录?

    问题15:如何在Linux中创建文件?

    问题16:如何在Linux中重命名文件和目录?:

    问题17:如何在Linux中复制文件和目录?

    问题18:如何在 Linux 中调度任务?什么是 crontab 并解释 crontab 中的字段?

    问题19:你知道哪些基本的 Vim 命令?

    问题20:如何将二进制文件添加到 $PATH 变量中?

    问题21:解释Grep命令和正则表达式?

    问题22:umask和ulimit有什么区别?

    问题23:解释Linux中top命令的输出?

    问题24:Linux 中的进程状态有哪些?

    问题25:如何在 Linux 中备份或归档文件(tar 命令)?

    问题26:如何停止Linux中正在运行的进程?

    问题27:如何在linux中搜索文件?:

    问题28:如何检查某项服务是否在运行?

    问题29:如何启动服务、停止服务、重启时启动服务?

    问题30:如何远程登录另一台linux电脑?

    问题31:如何查看磁盘使用情况?

    问题32:如何设置Linux文件/目录权限?

    问题33:如何设置文件/目录的所有权?:

    问题34:如何在Linux中创建用户和组?

    问题35:如何在Linux中查找内核/操作系统版本?

    问题36:如何查找接口IP地址?

    问题37:基于名称的虚拟主机和基于IP的虚拟主机有什么区别?

    问题38:网络绑定有什么优势?

    参考文章


    问题1:Linux系统基本组件?

    Linux 由 4 个基本组件构成:

    Kernel:这是Linux系统的核心。它负责与硬件组件交互并确保操作系统与硬件设备进行通信。

    Shell: Shell 是 Linux 用户和内核之间的接口。在 shell 中,命令由用户发出,然后由操作系统执行。

    系统库:这些是特殊程序或函数,它们负责实现操作系统的大部分功能,而不依赖于内核模块的代码访问权限。

    系统实用程序:这些是执行某些任务的特定程序。例如 LibreOffice、Brasero、Gparted。

    问题2:Linux和Unix有什么区别?

    Linux和Unix是两个不同的操作系统,但它们有一些共同之处。Unix是最早的商业操作系统之一,而Linux是基于Unix的开源操作系统。两者都使用类似的命令行接口和文件系统结构。UNIX主要用于高端服务器、实验室等,而Linux则被用于更贴近生活的台式机、笔记本等。

    问题3:Linux下编译程序

    (1)我们首先进入Linux系统中的一个文件夹下,输入命令:touch text.c 创建一个C文件:

    (2)然后用gedit打开文件,手动输入我们的程序。

    1. #include
    2. int main()
    3. {
    4. printf("Hello, Linux!\n");
    5. return 0;
    6. }

    (3)然后我们在终端输入:

    gcc test.c -o test

    (4)这时候我们看到经过编译、链接后,我们得到了可执行文件。然后我们执行:

    ./test

    问题4:gcc基本格式和常用指令

    gcc基本格式

    若不加入参数,则按默认参数依次执行编译、汇编和链接操作,生成的可执行文件名为
    a.out

    gcc [options] file1 file2...

    gcc常用指令

    • c:只编译源文件,生成目标文件(.o 文件),不进行链接。
    • o :指定输出文件的名称。
    • g:生成调试信息,用于调试程序。
    • Wall:打开所有警告提示。
    • E:只进行预处理,输出预处理结果。
    • S:只进行编译,生成汇编代码。
    • shared:生成共享库(动态链接库)。
    • static:生成静态可执行文件,使用静态链接。

    除了上述常用选项之外,gcc 还提供了许多其他选项和参数,用于特定的编译和链接需求。你可以通过运行 gcc --help 命令或查阅 gcc 的官方文档来获取完整的选项和参数列表。

    问题5:用什么命令查找内存和交换使用情况?

    使用free命令

    问题6:Linux常用指令汇总

    命令功能
    man帮助命令
    ls查看当前文件与目录信息
    cd用于切换当前目录
    pwd用于显示工作目录。
    mkdirmkdir 命令用于创建文件夹。
    rm删除文件或文件夹命令
    rmdir从一个目录中删除一个或多个子目录项
    mv移动文件或文件夹命令
    cp复制命令
    cat查看文件内容;连接文件
    moremore 会以一页一页的显示文件内容
    lessless 与 more 类似,但使用 less 可以随意浏览文件
    grep该命令常用于分析一行的信息,若当中有我们所需要的信息,就将该行显示出来,该命
    令通常与管道命令一起使用,用于对一些命令的输出进行筛选加工。
    ps查看进程情况
    top可以查看操作系统的信息,如进程、CPU占用率、内存信息等
    kill向进程发送终止信号

    问题7:软链接和硬链接的区别?

    软链接和硬链接是在计算机文件系统中使用的两种不同的链接方式。

    两者区别:

    • 软链接:是一个指向文件或目录的引用,类似于一个快捷方式,它可以跨越不同的文件系统,并且可以指向不存在的文件或目录,软链接可以在文件或目录被删除时保留。
    • 硬链接:是一个文件或目录的实际副本,它与原始文件或目录具有相同的索引节点,并且只能在同一文件系统内使用,硬链接则会在原始文件或目录被删除时失效。

    命令的实现:

    • ​ 硬链接:ln
    • ​ 软链接:ln -s

    问题8:解释Linux中的文件权限?

    Linux文件的权限

    在 Linux 中,有 3 种主要类型的文件权限:读、写和执行。这些权限可以递归地分配给文件或目录。作为一个多用户系统,您可以将这些权限分配给 root 用户、组,甚至是使用该系统的其他用户。

    • Read:读取权限授予使用打开和读取文件的能力。
    • Write:写入权限允许用户打开和修改或编辑文件的内容并保存更改。
    • Execute:这允许用户执行或运行可执行的文件或程序或 shell 脚本。

    linux查看文件权限

    在linux命令行中,输入:ls -la, 可以查看当前目录下面所有文件的权限

    修改文件权限

    可以通过命令chmod修改文件的权限,为了方便,权限用数字表示,分别用数字4、2、1表示读、写、可执行权限。并且可以进行组合,比如4 + 2 + 1 = 7,那么7表示读、写、可执行权限,4 + 2= 6表示读写权限。具体命令如下:

    1. chmod 764 file1
    2. chmod 777 -R dir

    命令中一共有三个数字,分别对应拥有者、用户组其它用户、其它用户的权限。

    764表示拥有者的权限为7(4 + 2 + 1,读写可执行),用户组其它用户权限为6(4+2,读写),其它用户权限为4(可读)。

    如果是要修改一个文件夹的权限,需要加上-R,表示递归修改文件夹下面所有文件的权限。
     

    问题9:绝对路径用什么符号表示?当前目录、上层目录用什么表示?主目录用什么表示? 切换目录用什么命令?

    绝对路径:如/etc/init.d

    当前目录:./

    上层目录: …/

    主目录:~/

    切换目录:cd

    问题10:怎么清屏?怎么退出当前命令?怎么执行睡眠?怎么查看当前用户 id?查看指定帮助用什么命令?

    清屏:clear

    退出当前命令:ctrl+c 彻底退出

    执行睡眠 :ctrl+z 挂起当前进程 fg 恢复后台

    查看当前用户 id:”id“:查看显示目前登陆账户的 uid 和gid及所属分组及用户名

    查看指定帮助:如 man adduser 这个很全 而且有例子;adduser --help 这个告诉你一些常用参数;info adduesr;

    问题11:Linux 下命令有哪几种可使用的通配符?分别代表什么含义?

    “?”可替代单个字符。

    “*”可替代任意多个字符。

    方括号“[charset]”可替代charset集中的任何单个字符,如[a-z],[abABC]

    问题12:Linux 中进程有哪几种状态?在 ps 显示出来的信息中,分别用什么符号表示的?

    • 不可中断状态:进程处于睡眠状态,但是此刻进程是不可中断的。不可中断,指进程不响应异步信号。D:不可中断 Uninterruptible(usually IO)
    • 暂停状态/跟踪状态:向进程发送一个 SIGSTOP 信号,它就会因响应该信号 而进入 TASK_STOPPED 状态;当进程正在被跟踪时,它处于 TASK_TRACED 这个特殊的状态。正被跟踪”指的是进程暂停下来,等待跟踪它的进程对它进行操作。T:停止或被追踪
    • 就绪状态:在 run_queue 队列里的状态。W:进入内存交换(从内核 2.6 开始无效)
    • 运行状态:在run_queue队列里的状态。R:正在运行,或在队列中的进程
    • 可中断睡眠状态:处于这个状态的进程因为等待某某事件的发生(比如等待socket 连接、等待信号量),而被挂起。S:处于休眠状态
    • zombie 状态(僵尸):父亲没有通过 wait 系列的系统调用会顺便将子进程的尸体(task_struct)也释放掉。Z:僵尸进程
    • 退出状态。X:死掉的进程

    问题13:du 和 df 的定义,以及区别?

    du 显示目录或文件的大小

    df 显示每个<文件>所在的文件系统的信息,默认是显示所有文件系统。(文件系统分配其中的一些磁盘块用来记录它自身的一些数据,如 i 节点,磁盘分布图,间接块,超级块等。这些数据对大多数用户级的程序来说是不可见的,通常称为 Meta Data。) du 命令是用户级的程序,它不考虑 Meta Data,而 df命令则查看文件系统的磁盘分配图并考虑 Meta Data。

    df 命令获得真正的文件系统数据,而 du 命令只查看文件系统的部分情况。
     

    问题14:如何在 Linux 中创建和删除目录?

    创建目录

    1. //使用 mkdir 命令
    2. mkdir directory_name

    删除目录:Linux中删除目录的方法有多种。

    • 使用命令"rm -r"可以删除一个目录及其所有子目录和文件。
    • 使用命令"rmdir"可以删除一个空目录。删除目录时需要谨慎,以免误删重要文件。

    问题15:如何在Linux中创建文件?

    要创建文件,请使用 touch 命令。例如要创建一个文件 filename运行命令:

    touch filename

    问题16:如何在Linux中重命名文件和目录?:

    使用 mv 命令重命名文件。请注意,要使其正常工作,要重命名的文件的路径必须相同。例如,要将/data/files目录中的文件 file1.doc 重命名为 file2.doc,请执行以下命令:

    mv /data/files/file1.doc /data/files/file2.doc

    问题17:如何在Linux中复制文件和目录?

    在 Linux 中使用 cp 命令复制文件

    cp  /source/of/the/file  /destination/of/the/file

    问题18:如何在 Linux 中调度任务?什么是 crontab 并解释 crontab 中的字段?

    Crontab是Linux中用于调度任务的工具,它通过指定时间和命令来执行任务。在crontab中有五个字段,分别表示分钟、小时、日期、月份和星期几。

    这些字段的值可以是具体的数字或者通配符。通过理解crontab的字段,可以在Linux中有效地调度任务。

    问题19:你知道哪些基本的 Vim 命令?

    保存:要保存文件,请按ESC按钮并按 :wq! OR :ZZ

    退出:要退出文件而不进行更改,请运行命令:q

    转到文件中的特定行:

    • 按ESC再按j向下移动一行。
    • k按键盘上移一行
    • 将光标移动到行首 按^
    • 将光标移动到行尾 按$
    • 将光标移动到文件的开头1G
    • 将光标移动到文件末尾G
    • 将光标移动到文件中行号“n”的开头nG

    复制文本:将光标移动到字符串或文本的开头。接下来按键盘上的 v 并向前按光标以突出显示文本。到达要复制的文本的末尾后,请按yyank 的缩写来复制文本。

    • 要将文本从当前位置复制到行尾 -y$
    • 复制整行 -yy
    • 要复制下面的 4 行 -4yy

    粘贴文本:要粘贴文本,只需按p键盘上的

    删除文本:

    • 要删除一行,请移至一行的开头。按下ESC按钮并按下dd
    • 要删除单个单词,请将光标放在单词前面并点击dw
    • 删除从当前单词到行尾的文本d$
    • 要删除下面运行的 3 行3dd

    问题20:如何将二进制文件添加到 $PATH 变量中?

    $ export PATH=$PATH:/path/to/the/binary/file

    问题21:解释Grep命令和正则表达式?

    Grep 命令是用于过滤结果或输出的表达式。例如,要列出一个目录并仅搜索带有单词“cron”的文件,请运行以下命令:

    ls | grep cron

    问题22:umask和ulimit有什么区别?

    Umask代表“用户文件创建掩码”,它确定掩码的设置,该掩码控制在创建文件和目录时为文件和目录设置哪些文件权限。虽然 ulimit 是一个 linux 内置命令,它提供对 shell 可用资源和/或由它启动的进程的控制。

    您可以通过编辑 /etc/security/limits.conf 将用户限制在特定范围内,同时可以在 /etc/sysctl.conf 中更新系统范围的设置

    问题23:解释Linux中top命令的输出?

    top 命令是一个监控实用程序,可让用户深入了解系统指标,例如正常运行时间、平均负载、%CPU 和 % 内存利用率。

    问题24:Linux 中的进程状态有哪些?

    进程状态,顾名思义,是指Linux进程所处的当前状态。进程状态有4种,分别是Running、Waiting、stopped和Zombie。

    问题25:如何在 Linux 中备份或归档文件(tar 命令)?

    要备份目录,只需运行下面的 tar 命令

    tar -cvf tarball_name.tar /path/to/directory

    例如,要在 /data/reports/ 路径中创建文件 sales.txt 的 tar.gz 格式的存档,请执行:

    tar -cvf sales.tar.gz  /data/reports/sales.txt

    您还可以归档整个目录,如下所示:

    tar -cvf repors.tar.gz  /data/reports/

    问题26:如何停止Linux中正在运行的进程?

    查看进程

    显示现行终端机下的所有程序,包括其他用户的程序。

    杀死进程

    要停止正在运行的进程,请使用 kill 命令,后跟进程的 PID。例如,要停止 PID 为 3836 的进程,请运行命令

    kill 1932

    问题27:如何在linux中搜索文件?:

    要在 Linux 中搜索文件,请使用locate or find命令,find和locate搜索文件有如下的区别:

    问题28:如何检查某项服务是否在运行?

    要检查服务是否正在运行,请使用以下语法:

    systemctl status service_name

    例如,要检查 Postfix 是否正在运行,请运行以下命令:

    systemctl status postfix

    问题29:如何启动服务、停止服务、重启时启动服务?

    要在 systemd 系统中启动服务,请运行以下命令:

    systemctl start 

    要停止服务,请运行:

    systemctl stop 

    要在重新启动运行时启动服务,请使用以下语法:

    systemctl enable 

    问题30:如何远程登录另一台linux电脑?

    您可以使用 SSH 协议或使用 VNC 服务登录到远程 Linux 计算机。

    问题31:如何查看磁盘使用情况?

    使用该df命令检查硬盘驱动器上使用的空间和剩余空间/可用空间。


    此外,使用该du命令检查特定文件和目录的使用情况。

    问题32:如何设置Linux文件/目录权限?

    要设置文件权限,请使用chmod命令后跟八进制值或符号值,然后是文件名或目录名。

    例如分配一个文件权限值为 664 运行

    chmod 664 filename

    要分配目录权限,请使用-R递归分配权限的选项。

    chmod -R 664 directory_name

    问题33:如何设置文件/目录的所有权?:

    要设置文件所有者,请使用该chown命令。例

    chown user:user filename

    对于目录,使用-R递归分配权限的选项。例如

    chown -R user:user directory_name

    问题34:如何在Linux中创建用户和组?

    要创建用户,请运行命令adduser user_name

    问题35:如何在Linux中查找内核/操作系统版本?

    运行命令uname -a

    问题36:如何查找接口IP地址?

    ifconfig命令:在终端输入ifconfig命令,它会显示当前系统中所有网络接口的配置信息,包括IP地址、子网掩码和网关等。

    ip命令:在终端输入ip addr命令,它会列出当前系统中所有网络接口的详细信息,包括IP地址、子网掩码和网关等。

    nmcli命令:在终端输入nmcli device show命令,它会显示网络管理器中所有网络设备的信息,包括IP地址、子网掩码和网关等。

    问题37:基于名称的虚拟主机和基于IP的虚拟主机有什么区别?

    虚拟主机用于在单个 apache 实例上托管多个域。您可以为服务器拥有的每个 IP 设置一个虚拟主机,或者相同的 IP 但不同的端口,或者相同的 IP、相同的端口但不同的主机名。后者称为“基于名称的虚拟主机”。

    在基于 IP 的虚拟主机上,我们可以在同一台服务器机器上运行多个网站,但每个网站都有自己的 IP 地址,而在基于名称的虚拟主机中,我们在同一个 IP 地址上托管多个网站。但要成功,您必须在 DNS 数据库中为您的 IP 地址放置多个 DNS 记录。

    问题38:网络绑定有什么优势?

    Network Bonding是一个 Linux 内核功能,允许将多个网络接口聚合到单个虚拟链接中。这是在生产系统中实现冗余链路、容错或负载平衡网络的好方法。如果其中一个物理 NIC 关闭或拔出,它会自动将流量转移到另一个 NIC 卡。类似地,绑定将增加接口吞吐量以处理在主动-主动模式下配置的流量。

    参考文章

    (1) 面试必备,Linux面试题和答案!_linux面试题及答案-CSDN博客

    (2) gcc命令语句大全-CSDN博客

    (3) 48 个 Linux 面试问题和答案_linux面试题_太极淘的博客-CSDN博客

  • 相关阅读:
    排序——手撕快排
    GBASE 8A v953报错集锦43--使用 gcdump 指定参数 ignore-table 不导出指定的 表或视图
    太赞了,使用应用魔方 AppCube,我没有写一行代码就开发出了一款投票微信小程序
    【C++】STL详解(七)—— stack和queue的使用及模拟实现
    天池2023智能驾驶汽车虚拟仿真视频数据理解--baseline
    systemverilog学习 ---- 类(完结)
    面前是惊涛骇浪:对当下的经济困境,货币政策和大类资产的看法
    Shiro-SpringBoot (二)
    Android UI自动化测试框架—SoloPi简介
    mysql8-索引的使用规则验证
  • 原文地址:https://blog.csdn.net/qq_41921826/article/details/133518698