Linux(面试篇)

目录

什么是Linux

什么是Linux内核?

Linux的基本组件是什么?

Bash和Dos之间基本区别是什么?

什么是Root账户

什么是Bash?

什么时CLI?

Linux的目录结构时怎样的?

什么是硬链接和软链接?

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

什么是网站数据库注入?

Shell脚本使什么?

请问当用户反馈网站访问慢,你会如何处理?

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

针对网站访问慢,怎么去排查?

怎么去解决?

基本命令


一起加油 !!!

什么是Linux

linux是一套蔓菲使用自由传播的雷士Unix操作系统,一般web项目都要在linux上系统上面。linux是一个基于POSIX和Unix的多用户、多任务、支持多线程和多cpu的操作系统。它运行主要的Unix工具软件、应用程序和网络协议。它支持32位和64位硬件。Linux继承了Unix以网络位核心的设计思想,是一个新能稳定的多用户网络操作系统。

什么是Linux内核?

Linux系统的核心是内核,内核看控制着计算机系统上的所有硬件和软件,在必要时分配硬件,并根据需要执行软件

  1. 系统内存管理

  2. 应用程序管理

  3. 硬件设备管理

  4. 文件系统管理

Linux的基本组件是什么?

就像任何其他典型的操作系统一样,Linux拥有所有这些组件:内核,shell和GUI,系统使用程序和应用程序。Linux比其他操作系统更具优势的每个方面都附带其他功能,所有代码都可以免费下载。

Bash和Dos之间基本区别是什么?

  1. Bash和Dos控制台之间的主要区别在于3个方面:

1.1. Bash命令区分大小写,而Dos命令不区分

1.1.1. 在Bash下,/character是目录分隔符,\作为转义字符。在Dos下,/用作命令参数分隔符,\是目录分隔符

1.2.Dos遵循命名文件中的约定,即8个字符的文件后跟一个点,扩展名为3个字符。Bash没有遵循这样的惯例。

大小写,命名规则

什么是Root账户

root账户就像一个管理员账户,允许你完全控制系统。你可以在此创建和维护用户账户,为每个账户分配不同的权限。每次安装Linux时都是默认账户

什么是Bash?

Bash(Bourne-Again SHell)是一种Unix shell,也就是一种命令行解释器,用于执行用户输入的命令和脚本。Bash 是 GNU 项目的一部分,最初由 Brian Fox 开发,旨在作为 Bourne shell (sh) 的替代品。Bash 是目前 Linux 和 macOS 等类 Unix 系统中最常用的 shell。

什么时CLI?

  1. 命令行界面(英语:comand-line interface,缩写:CLI)是在图形用户界面得到普及之前使用最为广泛的用户界面,它通常不支持鼠标,用户通过键盘输入指令,计算机接收到指令后,予以执行。也有人称为字符用户界面(CUI)。

  2. 通常认为,命令行界面(CLI)没有图像用户界面(GUI)那么方便用户操作。因为,命令行界面的软件通常需要用户记忆操作的命令,但是,由于其本身的特点,命令行界面要较图形用户界面节约计算机系统的资源。在熟记命令的前提下,使用命令行界面往往要较使用图形用户界面操作速度要快。所以,图形用户界面的操作系统中,都保留着可选的命令行界面

Linux的目录结构时怎样的?

Linux文件系统结构层次鲜明,就像一颗倒立的树,最顶层是其根目录:

什么是硬链接和软链接?

硬软件: 由于Linux下的文件是通过索引结点(inode)来识别文件,硬链接可以认为是一个指针,指向文件索引结点的指针,系统并不为它重新inode。每添加一个一个硬链接,文件的链接数就加

不足:

不可以在不同系统的文件间建立链接;

只有超级用户才可以为目录创建硬链接

**软链接:**软连接克服了硬链接的不足,没有任何文件系统的限制,任何用户可以创建指向目录的符号链接。因此现在更为广泛使用,它具有更大的灵活性,甚至可以跨越不同机器,不同网络对文件进行链接。

不足:

因为链接文件包含有原文件的路径信息,所以当原文件从一个目录下移到其他目录中, 再访问链接文件,系统就找不到了,而硬链接就没有这个缺陷,你想怎么移就怎么移;还有它要系统分配额外的空间用于建立新的索引节点和保存原文件的路径。

**实际场景下,基本是使用软链接。**总结区别如下:

硬链接不可以跨分区,软件链可以跨分区。

硬链接指向一个 inode 节点,而软链接则是创建一个新的 inode 节点。

删除硬链接文件,不会删除原文件,删除软链接文件,会把原文件删除。

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

  1. CC攻击,主要用来攻击页面的,模拟多用户不停的对你的页面进行访问,从而使你的系统资源消耗殆尽。

  2. DDOS攻击,中文名叫分布式拒绝服务器攻击,指借助服务器技术将多个计算机联合来作为攻击平台,来对一个或多个目标发动DDOS攻击。

  3. 怎么预防CC和DDOS攻击?

防CC,DDOS攻击,这些只能用硬件防火墙作流量清洗,将攻击流量引入黑洞

清洗流量这一块,主要使买isp服务商的防火攻击的服务器就可以,机房一般由空余流量,我们一般买服务器,比较攻击不会持续长时间。

什么是网站数据库注入?

  1. 没有对用户输入数据的合法性进行判断。

  2. 用户可以提交一段数据库查询代码,根据程序返回的结果,获得某些他想得知的数据,这就是所谓的SQL注入

  3. SQL注入,是从正常的Web端口访问,而且表面看起来跟一般的Web页面访问没有什么区别,如果管理员没有每日查看日志的习惯,可能被入侵很长时间都不会发觉。

  4. 数据库网页端注入这种,可以考虑使用nginx_waf作过滤和预防

Shell脚本使什么?

一个Shell脚本是一个文本文件,包含了一个或多个命令,作为系统管理员,我们经常需要使用多个命令来完成一项任务,我们可以添加这些所有命令在一个文本文件(Shell脚本)来完成这些日常工作任务。

请问当用户反馈网站访问慢,你会如何处理?

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

  1. 服务器出口宽带不够用
    1. 本身服务器购买的出口宽带比较小。一旦并发量大的话,就会造成分给每个用户的出口带宽就小,访问速度自然就会慢。
    2. 跨运营商网络导致带宽缩减。例如,公司网站放在电信网络上,那么客户这边对接是长宽带或联通,这也可能导致带宽的缩减。
  1. 服务器负载过大,导致响应不过来
    1. 可以从两个方面入手分析:
      1. 分析系统负载,使用w命令或者uptime命令查看系统负载,如果负载很高,则使用top命令查看cup,MEM等占用情况,要么是cpu繁忙,要么是内存不够
      2. 如果二者都正常,再去使用sar命令分析网卡流量,分析是不是遭到攻击,一旦分析出问题的原因,采取对应的措施解决,如决定要不要杀死这些进程,或则禁止一些访问等。
  1. 数据库瓶颈
    1. 如果慢查询比较多,那么就要开发人员或DBA协助进行SQL语句的优化。
    2. 如果数据库响应慢,考虑可以加一个数据库缓存,如Redis等。然后,也可以搭建MySQL主从,一台MySQL服务器负责写,其他几台从数据库负责读。
  1. 网站开发代码没有优化好
    1. 例如SQL语句没有优化,导致数据库读写相当耗时。

针对网站访问慢,怎么去排查?

  1. 首先要确定用户端还是服务端的问题,当接到用户反馈访问慢,那边自己立即访问网站看看,如果自己这边访问快,基本断定是用户端问题,就需要耐性跟客户解释,协助客户解决问题
    不要一上来就看服务端的问题,一定要从源头开始,逐步逐步往下
  2. 如果访问也慢,那么可以利用浏览器调试功能,看看加载哪一项数据消耗过多,是图片加载慢,还是数据加载慢。
  3. 争对服务器负载情况。查看服务器硬件(网络,CPU,内存)的消耗情况。如果是购买的云主机,比如阿里云,可以登录阿里云平台提供个方面的监控,比如CPU,内存,宽带的使用情况。
  4. 如果发现硬件资源消耗都不高,那么就需要通过查看日志,比如看看MySQL慢查询的日志,看看是不是某条SQL语句查询慢,导致网站访问慢。

怎么去解决?

  1. 如果是出口贷款的问题,那么就要申请加大出口带宽。
  2. 如果慢查询比较多,纳闷就要开发人员或DBA协助进行SQL语句的优化。
  3. 如果数据库响应慢,考虑可以加一个数据库缓存,如Redis等等。然后也可以搭建MySQL主从,一台MySQL服务器负责写,其他几台从数据库负责读。
  4. 申请购买CDN服务,加载用户的访问。
  5. 如果访问还比较慢,那就需要从整体架构上进行优化了。做到专角色用,多台服务器提供同一个服务。

基本命令

|------------------------------------------------------------------------------|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| cd | 切换目录 |
| pwd | 显示但钱目录据对路径 |
| ls | 查看当前文件名或目录名 |
| ll | 查看当前目录下的所有详细信息的文件夹 |
| touch | 创建目录 |
| cat | 查看文件命令 |
| more | 分页查看文件命令(不能快速定位到最后一页) |
| less | 分页查看文件命令(可以快速定位到最后一页) |
| tail | 查看文件命令 |
| cp | 复制功能 |
| mv | 移动功能,改文件名称功能 |
| rm | 删除文件,或文件夹 |
| find | 查找指定文件或目录 find -name '*.cmd' |
| vi | 文本编辑器类似win命令,看底下vim的操作 |
| vim | 改进版文本编辑器 |
| | | 管道命令 管道命令的语法:命令1 | 命令2 | 命令3。 |
| grep | 正则表达式,用于字符串的搜索工作(模糊查询) |
| yum install -y lrzsz | 实现win到Linux文件互相简单上传文件 |
| tar | -z 是否需要用gzip压缩。 -c 建立一个压缩文件的参数指令(create) -压缩 -x 解开一个压缩文件的参数指令(extract) -压缩 -v 压缩的过程中显示文件(verbose) -f 使用档名,在f之后要立即接档中(file) 常用解压参数组合:zxvf 常用压缩参数组合:zcvf 例如: tar -zxvf redis-3.2.8.tar.gz : 解压到当文件夹 |
| ps | 进程状态,类似于windows的任务管理器 |
| clear | 清屏命令 |
| ifconfig | 用于查看和更改网络接口的地址和参数,包括IP地址、网络掩码、广播地址,使用权限是超级用户。(一般是用来查看的,很少更改) |
| ping | (用于检测与目标的连通性)语法:ping ip地址 |
| free | 显示系统内存 显示系统内存使用情况,包括物理内存,交互内存(swap)和内核缓冲区内存 -b 以Byte显示内存使用情况 -k 以kb为单位显示内存使用情况 -m 以mb为单位显示内存使用情况 -g 以gb为单位显示内存使用情况 -s <间隔秒数>程序显示内存 -t 显示内存使用总合 |
| top | 显示当前系统正在执行的进程的相关信息,包括进程ID、内存占用率、CPU占用率等 -c 显示完整的进程命令 -s 保密模式 -p <进程号>指定进程显示 -n <次数>循环显示次数 |
| netstat | Linux netstat命令用于显示网络状态 利用netstat指令可让你得知整个Linux系统的网络情况 语法: netstat [-acCeFighilMnNoprstuvVwx][-A<网络类型>][--ip] |
| file | 可查看文件类型 |
| reboot | 重启linux Linux centos 重启命令: reboot |
| halt | Linux centos 关机命令 : halt |
| ntpdate ntp1.aliyun.com | 同步时间命令 |
| rm -rf /etc/localtime ln -s /usr/share/zoneinfo/Asia/Shanghai /etc/localtime | 更改为北京时间命令 |
| date | 查看时间命令 |

相关推荐
宴之敖者、23 分钟前
Linux——\r,\n和缓冲区
linux·运维·服务器
LuDvei24 分钟前
LINUX错误提示函数
linux·运维·服务器
未来可期LJ31 分钟前
【Linux 系统】进程间的通信方式
linux·服务器
Abona32 分钟前
C语言嵌入式全栈Demo
linux·c语言·面试
心理之旅42 分钟前
高校文献检索系统
运维·服务器·容器
Lenyiin1 小时前
Linux 基础IO
java·linux·服务器
The Chosen One9851 小时前
【Linux】深入理解Linux进程(一):PCB结构、Fork创建与状态切换详解
linux·运维·服务器
大佐不会说日语~1 小时前
使用Docker Compose 部署时网络冲突问题排查与解决
运维·网络·spring boot·docker·容器
Kira Skyler1 小时前
eBPF debugfs中的追踪点format实现原理
linux
2501_927773072 小时前
uboot挂载
linux·运维·服务器