Linux面试题

1 什么是Linux
Linux是一套开源的的类Unix操作系统,能运行主要的Unix工具软件、应用程序和网络协议,继承了Unix以网络为核心的设计思想,是一个性能稳定的多用户、多任务、支持多线程和多CPU的操作系统

2 Unix和Linux有什么区别?

  • 开源性角度,Linux是一款开源操作系统,Unix使用需要付费授权使用。

  • 跨平台性角度,Linux操作系统具有良好的跨平台性能,可运行在多种硬件平台上;Unix操作系统跨平台性能较弱,大多需与硬件配套使用。

  • 可视化界面角度,Linux除了进行命令行操作,还有窗体管理系统;Unix只是命令行下的系统。

  • 硬件环境角度,Linux操作系统对硬件的要求较低,安装方法更易掌握;Unix对硬件要求比较苛刻,按照难度较大。

  • 用户群体角度,Linux的用户群体很广泛,个人和企业均可使用;Unix的用户群体比较窄,多是安全性要求高的大型企业使用,如银行、电信部门等

3 Linux内核
Linux内核是Linux操作系统的核心,Linux 系统的核心是内核。内核控制着计算机系统上的所有硬件和软件,在必要时分配硬件,并根据需要执行软件。一般包含五大部分:进程管理、存储管理、文件管理、设备管理和网络管理。

4 Linux的基本组件是什么?
内核,shell和GUI,系统实用程序和应用程序(这些都是操作系统共有的)。Linux比其他操作系统更具优势的免费和功能强大

5 Linux 的体系结构
从大的方面讲,Linux 体系结构可以分为两块:

  • 用户空间(User Space) :用户空间又包括用户的应用程序(User Applications)、C 库(C Library) 。
  • 内核空间(Kernel Space) :内核空间又包括系统调用接口(System Call Interface)、内核(Kernel)、平台架构相关的代码(Architecture-Dependent Kernel Code) 。

为什么 Linux 体系结构要分为用户空间和内核空间的原因?

  • 现代 CPU 实现了不同的工作模式,不同模式下 CPU 可以执行的指令和访问的寄存器不同。
  • Linux 从 CPU 的角度出发,为了保护内核的安全,把系统分成了两部分。户空间和内核空间是程序执行的两种不同的状态,我们可以通过两种方式完成用户空间到内核空间的转移:1)系统调用;2)硬件中断。

6 BASH和DOS之间的基本区别是什么?

  • BASH命令区分大小写,而DOS命令则不区分;
  • 在BASH下,/ character是目录分隔符,\作为转义字符。在DOS下正好相反,/用作命令参数分隔符,\是目录分隔符
  • DOS遵循命名文件中的约定,即8个字符的文件名后跟一个点,扩展名为3个字符。BASH没有遵循这样的惯例。

7 Linux 开机启动过程?

  • 主机加电自检,加载 BIOS 硬件信息。

  • 读取 MBR 的引导文件(GRUB、LILO)。

  • 引导 Linux 内核。

  • 运行第一个进程 init (进程号永远为 1 )。

  • 进入相应的运行级别。

  • 运行终端,输入用户名和密码。

8 Linux系统缺省的运行级别

0:关机;1:单用户;2:无网络的多用户模式;3命令行模式;4:未分配使用;5:GUI;6重启

运行级别的切换:init + 运行级别,例如 init 5是 换为图形界面。

查看运行级别:who -r 返回当前运行级别、切换时间、上一次的运行级别)

9 Linux 有哪些系统日志文件?
比较重要的是 /var/log/messages 日志文件。该日志文件是许多进程日志文件的汇总,从该文件可以看出任何入侵企图或成功的入侵。另外,如果胖友的系统里有 ELK 日志集中收集,它也会被收集进去。

10 什么是交换空间
交换空间是linux使用的临时的空间,用于存储一些临时保存的并发运行的程序。当ram内存没有足够空间来容纳运行中的程序是就会出现这种情况

11 root用户
即管理员用户,具有linux的最高操作权限,默认家目录是root,在root账户下可以执行创建或维护任意的用户,为它们分配权限,每次安装Linux时都是默认帐户。

12 什么是lilo?
是一个加载程序,将linux系统加载到内存中来运行linux

13 什么是CLI?
命令行界面command-line-interface:是在GUI得到普及之前使用最为广泛的用户界面,它通常不支持鼠标点击,用户通过键盘输入指令,计算机接收到指令后,予以执行。也有人称之为字符用户界面

什么是GUI?
图形用户界面(Graphical User Interface,简称 GUI,又称图形用户接口)以图形界面的方式显示计算机的操作页面,该模式允许用户与计算机进行交互,用户通过鼠标点击来完成程序启动,文件操作,命令选择等基本操作。

14 CLI vs GUI
当前主流是GUI,CLI的优势是占用系统资源少,运行速度快,但相应的用户体验较差,所以这一模式也是默认保留的,GUI用户体验好,但比起CLI更耗费系统资源。

15 简述linxu文件系统
Linux继承Unix的设计思想:一切接文件,磁盘,网络接口卡,普通文本文件,目录,设备…都可以看做是文件,即便是硬件也会被抽象成文件,这样的好处是用读写文件的方式实现对硬件的访问。Linux文件类型如下
Linux面试题_第1张图片
Linux 文件系统的结构层次鲜明,就像一棵倒立的树,最顶层是其根目录:
Linux面试题_第2张图片

  • /bin: 存放二进制可执行文件(ls,cat,mkdir等),常用命令一般都在这里;
  • /etc: 存放系统管理和配置文件;
  • /home: 存放所有用户文件的根目录,是用户主目录的基点,比如用户wzh的主目录就是/home/wzh,可以用~wzh表示;
  • /usr : 用于存放系统应用程序;
  • /opt: 额外安装的可选应用程序包所放置的位置。一般情况下,我们可以把tomcat等都安装到这里;
  • /proc: 虚拟文件系统目录,是系统内存的映射。可直接访问这个目录来获取系统信息;
  • /root: 超级用户(系统管理员)的主目录(特权阶级o);
  • /sbin: 存放二进制可执行文件,只有root才能访问。这里存放的是系统管理员使用的系统级别的管理命令和程序。如ifconfig等;
  • /dev: 用于存放设备文件;
  • /mnt: 系统管理员安装临时文件系统的安装点,系统提供这个目录是让用户临时挂载其他的文件系统;
  • /boot: 存放用于系统引导时使用的各种文件;
  • /lib : 存放着和系统运行相关的库文件 ;
  • /tmp: 用于存放各种临时文件,是公用的临时文件存储点;
  • /var: 用于存放运行时需要改变数据的文件,也是某些大文件的溢出区,比方说各种服务的日志文件(系统启动日志等。)等;
  • /lost+found: 这个目录平时是空的,系统非正常关机而留下“无家可归”的文件(windows下叫什么.chk)就在这里。

16 什么是 inode ?

  • 扇区Sector:文件储存在硬盘上,硬盘的最小存储单位叫做"扇区"。每个扇区储存0.5k
  • 操作系统读取硬盘的时候,不会一个个扇区地读取,这样效率太低,而是一次性连续读取多个扇区,即一次性读取一个"块",一个block大约是8个sector即4k;
  • 文件数据都储存在"块"中,那么很显然,我们还必须找到一个地方储存文件的元信息,比如文件的创建者、文件的创建日期、文件的大小等等。这种储存文件元信息的区域就叫做inode,中文译名为"索引节点"。每一个文件都有对应的inode,里面包含了与该文件有关的一些信息,如图
    Linux面试题_第3张图片

17 软连接 vs 硬链接

  • 硬链接:由于Linux系统下通过索引来标识文件,硬链接可以看出是指针,指向目标文件,系统并不为它重新分配 inode 。每添加一个一个硬链接,文件的链接数就加 1。缺点是只有超级用户才可以为目录创建硬链接,不可以在不同文件系统的文件间建立链接;优点是硬链接不会随着文件位置的变动而失效
  • 软链接:类似于Windows下的快捷方式,克服了硬链接的不足,没有任何文件系统的限制,任何用户可以创建指向目录的符号链接。因而现在更为广泛使用,它具有更大的灵活性,甚至可以跨越不同机器、不同网络对文件进行链接。缺点是文件位置的变动就会失效,因为它是通过内部存储的文件路径来引用文件的,此外它要系统分配额外的空间用于建立新的索引节点和保存原文件的路径

总结

  • 硬链接不可以跨分区,软件链可以跨分区。
  • 硬链接指向一个 inode 节点,而软链接则是创建一个新的 inode 节点。
  • 删除硬链接文件,不会删除原文件,删除软链接文件,会把原文件删除。

18 Linux 系统初始化环境后需要做一些什么安全工作

  • 使用root用户创建普通用户,随后使用普通用户登录,root一定要慎用
  • 服务器使用密钥登陆,禁止密码登陆。
  • 开启防火墙,关闭 SElinux ,根据业务需求设置相应的防火墙规则(暴露8080,3306,6379等端口)。
  • 安装安全软件

19 什么叫 CC 攻击?什么叫 DDOS 攻击?

  • CC 攻击,主要是用来攻击页面的,模拟多个用户不停的对你的页面进行访问,从而使你的系统资源消耗殆尽。
  • DDOS 攻击,中文名叫分布式拒绝服务攻击,指借助服务器技术将多个计算机联合起来作为攻击平台,来对一个或多个目标发动 DDOS 攻击。

20 如何选择 Linux 操作系统版本?
一般来讲,桌面用户首选 Ubuntu ;服务器首选 RHEL 或 CentOS ,两者中首选 CentOS 。时下最流行的是centos系列

21 有哪些方面的因素会导致网站网站访问慢?

  • 服务器带宽太小
  • 网站代码没有优化好
  • 网站数据库瓶颈
  • 请求负载过大

如何排查

  • 首先确定问题发生在客户端还是服务器端
  • 登录阿里云查看服务器配置,资源使用率,带宽大小判断是否是服务器硬件性能不足的问题
  • 分析mysql日志,排除mysql问题
  • 浏览器端调试,排查服务器代码问题

22 常用的服务类命令
攻击,即是通过大量合法的请求占用大量网络资源,以达到瘫痪网络的目的。
常用的服务类命令centos6是service,centos7是systemctl

systemctl 服务名 start #启动服务
systemctl服务名 stop #停止服务
systemctl 服务名 restart #重启服务
systemctl 服务名 reload #重新加载服务
systemctl 服务名 status #查看服务状态
systemctl 服务名 start #启动服务

例如:systemctl start firewalld 开启防火墙

Linux运行级别概念

Linux面试题_第4张图片

systemctl list-unit-files | grep firewalld

虚拟机的网络连接三种形式说明

  • 主机模式:完全与外界隔离,只能与主机所在系统通信
  • 桥接模式:可以与外界双向通信,而且虚拟机和主机使用的都是同一网段的ip,容易造成ip地址冲突
  • NAT:可以与外界单向通信,只能发送不能接收,而且虚拟机有自己单独的ip,不会占用内网ip,不会引发ip地址冲突

23 cat命令
主要有三种用法

cat filename #查看文件
cat>filename #创建文件
cat file1 fiel2 > file3 #追加文件到目标文件中其中:-b 对非空输出行号,-n 输出所有行号

案例
(1)把 log2012.log 的文件内容加上行号后输入 log2013.log 这个文件里

cat -n log2012.log log2013.log 

(2)把 log2012.log 和 log2013.log 的文件内容加上行号(空白行不加)之后将内容附加到 log2014.log 里

cat -b log2012.log log2013.log  log2014.log 

24 chmod命令
Linux用户组权限分为所有者,所在组,不同组三类,所以每一文件或目录的访问权限都有三组,每组用三位表示,分别表示文件中三类用户所具有的权限,利用 chmod 可以控制文件如何被他人所调用

以文件 log2012.log 为例:第一列一个有十个位置

 ls -l log2012.log
 
-rw-r--r-- 1 root root 296K 11-13 06:03 log2012.log

第一个位置上代表文件类型,有

-  普通文件
c:  设备文件,如键盘,鼠标
d: 目录
l:  链接文件
b:块设备

第2-4位用于确定文件所有者的权限,5-7位表示文件所在组的权限,8-10位表示文件其它组的权限

r:作用于普通文件表示可读取(cat命令)该文件内容,作用于目录文件表示可以通过ls -l进行详细查看目录详情,用4来表示

w:作用于普通文意味着可以读和修改这个文件,但不一定有删除该文件和重命名的权限,只有对文件上一级目录有w权
限才有该文件的删除和重命名权限,w作用与目录可以对该目录下的文件新建,删除,重命名...,用2来表示

x:代表文件可执行,作用于目录代表该目录可以进入,用1表示

扩展:数字表示权限:rwx代表7,表示具有该文件全部的权限;r--代表只读,用4表示,-w-代表只写,用2表示

实例:

chmod常用参数如下
-c 当发生改变时,报告处理信息
-R 处理指定目录以及其子目录下所有文件


chmod权限范围如下
u :目录或者文件的当前的用户
g :目录或者文件的当前的群组
o :除了目录或者文件的当前用户或群组之外的用户或者群组
a :所有的用户及群组

chmod权限代号
r :读权限,用数字4表示
w :写权限,用数字2表示
x :执行权限,用数字1表示
- :删除权限,用数字0表示
s :特殊权限

(1)增加文件 t.log 所有用户可执行权限

chmod a+x t.log

(2)撤销原来所有的权限,然后使拥有者具有可读权限,并输出处理信息

chmod u=r t.log -c

(3)给 file 的属主分配读、写、执行(7)的权限,给file的所在组分配读、执行(5)的权限,给其他用户分配执行(1)的权限

chmod 751 t.log -c(chmod u=rwx,g=r-x,o=--x t.log -c)

(4)将 test 目录及其子目录所有文件添加可读权限

chmod u+r,g+r,o+r -R test/ -c

25 chown
chown 将指定文件的拥有者改为指定的用户或组,用户可以是用户名或者用户 ID;组可以是组名或者组 ID;文件是以空格分开的要改变权限的文件列表,支持通配符。

(1)改变拥有者和群组 并显示改变信息

chown user:group t.log -c

(2)改变文件群组

chown -c :group t.log -c

(3)改变文件夹test及子文件目录属主及属组为 mail

chown -c :mail:mail test/ -cR

26 cp 命令
作用是将一个或多个源文件复制到目标目录下

-i  如果目标文件已经存在会提示是否覆盖,不使用就没有提示
-r 复制目录及目录内所有项目
-a 复制的文件与原文件时间一样

实例:

(1)复制 a.txt 到 test 目录下,保持原文件时间,如果原文件存在提示是否覆盖。

cp -ai a.txt test

(2)为 a.txt 建议一个链接(快捷方式)

cp -s a.txt link_a.txt

27 find 命令
用于在文件树中查找文件,并作出相应的处理。

命令格式
find pathname -options [-print -exec -ok ...]

#命令参数
pathname: find命令所查找的目录路径。例如用.来表示当前目录,用/来表示系统根目录。
-print: find命令将匹配的文件输出到标准输出。
-exec: find命令对匹配的文件执行该参数所给出的shell命令。相应命令的形式为'command' {  } \;,注意{   }和\;之间的空格。
-ok: 和-exec的作用相同,只不过以一种更为安全的模式来执行该参数所给出的shell命令,在执行每一个命令之前,都会给出提示,让用户来确定是否执行。


#命令选项
-name 按照文件名查找文件
-perm 按文件权限查找文件
-user 按文件属主查找文件
-group  按照文件所属的组来查找文件。
-type  查找某一类型的文件,诸如:
   b - 块设备文件
   d - 目录
   c - 字符设备文件
   l - 符号链接文件
   p - 管道文件
   f - 普通文件

实例:

(1)查找 48 小时内修改过的文件

find -atime 2

(2)在当前目录查找 以 .log 结尾的文件。

find ./ -name '*.log'

(3)查找 /opt 目录下 权限为 777 的文件

find /opt -perm 777

(4)查找大于 1K 的文件

find -size +1000c

28 head 命令
head 用来显示档案的开头至标准输出中,默认 head 命令打印其相应文件的开头 10 行。

-n<行数> 显示的行数(行数为负数表示从最后向前数)

head 1.log -n 20 #显示1.log前20行

head -c 20 1.log #显示1.log前20字节

head -n -10 1.log #显示1.log后10行

29 less 命令
less 与 more 类似,但使用 less 可以随意浏览文件,而 more 仅能向前移动,却不能向后移动,而且 less 在查看之前不会加载整个文件。

ps -aux | less -N
less 1.log 2.log

30 ln 命令
功能是为文件在另外一个位置建立一个同步的链接,当在不同目录需要该问题时,就不需要为每一个目录创建同样的文件,通过 ln 创建的链接(link)减少磁盘占用量。链接分为软件链接及硬链接

软链接:

  • 1.软链接,以路径的形式存在。类似于Windows操作系统中的快捷方式
  • 2.软链接可以 跨文件系统 ,硬链接不可以
  • 3.软链接可以对一个不存在的文件名进行链接
  • 4.软链接可以对目录进行链接

硬链接:

  • 1.硬链接,以文件副本的形式存在。但不占用实际空间。
  • 2.不允许给目录创建硬链接
  • 3.硬链接只有在同一个文件系统中才能创建

link操作注意点

  • 第一:ln命令会保持每一处链接文件的同步性,也就是说,不论你改动了哪一处,其它的文件都会发生相同的变化;
  • 第二:ln的链接又分软链接和硬链接两种
ln -s 源文件名称 软链接文件名称 #创建软连接,它只会在你选定的位置上生成一个文件的镜像,不会占用磁盘空间

ln 源文件名称 硬链接文件名称  #创建硬链接,它会在你选定的位置上生成一个和源文件大小相同的文件,无论是软
链接还是硬链接,文件都保持同步变化。

参数列表

-b 删除,覆盖以前建立的链接
-s 软链接(符号链接)
-v 显示详细处理过程

ln -sv source.log link.log #给文件source.log创建软连接

ln -v source.log link1.log #给文件source.log创建硬连接

ln -sv /opt/soft/test/test3 /opt/soft/test/test5

wget命令:wget命令用来从指定的URL下载文件

tar:解压缩命令,也可以是unzip

  • -z : 使用 gzip 来压缩和解压文件
  • -v : --verbose 详细的列出处理的文件
  • -c: --create 创建一个新的归档(压缩包)
  • -x : 从压缩包中解出文件
# 压缩文件 file1 和目录 dir2 到 test.tar.gz
tar -zcvf test.tar.gz file1 dir2
# 解压 test.tar.gz(将 c 换成 x 即可)
tar -zxvf test.tar.gz
# 列出压缩文件的内容
tar -ztvf test.tar.gz 

rar:压缩文件命令

  • -a:添加到压缩文件
  • -r:递归压缩
  • -x:以绝对路径的形式压缩
# 压缩文件
rar a -r test.rar file
# 解压文件
unrar x test.rar

你可能感兴趣的:(Linux面试题)