【Linux面试题】全网汇总总结:Linux基础、常用命令、shell脚本、常见笔试题

1、Linux基础知识

参考链接:

https://blog.csdn.net/shantf93/article/details/79775702?utm_medium=distribute.pc_relevant.none-task-blog-2~default~baidujs_baidulandingword~default-0.topblog&spm=1001.2101.3001.4242.1&utm_relevant_index=3
https://www.jianshu.com/p/caec9f93cb21
https://blog.csdn.net/Rong_Toa/article/details/109693945
https://www.linuxprobe.com/linux-mianshi.html
https://www.cnblogs.com/legenidongma/p/10858479.html
https://zhuanlan.zhihu.com/p/32250942?ivk_sa=1024320u
https://blog.csdn.net/yy339452689/article/details/105866058
https://blog.csdn.net/a303549861/article/details/93754526
https://www.cnblogs.com/jfzhu/p/12890986.html
https://blog.csdn.net/Hsuesh/article/details/109103579
https://www.iteye.com/blog/176170847-684401
https://cloud.tencent.com/developer/article/1379759
https://linux.cn/article-3532-1.html
https://blog.csdn.net/melody157398/article/details/109019814
https://cloud.tencent.com/developer/article/1114481
https://www.jianshu.com/p/dde6a01c4094

linux与unix区别

Linux和Unix都是功能强大的操作系统
Linux是类Unix操作系统,开源免费

linux基本组件、体系结构、内核态和用户态原理、内核功能和子系统、进程相关

基本组件:用户应用程序、GUI图形界面、shell命令解释层、内核
shell:提供了用户与内核进行交互操作的一种接口
Linux 系统的核心是内核。内核控制着计算机系统上的所有硬件和软件

体系结构:硬件 -> 内核空间 -> 用户空间
在硬件之上,内核空间中的代码控制了硬件资源的使用权,用户空间中的代码只有通过内核暴露的系统调用接口(System Call Interface)才能使用到系统中的硬件资源。

为了保证内核的安全,现在的操作系统一般都强制用户进程不能直接操作内核,防止cpu危险指令导致系统崩溃。内核只允许操作系统及其相关模块,系统调用接口来使用

什么是内核态、用户态:
「当进程运行在内核空间时就处于内核态,而进程运行在用户空间时则处于用户态。」
在内核态下,进程运行在内核地址空间中,此时 CPU 可以执行任何指令。
在用户态下,进程运行在用户地址空间中,被执行的代码要受到 CPU 的诸多检查。
如何从用户空间进入内核空间:
有三种方式:系统调用、软中断(调度程序)和硬件中断(中断程序)


在这里插入图片描述

Linux内核主要负责哪些功能

系统内存管理
软件程序(进程)管理
硬件设备(I/o)管理
文件系统管理


内核包括的子系统:
Linux内核主要由五个子系统组成:进程调度,内存管理,虚拟文件系统,I/o管理系统(网络接口),进程间通信、
下列不是Linux系统进程类型的是 D .
A 交互进程 B 批处理进程 C 守护进程 D 就绪进程(进程状态)

进程在运行队列中有三种状态: C .
C 运行态、就绪态和等待态 

linux进程的所有状态:
R工作中的进程
S可中断的睡眠状态
I空闲状态(idle)
O进程正在处理器运行
B进程正在等待更多的内存页
D不可中断的睡眠状态
T暂停状态或跟踪状态
X出状态,进程即将被销毁
Z僵尸进程


Linux操作系统包括三种不同类型的进程,每种进程都有自己的特点和属性。
  1.  交互进程是由一个Shell启动的进程。交互进程既可以在前台运行,也可以在后台运行。
  2.  批处理进程和终端没有联系,是一个进程序列。
  3.  监控进程(也称系统守护进程)是Linux系统启动时运行的进程,并常驻后台。例如,httpd是著名的Apache服务器的监控进程。

 
init是是一个由内核启动的用户级进程。
内核自行启动(已经被载入内存,开始运行,并已初始化所有的设备驱动程序和数据结构等)之后,就通过启动一个用户级程序init的方式,完成引导进程。
所以,init始终是第一个进程(其进程编号始终为1)。 其它所有进程都是init进程的子孙。init进程是不可杀的(即不能通过kill 命令杀掉进程)

Linux 开机启动过程?运行级别?linux忘记root密码怎么办

  1.加电自检
  POST(Power On Self Test)(加电自检)–>
  
  2.cpu加载bios信息读取mbr中加载引导程序Boot  Loader(找到内核)
  CPU加载位于CMOS的BIOS硬件信息(Basic  Input/Outpu System)–>
  确定启动设备(Boot sequence)读取扇区的MBR(主引导目录)引导文件、
  然后从可启动的设备的MBR文件中加载引导程序Boot  Loader(存放os名称,内核位置等等)
  
  3.引导加载器GRUB/LILO读取内核到内存
  CPU将MBR读取至内存,运行引导加载器GRUB(Boot Loader常用的有GRUB和LILO两种,现在常用的是GRUB),GRUB会把内核加载到内存去执行。
  
 4.内核加载initrd加载文件系统
  加载内核(kernel)初始化initrd(os初始化)、内核会以只读方式挂载根文件系统,从文件/etc/fstab 中读取要加载的文件系统.,当根文件系统被挂载后,开始装载第一个进程(用户空间的进程)–>

5.initrd中运行/etc/inittab中设定的运行级别
  运行/sbin/init初始化系统:第一个被执行的脚本为/etc/rc.d/rc.sysinit、将会执行/etc/inittab来设定系统运行的默认级别:–>

6.  打印用户登录提示符


initab运行级别
  runlevel,运行级别,不同的级别会启动的服务不一样,init会根据定义的级别去执行相应目录下的脚本,Linux的启动级别分为以下几种
  0:关机模式
  1:单一用户模式(直接以管理员身份进入)
  2:多用户模式(无网络)
  3:多用户模式(命令行)
  4:保留
  5:多用户模式(图形界面)
  6:重启
  在不同的运行级别下,/etc/rc.d/rc这个脚本会分别执行不同目录下的脚本
linux忘记root密码怎么办?
进入单一用户模式 1 更改一下root密码即可。
回车-----输入e-----输入e进入编辑---在第二行最后命令行输入空格single 回车---按b启动
-----进入到单用户模式了,你可以更改root密码了。更密码的命令为 passwd--

linux磁盘块分为几部分、超级块包含什么

  在Linux系统下,第二个IDE通道的硬盘(从盘)被标识为----------------(hdb)
   Linux通过VFS支持多种不同的文件系统。Linux缺省的文件系统是-------- Ext系列
全部磁盘块由四个部分组成,分别为引导块、专用块、i节点表块和数据存储块

linux硬盘组织方式为:引导区、超级块(superblock),索引结点(inode),数据块(datablock),目录块(diredtoryblock)。 (莫非超级块和目录块统称专用块?)
超级块中包含了关于该硬盘或分区上的文件系统的整体信息,如文件系统的大小等;
超级块包含了索引结点inode表 和 空闲块表等重要的文件系统信息、 超级块记录了i节点表和空闲块表信息在磁盘中存放的位置。

索引结点inode表块:它包含了针对某一个具体文件的几乎全部信息,如文件的存取权限、所有者、大小、建立时间以及对应的目录块和数据块等;

数据块是真正存储文件内容的位置。

目录块:但是索引结点中不包括文件的名字,文件名是放在目录块里的。目录块里包含有文件的名字以及此文件的索引结点编号。 


扩展:
文件储存在硬盘上,硬盘的最小存储单位叫做"扇区"(Sector)每个扇区储存512字节
操作系统读取硬盘的时候,而是一次性连续读取多个扇区,即一次性读取一个"块"(block)。这种由多个扇区组成的"块",是文件存取的最小单位。
"块"的大小,最常见的是4KB,即连续八个 sector组成一个 block。

linux文件系统中每个文件用什么来标识?索引节点

Linux文件系统中每个文件用索引节点(inode)来标识
i节点是一个 64字节 长的表,表中包含了文件的相关信息

linux文件系统存储文件的话一般分为两个区,
一个是数据区,用于存储文件数据,
一个是索引节点inode表区(索引节点是个数值存放在索引节点表区),用于存放除文件名以外的所有信息:磁盘数据地址和文件类型(普通文件、目录、特殊文件)。
存储机理是这样的,创建文件,会对应一个于inode,当你需要打开某个文件时,首先是链接至inode表,然后读取该文件对应的inode存储的所有信息,然后根据inode里的信息读取对应的数据区的内容。

索引节点是一个数据结构,它包含了一个文件位置,大小,建立或修改时间,访问权限,所属关系等文件控制信息,一个文件系统维护了一个索引节点的数组,每个文件或目录都与索引结点数组中的唯一一个元素对应,系统为每个索引结点分配了一个编号,也就是该结点在数组中的索引号,称为索引结点号。

在 ls 结果的最左边一列,是文件的 inode 值,你可以简单把它想成 C 语言中的指针。它指向了物理硬盘的一个区块,事实上文件系统会维护一个引用计数,只要有文件指向这个区块,它就不会从硬盘上消失。

在这里插入图片描述

Linux通过i节点表将文件的逻辑结构和物理结构进行转换

在linux文件系统中,是以块为单位存储信息的,为了找到某一个文件在存储空间中存放的位置,用i节点对一个文件进行索引.
i 节点是一个64字节长的表,表中包含了文件的相关信息,其中有文件的大小、文件所有者、文件的存取许可方式以及文件的类型等重要信息.

在i节点表中最重要 的内容是磁盘地址表.
在磁盘地址表中有13个块号,文件将以块号在磁盘地址表中出现的顺序依次读取相应的块.
Linux文件系统通过把i节点和文件名进行 连接,
当需要读取该文件时,文件系统在当前目录表中查找该文件名对应的项,由此得到该文件相对应的i节点号,
通过该i节点的磁盘地址表把分散存放的文件物 理块连接成文件的逻辑结构

linux文件权限

某文件的权限为:d-rw-_r--_r--,用数值形式表示该权限,则该八进制数为: 644 ,该文件属性是 目录 .

文件类型分为:普通文件(磁盘上存储信息和数据的文件)、目录文件、软连接文件(用于不同目录下文件共享)、设备文件(访问设备)、命名管道(FIFO,进程之间通信可以通过该文件完成)

d  :目录
-   :普通文件
l   :软连接文件
b  :装置文件里的可供存储的接口设备 (可随机存储装置) 块设备文件
c  :装置文件里的串行端口设备,例如键盘、鼠标(一次性读取装置)字符设备文件
p:命名管道

在这里插入图片描述

linux对硬盘分区?交换分区

安装Linux系统对硬盘分区时,有两种分区类型: 文件系统分区 和 交换分区 .

系统交换分区是作为系统虚拟存储器 的一块区域.

一般划分硬盘:只需要  /根目录    交换分区:虚拟内存  /boot:引导启动程序

在这里插入图片描述

什么是硬链接和软链接?

①软链接的概念:(不同inode号使用同一份)
命令 ln -s
类同与windos的快捷方式,给文件创建一个快速的访问路径,它依赖于原文件
两个文件inode索引节点编号是不同的,但都指向同一个文件在硬盘中的区块。软链接的 inode 所指向的内容实际上是保存了一个绝对路径。
当原文件出现问题后,该链接不可用。

硬连接只能建立对文件链接,不能对目录,同一个文件系统。
软(符号)链接可以跨不同文件系统创建。

①硬链接的概念:(同inode号备份了一份)
命令 ln
指通过索引节点来进行连接。多个文件名指向同一索引节点inode编号。
硬连接的作用是允许一个文件拥有多个有效路径名,这样用户 就可以建立硬连接到重要文件,以防止“误删”的功能。
目录的索引节点有一个以上的连接,只删除一个连接并不影响索引节点本身和 其它的连接,只有当最后一个连接被删除后,文件的数据块及目录的连接才会被释放。
也就是说,文件真正删除的条件是与之相关的所有硬连接文件均被删除。
修改同步。

RAID磁盘阵列?

RAID 全称为独立磁盘冗余阵列(Redundant Array of Independent Disks),简单地说, RAID 是由多个独立的高性能磁盘驱动器组成的磁盘子系统,从而提供比单个磁盘更高的存储性能和数据冗余的技术。

家目录、绝对路径、vi/vim模式、DNS、正向代理和反向代理

家目录:cd ~ 是到该用户的家目录下,即/home/xxx(用户名)文件下
cd / 是到根目录下
绝对文件路径:描述了在虚拟目录结构中该目录的确切位置,以虚拟目录跟目录开始,相当于目录全名。

以正斜线(/)开始,比如 /usr/local。

相对文件路径:允许用户执行一个基于当前位置的目标文件路径。

q:如果未修改缓冲区数据,退出。
q!:取消所有对缓冲区数据的修改并退出。
w filename:将文件保存到另一个文件中。在用vi编辑文件时,将文件内容存入test.txt文件中,应在命令模式下键入 :w test.txt
wq:将缓冲区数据保存到文件中并退出。

vim模式分三种:
都是多模式编辑器,不同的是vim 是vi的升级版本
vi有3个模式:插入模式、命令行模式、正常模式。 

插入模式:在此模式下可以输入字符,按ESC将回到命令模式。 
正常模式:可以移动光标、删除字符等。 
命令行模式:可以保存文件、退出vi、设置vi、查找等功能(普通模式也可以看作是命令模式里的)。

vim一共有4个模式:

正常模式 (Normal-mode) 
插入模式 (Insert-mode)
命令模式 (Command-mode)
可视模式 (Visual-mode):在正常模式按下v, V, <Ctrl>+v,可以进入可视模式。
可视模式中的操作有点像拿鼠标进行操作,选择文本的时候有一种鼠标选择的即视感,有时候
会很方便。

DNS:域名系统,域名和ip地址互相映射的分布式数据库。
域名结构:树状结构,   . 是根服务器下分通用域名、国家域名

DNS解析过程:
优先查找本地dns缓存,查找本地/etc/hosts文件,是否有强制解析,如果没有去/etc/resolv.conf指定的dns服务器中查找记录(需联网,在dns服务器中找到解析记录后,在本地dns中添加缓存,完成一次dns解析

DNS解析两种模式:
递归查询
递归查询是一种DNS 服务器的查询模式,在该模式下DNS 服务器接收到客户机请求,必须使用一个准确的查询结果回复客户机。如果DNS 服务器本地没有存储查询DNS 信息,那么该服务器会询问其他服务器,并将返回的查询结果提交给客户机。

迭代查询
DNS 服务器另外一种查询方式为迭代查询,DNS 服务器会向客户机提供其他能够解析查询请求的DNS 服务器地址,当客户机发送查询请求时,DNS 服务器并不直接回复查询结果,而是告诉客户机另一台DNS 服务器地址,客户机再向这台DNS 服务器提交请求,依次循环直到返回查询的结果为止。

正向代理和反向代理:
正向代理:pc无法访问web服务器,需要通过代理服务器去访问web服务器,然后web服务器把结果通过代理服务器发给pc
隐藏客户端真实IP:上网者也可以通过这种方法隐藏自己的IP,免受攻击。


反向代理:pc以为访问的是web服务器(并不知道web服务器的存在),其实不是web服务器,可能是负载均衡服务器,负载均衡服务器访问web服务器,然后负载均衡服务器把结果发给pc。
隐藏服务器真实IP:使用反向代理,可以对客户端隐藏服务器的IP地址。

安全问题:SQL注入、CC、DDOS攻击

SQL注入:web程序中数据库层的安全漏洞。
主要原因是程序对用户输入数据的合法性没有判断和处理,导致攻击者可以在 Web 应用程序中事先定义好的 SQL 语句中添加额外的 SQL 语句,在管理员不知情的情况下实现非法操作,以此来实现欺骗数据库服务器执行非授权的任意查询,从而进一步获取到数据信息。
SELECT * FROM users WHERE user_id = $user_id

其中,user_id 是传入的参数,如果传入的参数值为“1234; DELETE FROM users”,那么最终的查询语句会变为:
SELECT * FROM users WHERE user_id = 1234; DELETE FROM users。

防止方法:
1.过滤输入内容,校验字符串:正则表达式匹配安全的字符串
2.参数化查询:MySQL 的参数格式是以“?”字符加上参数名称而成
3.nginx_waf 做过滤与预防
DD:DDOS攻击:
DDoS全称:分布式拒绝服务(DDoS:Distributed Denial of Service)。信息安全的三要素——“保密性”、“完整性”和“可用性”中,拒绝服务攻击,针对的目标正是“可用性”。
该攻击方式利用目标系统网络服务功能缺陷或者直接消耗其系统资源,使得该目标系统无法提供正常的服务。
攻击者使用一个非法账号将DDoS主控程序安装在一台计算机上,并在网络上的多台计算机上安装代理程序。在所设定的时间内,主控程序与大量代理程序进行通讯,代理程序收到指令时对目标发动攻击,主控程序甚至能在几秒钟内激活成百上千次代理程序的运行。


CC:
CC攻击的原理是通过代理服务器或者大量肉鸡模拟多个用户访问目标网站的动态页面,制造大量的后台数据库查询动作,消耗目标CPU资源,造成拒绝服务。
提供服务的企业只要尽量少用动态网页并且让一些操作提供验证码就能抵御一般的CC攻击。

Linux 的目录结构是怎样的?相关目录功能(重要)

在这里插入图片描述

系统启动必须:

/boot:存放的启动Linux 时使用的内核文件,包括连接文件以及镜像文件。
/etc:存放所有的系统需要的配置文件和子目录列表,更改目录下的文件可能会导致系统不能启动。/etc/gateways 建立动态路由相关、 启动时按etc/fstab文件描述内容加载文件系统
/lib:存放基本代码库(比如c++库),其作用类似于Windows里的DLL文件。几乎所有的应用程序都需要用到这些共享库。
/sys: 这是linux2.6内核的一个很大的变化。该目录下安装了2.6内核中新出现的一个文件系统 sysfs 。sysfs文件系统集成了下面3种文件系统的信息:针对进程信息的proc文件系统、针对设备的devfs文件系统以及针对伪终端的devpts文件系统。该文件系统是内核设备树的一个直观反映。当一个内核对象被创建的时候,对应的文件和目录也在内核对象子系统中

指令集合:

/bin:存放着最常用的程序和指令
/sbin:只有系统管理员能使用的程序和指令。

外部文件管理:

/dev :Device(设备)的缩写, 存放的是Linux的外部设备。注意:在Linux中访问设备和访问文件的方式是相同的。
/media:类windows的其他设备,例如U盘、光驱等等,识别后linux会把设备放到这个目录下。
/mnt:临时挂载别的文件系统的,我们可以将光驱挂载在/mnt/上,然后进入该目录就可以查看光驱里的内容了。
临时文件:

/run:是一个临时文件系统,存储系统启动以来的信息。当系统重启时,这个目录下的文件应该被删掉或清除。如果你的系统上有 /var/run 目录,应该让它指向 run。
/lost+found:一般情况下为空的,系统非法关机后,这里就存放一些文件。
/tmp:这个目录是用来存放一些临时文件的。

账户:

/root:系统管理员的用户主目录。
/home:用户的主目录,以用户的账号命名的。
/usr:用户的很多应用程序和文件都放在这个目录下,类似于windows下的program files目录。
/usr/bin:系统用户使用的应用程序与指令。
/usr/sbin:超级用户使用的比较高级的管理程序和系统守护程序。
/usr/src:内核源代码默认的放置目录。

运行过程中要用:

/var:存放经常修改的数据,比如程序运行的日志文件(/var/log 目录下)。
/proc:管理内存空间!虚拟的目录,是系统内存的映射,我们可以直接访问这个目录来,获取系统信息。这个目录的内容不在硬盘上而是在内存里,我们也可以直接修改里面的某些文件来做修改。

扩展用的:

/opt:默认是空的,我们安装额外软件可以放在这个里面。
/srv:存放服务启动后需要提取的数据(不用服务器就是空)
若要配置该计算机的域名解析客户端,需配置/etc/resolv.conf文件

NFS网络文件系统?其作用

 试述什么是网络文件系统nfs?其作用是什么?
答题要点:
网络文件系统是应用层的一种应用服务,对于用户而言可以通过nfs方便的访问远地的文件系统,使之称为本地文件系统的一部分。适用于确定的大型网络或广域连接的网络上使用。
它主要应用于Linux和Linux系统、Linux和Unix系统之间的文件或目录的共享.对于用户而言可以通过 NFS方便的访问远地的文件系统,使之成为本地文件系统的一部分.采用NFS之后省去了登录的过程,方便了用户访问系统资源

linux系统里buffer和cache如何区分?

buffer和cache都是内存中的一块区域,
当CPU需要写数据到磁盘时,由于磁盘速度比较慢,所以CPU先把数据存进buffer,然后CPU去执行其他任务,buffer中的数据会定期写入磁盘;
当CPU需要从磁盘读入数据时,由于磁盘速度比较慢,可以把即将用到的数据提前存入cache,CPU直接从Cache中拿数据要快的多。

2、Linux常用命令


 - 可以用ls –al命令来观察文件的权限,用八进制形式显示非打印字符应使用参数-b
 - 设定限制用户使用磁盘空间的命令是quota
 - 结束后台进程的命令是kill
 - 显示Linux系统中正在运行的全部进程,应使用的命令及参数是ps -aux 或者ps -ef | grep pid
 - 将前一个命令的标准输出作为后一个命令的标准输入,称之为管道 |
 - 为脚本程序指定执行权的命令及参数是chmod a+x filename
 - 压缩文件后生成后缀为.gz文件的命令是gzip
 - 检查已安装的文件系统/dev/had5是否正常,若检查有错,则自动修复,其命令及参数是fsck –a /dev/had5 
 - 在Linux系统中,测试DNS服务器是否能够正确解析域名的的客户端命令,使用命令nslookup
 -  启动进程有手动启动和调度启动两种方法,其中调度启动常用的命令为 at 、 batch 和 crontab
 - rm命令可删除文件或目录,使用递归开关-r或-R
 - mv命令可以移动文件和目录,还可以为文件和目录重新命名
 - ping命令用于测试网络的连通性,ping命令通过ICMP协议(internet控制信息协议)来实现
 ->;>;符号将输出重定向内容附加在原文的后面
 - 增加一个用户的命令是:adduser 或useradd
 - 进行字符串查找,使用grep命令
 - 前台起动的进程使用Ctrl+c终止
 - 在使用mkdir命令创建新的目录时,在其父目录不存在时先创建父目录的选项是 -p
 - 一个文件名字为rr.Z,可以用来解压缩的命令是 uncompress
 - cut命令可以从文本文件的每一行中截取指定内容的数据
 - ,若希望在查看文件内容过程中可以用光标上下移动来查看文件内容,应使用less 命令.
 - 当我们与某远程网络连接不上时,就需要跟踪路由查看,以便了解在网络的什么位置出现了问题,满足该目的的命令是 traceroute 
 - Linux系统通过 write  命令给其他用户发消息.[ 注:mesg [y|n] 所有使用者 决定是否允许其他人传讯息到自己的终端机介面 ]
 - 在重新启动Linux系统的同时把内存中的信息写入硬盘,应使用( shutdown-r now )命令实现
 - 关闭linux系统(不重新启动)可使用命令 halt
 - 实现从IP地址到以太网MAC地址转换的命令为 arp
 - 对文件进行归档的命令为 tar
 - 改变文件所有者的命令为 chown
 - 在给定文件中查找与设定条件相符字符串的命令为grep
 - 建立一个新文件可以使用的命令为 touch
 - 在下列命令中,不能显示文本文件内容的命令是: D . A more B less C tail D join
 - Linux crontab 是用来定期执行程序的命令  MIN HOUR DAY MONTH DAYOFWEEK COMMAND
 -    *    *    *    *
 -    -    -    -    -
|    |    |    |    |
|    |    |    |    +----- 星期中星期几 (0 - 6) (星期天 为0)
|    |    |    +---------- 月份 (1 - 12) 
|    |    +--------------- 一个月中的第几天 (1 - 31)
|    +-------------------- 小时 (0 - 23)
+------------------------- 分钟 (0 - 59)
每日晚11点执行date命令,crontab文件中应为:0 23 * * * date
 - Linux at命令详解:定时执行任务A 当日晚11点执行clear命令,使用at命令:at 23:00 today clear
 - ,tac是cat的倒写,意思也和它是相反的.cat是从第一行显示到一行,而tac是从一行显示到第一行,而rev 则是从一个字符显示到第一个字符
 -  tar归档且压缩的文件可以由gzip命令解压缩(这幅图的就是说123456这几个文件打包成了一个a.tar文件,但是这个a.tar还是很大,继续用gzip进行压缩,变成了一个更小的压缩文件)
 - cp /test1/file1 /test3/file2   如将/test1目录下的file1复制到/test3目录,并将文件名改为file2
 - ps -ef|grep xxx 显示xxx进程pid
 - free -m  查看服务器内存使用情况
 - LINUX中如何查看某个端口是否被占用 netstat -anp | grep 端口号
 - 查看当前所有已经使用的端口情况,netstat   -nultp(此处不用加端口号)
 - 如何查找一个文件大小超过5M的文件 find . -type f -size +5M
 - 如果知道一个文件名称,怎么查这个文件在linux下的哪个目录,如:要查找tnsnames.ora文件find / -name tnsnames.ora
 - 查看文件类型?字符编码?语法: file destination
 - 如何查看命令历史记录? history 命令可以展示你用的命令的历史记录
 - 列出已经安装的包: yum list installed
 - df 可以查看所有已挂在磁盘的使用情况 df -ah 命令来查看,df 是用来查看文件系统磁盘空间使用情况的命令
 - 'logrotate'提供日志自动循环功能
 - 如何查看系统内核的版本,uname 这个命令是用来打印系统信息的, -a 可以打印系统所有信息,
 - 如何查看系统当前的 IP 地址ifconfig -a 或者  ip a
 - 如何在系统中管理服务使用 service 命令 或者 使用 systemctl 命令
 - 如何查看一个目录的大小可以使用 du -sh [目录] 命令,du 使用来计算文件/目录大小的命令,-s 显示文件或整个目录的大小,-h 是用可读格式。 
 - 如果想挂载一个新的文件,比如将 /dev/hda1 挂在 /mnt 之下,可以用 mount /dev/hda1 /mnt
 - 查看当前路径: pwd
 - 软链接: ln -s slink source   硬链接: ln link source
 - 用什么命令对一个文件的内容进行统计?(行号、单词数、字节数)答案:wc 命令 - c 统计字节数 - l 统计行数 - w 统计字数。
 - 查找自己所在的终端信息:who am i  查看当前谁在使用该主机:who
 - 查看各类环境变量用什么命令?答案:查看所有 env    查看某个,如 home: env $HOME
 - 通过什么命令查找执行命令?答案:which 只能查可执行文件   whereis 只能查二进制文件、说明文档,源文件等
 - 怎么对命令进行取别名?答案:alias la='ls -a'
 - 使用 bind 命令,bind 可以很方便地在 shell 中实现宏或按键的绑定
 - 使用命令 compgen -c,可以打印出所有支持的命令列表。
 - linux 命令’hash’管理着一个内置的哈希表,记录了已执行过的命令的完整路径,用该命令可以打印出你所使用过的命令以及执行的次数。
 - 使用命令 whatis 可以先出显示出这个命令的用法简要
 - 使用命令 repquota 能够显示出一个文件系统的配额信息
 - chmod是用来设置文件夹和文件权限的,比如我们系统中的文件不可读写,需要用来设置777权限;而chown是用来设置用户组的,比如授权某用户组,方便控制用户权限。
 - 查看系统负载有两个常用的命令,是哪两个?  w   和 uptime  结果其中load average即系统负载,三个数值分别表示一分钟、五分钟、十五分钟内系统的平均负载,即平均任务数。
 - Linux vmstat命令详解:监控系统资源
 - rsync 同步命令中,下面两种方式有什么不同呢?
(1) rsync -av  /dira/  ip:/dirb/
(2) rsync -av  /dira/  ip::dirb
答:(1)前者是通过ssh方式同步的
(2)后者是通过rsync服务的方式同步的
rsync 同步时,如果要同步的源中有软连接,如何把软连接的目标文件或者目录同步?
答:同步源文件需要加-L选项
rsync 同步数据时,如何过滤出所有.txt的文件不同步?
答:加上--exclude选项:
--exclude=*.txt”
rsync同步数据时,如果目标文件比源文件还新,则忽略该文件,如何做?
答:保留更新使用-u或者--update选项
 - curl 是一个工具,用于传输来自服务器或者到服务器的数据
 - 在Linux下如何指定dns服务器,来解析某个域名?dig @8.8.8.8 www.baidu.com#使用谷歌DNS解析百度
 - 命令fsck对受到破坏的文件系统进行修复

https://blog.csdn.net/a303549861/article/details/93754526

3、shell基础知识

在shell中变量的赋值有四种方法

A 直接赋值 B使用read命令
C 使用命令行参数 D使用命令的输出

在Shell脚本中,用来读取文件内各个域的内容并将其赋值给Shell变量的命令是 read

4、shell笔试题

https://blog.csdn.net/u010230971/article/details/80335522
https://www.imooc.com/article/1131
http://blog.itpub.net/69952968/viewspace-2739276/
https://www.cnblogs.com/qianjinyan/p/11212214.html
https://www.jb51.net/article/135169.htm
https://blog.csdn.net/f110300641/article/details/83714260
https://zhuanlan.zhihu.com/p/94545042
https://www.techug.com/post/25-question-about-bash-shell.html
https://blog.csdn.net/zcsylj/article/details/6799632
https://www.cnblogs.com/linyu51/p/14069473.html
https://mp.csdn.net/mp_blog/manage/article?spm=1000.2115.3001.5448

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
Linux Shell脚本是一种在Unix/Linux操作系统中编写的脚本语言,主要用于实现自动化任务和日常工作的脚本编写。以下是一些常见面试题: 1. 什么是Shell?它的作用是什么? Shell是一个命令行解释器,主要作用是与用户交互,接受用户输入的命令,并将其解释为计算机程序能够理解的语言,然后执行相应的操作。Shell还可以编写脚本程序,实现自动化的任务。 2. Shell脚本中的变量有哪些?如何进行赋值? 在Shell脚本中,我们可以使用以下三种类型的变量:系统变量、环境变量和自定义变量。进行赋值时,使用“=”号,比如name="Tom"。 3. 如何判断一个文件是否存在?如果不存在,如何创建一个空文件? 使用if语句来判断一个文件是否存在,如果不存在则使用touch命令来创建一个空文件,示例代码如下: ``` if [ ! -f filename ]; then touch filename fi ``` 4. 如何在Shell脚本中使用循环? Shell脚本中可以使用for和while循环,示例代码如下: ``` # for循环 for file in $(ls *.txt); do echo $file done # while循环 count=0 while [ $count -lt 10 ]; do echo $count count=$((count+1)) done ``` 5. 如何从Shell脚本中读取命令行参数? 通过$1、$2、$3...来读取命令行参数,示例代码如下: ``` #!/bin/bash echo "The first argument is $1" echo "The second argument is $2" echo "The third argument is $3" ``` 6. 如何调试Shell脚本? 可以使用set -x命令开启调试模式,在执行脚本时输出每一条命令和执行结果,示例代码如下: ``` #!/bin/bash set -x echo "Hello, World!" set +x ```

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

风吹海洋浪

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值