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

目录

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

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

问题3:Linux下编译程序

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

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

问题6:Linux常用指令汇总

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

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

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

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

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

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

[问题13:du 和 df 的定义,以及区别?](#问题13:du 和 df 的定义,以及区别?)

[问题14:如何在 Linux 中创建和删除目录?](#问题14:如何在 Linux 中创建和删除目录?)

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

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

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

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

[问题19:你知道哪些基本的 Vim 命令?](#问题19:你知道哪些基本的 Vim 命令?)

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

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

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

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

[问题24:Linux 中的进程状态有哪些?](#问题24:Linux 中的进程状态有哪些?)

[问题25:如何在 Linux 中备份或归档文件(tar 命令)?](#问题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打开文件,手动输入我们的程序。

cpp 复制代码
#include <stdio.h>
int main()
{
    printf("Hello, Linux!\n");
    return 0;
}

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

cpp 复制代码
gcc test.c -o test

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

cpp 复制代码
./test

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

gcc基本格式

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

a.out

cpp 复制代码
gcc [options] file1 file2...

gcc常用指令

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

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

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

使用free命令

问题6:Linux常用指令汇总

|-----------|-----------------------------------------------------------------------|
| 命令 | 功能 |
| man | 帮助命令 |
| ls | 查看当前文件与目录信息 |
| cd | 用于切换当前目录 |
| pwd | 用于显示工作目录。 |
| mkdir | mkdir 命令用于创建文件夹。 |
| rm | 删除文件或文件夹命令 |
| rmdir | 从一个目录中删除一个或多个子目录项 |
| mv | 移动文件或文件夹命令 |
| cp | 复制命令 |
| cat | 查看文件内容;连接文件 |
| more | more 会以一页一页的显示文件内容 |
| less | less 与 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表示读写权限。具体命令如下:

bash 复制代码
chmod 764 file1
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 中创建和删除目录?

创建目录

cpp 复制代码
//使用 mkdir 命令
mkdir directory_name

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

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

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

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

cpp 复制代码
touch filename

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

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

cpp 复制代码
mv /data/files/file1.doc /data/files/file2.doc

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

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

cpp 复制代码
cp  /source/of/the/file  /destination/of/the/file

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

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

<Day_of_the_Month> <Month_of_the_Year> <Day_of_the_Week> <command/program to execute>

这些字段的值可以是具体的数字或者通配符。通过理解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"的文件,请运行以下命令:

cpp 复制代码
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 命令

cpp 复制代码
tar -cvf tarball_name.tar /path/to/directory

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

cpp 复制代码
tar -cvf sales.tar.gz  /data/reports/sales.txt

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

cpp 复制代码
tar -cvf repors.tar.gz  /data/reports/

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

查看进程

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

杀死进程

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

cpp 复制代码
kill 1932

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

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

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

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

cpp 复制代码
systemctl status service_name

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

cpp 复制代码
systemctl status postfix

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

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

cpp 复制代码
systemctl start <service_name>

要停止服务,请运行:

cpp 复制代码
systemctl stop <service_name>

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

cpp 复制代码
systemctl enable <service_name>

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

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

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

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

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

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

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

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

cpp 复制代码
chmod 664 filename

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

cpp 复制代码
chmod -R 664 directory_name

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

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

cpp 复制代码
chown user:user filename

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

cpp 复制代码
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博客

相关推荐
云和数据.ChenGuang6 分钟前
运维面试题.云计算面试题集锦
面试·运维面试题·云计算面试题·linux面试题
追风赶月、18 分钟前
【Linux】线程同步与互斥
linux
梦游钓鱼1 小时前
pyshark安装使用,ubuntu:20.04
linux·运维·ubuntu
火龙谷1 小时前
CentOS7将yum源更换为国内源教程
linux·centos
战族狼魂2 小时前
CentOS 上安装各种应用的命令行总结
linux·运维·centos
学Linux的语莫2 小时前
ansible变量
linux·运维·服务器·ansible
北京迅为2 小时前
【北京迅为】iTOP-4412全能版使用手册-第十二章 Linux系统编程简介
linux·嵌入式硬件·4412开发板
清源妙木真菌2 小时前
Linux:进程控制
linux
爱吃喵的鲤鱼2 小时前
Linux——文件系统清尾、动静态库
linux·运维·服务器
最数据3 小时前
Linux或者Docker中时区查询和修改(差8小时问题)
linux·运维·服务器·docker·.net