【面经】Linux

一、高频

1、Linux常见的指令

  • 路径/目录类
    • cd, mkdir, rmdir, pwd ,ls等重要指令;
    • rmdir 仅能删除空目录,要删除非空目录需使用“ rm -r ”指令;
  • 文件类
    • 创建:mkdir文件夹,touch文件
    • 移动mv
    • 复制cp
    • 修改名字mv
    • 删除rm
    • 打开/编辑gedit/vi
    • 查看:cat正着查看,tac反着查看,nl添加行号,more向后翻页,less可以向前翻页,head 只看头几行,tail 只看尾巴几行,od 以二进制的方式读取文件内容
    • umask 就是指定 “目前使用者在创建文件或目录时候的权限默认值”
    • chattr (设置文件隐藏属性)
    • lsattr (显示文件隐藏属性)
    • 观察文件类型:file
    • 查找文件:which (只能查“可执行文件”),whereis (由一些特定的目录中寻找文件文件名),locate(只加文件名,依据 /var/lib/mlocate 内的数据库记载,找出使用者输入的关键字文件名) / updatedb(用于更新 locate 命令所使用的数据库),find直接搜索磁盘,较慢
    • 权限(chmod XXX)其中111(7)对应rwx。当前用户,用户组,其他用户;chgrp;chown
  • 通讯类:ping ip、ipconfig、hostname -I、netstat
  • 查看:(进程ps)
  • 搜索:grep能使用正则表达式搜索文本,并把匹配的行打印出来。grep [stringSTRING] filename
  • 进程:查看ps,杀掉kill
  • 后台:查看后台任务job -l,把后台任务调到前台执行 fg,把停下的后台任务在后台执行起来 bg

2、Linux与Windows的区别,为什么嵌入式开发用linux?

  1. 开源性质:Linux是一个开源操作系统,其源代码对于用户和开发者来说是可访问和可修改的。这使得开发者能够针对特定的嵌入式系统进行定制和优化,以满足硬件和应用程序的需求。相比之下,Windows系统不开源或半开源,这限制了开发者对系统的完全控制。
  2. 可定制性:Linux内核的开源性质使得嵌入式开发者可以根据具体需求定制和裁剪系统,将其精简为适合特定嵌入式设备的最小系统。这种灵活性使得Linux成为嵌入式设备开发的理想选择。而Windows系统由于其庞大的体积和复杂的结构,很难做到如此高度的可定制性。
  3. 跨平台支持:Linux支持多种硬件架构,包括x86、ARM、MIPS等,可以在不同类型的嵌入式设备上运行。这种跨平台的特性使得开发者可以更方便地在不同的嵌入式平台上进行开发。而Windows系统主要支持x86架构,对于其他架构的支持相对较弱。
  4. 安全性:Linux系统在设计上注重安全性,通过权限管理、内存保护等机制来保护系统免受攻击和破坏。相比之下,Windows系统在过去曾存在过一些安全漏洞和攻击事件,这在一定程度上影响了其在嵌入式开发领域的应用。
  5. 丰富的驱动程序和工具链:Linux环境下有丰富的驱动程序和工具链,包括编译器、调试器、模拟器等,这些工具和资源可以满足嵌入式开发的各种需求。而Windows系统虽然也提供了相应的开发工具链,但在某些方面可能不如Linux系统完善。

3、ps的状态

在 Linux 中,进程可以有多种状态。这些状态在 ps 命令的输出中可以通过特定的符号来表示。以下是一些常见的进程状态及其对应的 ps 输出中的符号:

  1. R (Running or Runnable):

    • 进程正在运行或在运行队列中等待运行。
    • 在 ps 中,这通常显示为 R
  2. S (Interruptible Sleep):

    • 进程在等待某个条件成立(例如,等待 I/O 操作完成)而处于可中断的睡眠状态。
    • 在 ps 中,这通常显示为 S
  3. D (Disk Sleep):

    • 进程在等待 I/O 操作完成(通常是磁盘 I/O),此时它不会被中断。
    • 在 ps 中,这通常显示为 D。注意,这种状态的进程很少见,因为大多数 I/O 操作都是可中断的。
  4. T (Stopped or Traced):

    • 进程已被停止(例如,通过 SIGSTOP 信号)或正在被调试器跟踪。
    • 在 ps 中,这通常显示为 T
  5. Z (Zombie):

    • 进程已终止,但其父进程尚未通过 wait() 或类似的系统调用来获取其终止状态。这样的进程也被称为“僵尸进程”。
    • 在 ps 中,这通常显示为 Z,但注意,ps 的默认输出可能不显示僵尸进程。要查看它们,你可能需要使用特定的选项,如 ps -ef | grep defunct 或 ps -eo pid,stat,cmd | grep Z
  6. I (Idle):

    • 这个状态在某些版本的 Linux 中可能并不常见,但在某些上下文中,它可能表示进程处于空闲状态。
    • 在 ps 中的表示可能因系统而异。
  7. W (Waking):

    • 这个状态在某些系统上可能表示进程正在从睡眠状态唤醒。但在现代的 Linux 系统中,这个状态可能不常见或已被其他状态所取代。
    • 在 ps 中的表示可能因系统而异。

二、基础

1、Linux学什么

  • 计算机基础 (http://www.study-area.org/compu/compu.htm)
  • 网络基础 (http://www.study-area.org/network/network.htm)
  • 计算机概论与硬件相关知识
  • Linux的安装与指令
  • Linux操作系统的基础技能:“使用者、群组的概念”、“权限的观念”,“程序的定义”等等
  • vi文书编辑器
  • Shell与Shell Script的学习
  • 软件管理员
  • 网络基础的创建
  • 网站的架设

2、磁盘分区

1. 分区类型

Linux 支持多种分区方案,但最常见的是基于 GUID 分区表 (GUID Partition Table, GPT) 和传统的 Master Boot Record (MBR) 分区方案。

  • MBR 分区方案:MBR 使用 512 字节的引导扇区,其中 64 字节用于分区表。MBR 分区方案最多支持 4 个主分区,或者 3 个主分区加 1 个扩展分区(扩展分区内可以有多个逻辑分区)。

  • GUID 分区表 (GPT):GPT 克服了 MBR 的限制,允许几乎无限数量的分区,并且支持大于 2TB 的分区。GPT 通常用于需要超过 4 个分区或处理大分区的情况。

2. 分区用途

在 Linux 中,常见的分区用途包括:

  • /boot:存放启动加载器(如 GRUB)和内核文件的分区,通常是一个较小的主分区。

  • /(根文件系统):存放操作系统文件、应用程序和大部分用户数据的分区。

  • /home:存放用户主目录的分区,这样可以将用户数据与操作系统文件分离。

  • /var:存放经常变动的数据,如日志文件、邮件队列等。

  • /usr:存放用户共享的文件和应用程序。

  • 交换空间 (swap):用于虚拟内存,当物理内存不足时,Linux 会使用 swap 空间。

3. 分区工具:MBR 分区表请使用 fdisk 分区, GPT 分区表请使用 gdisk 分区

三、文件

1、Linux的使用者与群组

Linux一般将文件可存取的身份分为三个类别,分别是 owner/group/others,且三种身份各有 read/write/execute 等权限

2、Linux文件权限

用 su - 切换身份成为root后, 下达“ ls -al ”:ls是“list”的意思,重点在显示文件的文件名与相关属性。而选项“-al”则表示列出所有的文件详细的权限与属性 (包含隐藏文件,就是文件名第一个字符为“ . ”的文件)

  1. 第一栏代表文件的类型和权限(10个字符):档案类型、档案拥有者之权限、档案所属群组之权限、其他人之权限
  2. 第二栏表示有多少文件名链接到此节点(i-node)
  3. 第三栏表示这个文件(或目录)的“拥有者帐号
  4. 第四栏表示这个文件的所属群组
  5. 第五栏为这个文件的容量大小,默认单位为Bytes
  6. 第六栏为这个文件的创建日期或者是最近的修改日期
  7. 第七栏为这个文件的文件名

与Windows系统不一样的是,在Linux系统当中,每一个文件都多加了很多的属性进来,尤其是群组的概念,这样有什么用途呢? 其实,最大的用途是在“数据安全性”上面的(系统保护、团队开发软件或数据共享的功能)

3、改变文件属性与权限

  • chgrp :改变文件所属群组(change group, 要被改变的群组名称必须要在/etc/group文件内存在才行)
  • chown :改变文件拥有者(change own,使用者必须是已经存在系统中的帐号,也就是在/etc/passwd 这个文件中有纪录的使用者名称才能改变;chown还可以直接修改群组的名称,加上-R)
  • chmod :改变文件的权限, SUID, SGID, SBIT等等的特性

    • 各权限的分数对照表:> r:4 > w:2 > x:1,777就是用户、群组和其他都是全部rwx

4、Linux 文件类型

  • 当为[ d ]则是目录
  • 当为[ - ]则是文件(进一步还包括纯文本文件,二进制文件,数据格式文件)
  • 若是[ l ]则表示为链接文件(link file);
  • 若是[ b ]则表示区块设备文件,为设备文件里面的可供储存的周边设备(可随机存取设备);
  • 若是[ c ]则表示字符设备文件,为设备文件里面的序列埠设备,例如键盘、鼠标(一次性读取设备)
  • [s] 数据接口文件(sockets)
  • [p] 数据输送档(FIFO, pipe)

5、文件扩展名

只要你的权限当中具有x的话,即代表这个文件具有可以被执行的能力,但不一定执行成功

6、Linux目录配置-FPS标准

7、文件与目录管理

  • cd:变换目录
  • pwd:显示目前的目录
  • mkdir:创建一个新的目录
  • rmdir:删除一个空的目录

8、Linux文件系统

Linux文件系统具有以下几个特点:

  1. 树形结构:Linux文件系统采用树状目录结构,具有单一的根目录(/),所有文件和目录都从根目录开始,一层一层向下延伸。
  2. 无结构的字符流式文件:Linux中的文件被视为无结构的字符流,这意味着文件内容可以被视为连续的字符序列,而不考虑其内部的结构或格式。
  3. 动态增长或减少:Linux文件可以动态地增长或减少,即文件的大小可以在使用过程中动态地改变。
  4. 访问权限控制:文件数据可由文件拥有者设置相应的访问权限而受到保护,这有助于保护文件的安全性和完整性。
  5. 设备文件:在Linux中,外部设备(如磁盘设备、键盘、鼠标和串口等)都被看作文件,这使得设备可以通过文件系统隐蔽掉设备特性,从而简化了设备的管理和使用。

Linux支持多种文件系统类型,其中一些常见的包括:

  • EXT系列文件系统:EXT系列文件系统是专门为Linux设计的高性能文件系统,包括EXT2、EXT3和EXT4等版本。这些文件系统具有良好的磁盘空间管理和容错能力,以及较高的性能和可靠性。
  • VFAT文件系统:VFAT文件系统是一种在Windows操作系统下广泛使用的文件系统类型,也称为FAT32。虽然它在Windows中广泛使用,但在Linux中也有一些应用场景。VFAT文件系统具有较好的兼容性,可以在不同的操作系统之间共享文件。

inode是什么?——索引节点

  • inode即为index node,就是索引节点
  • inode表中包含文件系统所有文件列表
  • 一个节点是在一个表项,包含了有关文件的信息(元数据)。
  • 一个文件有且只有一个inode

block是什么?——数据块

  • 文件数据存储在block中
  • 每块block只能存储一个文件
  • block 文件系统的最小存储单位是 1k,2k,4k,2^n

inode与block关系

1.磁盘被分区格式化分区之后,会分为inode和block两部分
2.inode存放文件的属性以及指向文件实体的指针(block的位置)
3.superblock用来存储inode和block的全部信息,包括inode和block的大小,数量,以及block的使用情况。
4.创建了一个文件时会同时创建inode和block,inode用来存储元数据和block指针,block用来存储数据内容。
5.一个block只能被一个文件使用,所以一个block并不是越大越好,当服务器存储的小文件居多,那么block设置的小一点比较好,不会浪费空间。当服务器存储的大数据居多,block设置的大一点比较好。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/607342.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

如何区分APP页面是H5还是原生页面?

刚刚接触手机测试的同学,或多或少都有过这样的疑问:APP页面哪些是H5页面?哪些是原生页面?单凭肉眼,简直太难区分了!我总结了6个小技巧,希望能帮大家答疑解惑。 1、看断网的情况 断开网络,显示…

【生信技能树】拿到表达矩阵之后,如何使用ggplot2绘图系统绘制箱线图?

拿到表达矩阵之后,如何使用ggplot2绘图系统绘制箱线图? 目录 预备知识 绘制箱线图示例 预备知识 1.pivot_longer函数 pivot_longer 是tidyr包中的一个函数,用于将数据框(data frame)从宽格式转换为长格式。在宽格…

CPU、GPU,那NPU是,神经网络到底能做什么!

人工智能时代即将到来。随着人工智能的不断推进,英特尔、AMD和高通等公司也在着眼于各种硬件配置方面。随着NPU(神经网络处理器)的引入,人工智能的应用过程将被加快。 苹果在其芯片中使用NPU已经很多年了,所以NPU并不是…

《深入Linux内核架构》第4章 进程虚拟内存(2)

目录 4.3 内存映射原理 4.4 数据结构 4.4.1 树和链表 4.4.2 虚拟内存区域VMA的表示 4.4.3 相关数据结构 本专栏文章将有70篇左右,欢迎关注,查看后续文章。 本节讲VMA结构体struct vm_area_struct和struct address_space。 4.3 内存映射原理 所有进…

k8s概述及核心组件

一、k8s概述 1.1 引言 docker compose 单机编排工具 有企业在用 docker swarm 能够在多台主机中构建一个docker集群 基本淘汰集群化管理处理工具 容器 微服务封装 dockerfile 编写成镜像 然后进行发布 dockerfile 可以写成shell脚本(函数做调…

【Linux网络编程】HTTPS协议

【Linux网络编程】HTTPS协议 目录 【Linux网络编程】HTTPS协议HTTPS介绍加密常见的加密方式HTTPS的工作过程探究(重点)常见问题完整流程总结 作者:爱写代码的刚子 时间:2024.5.9 前言:本篇博客将会介绍HTTPS协议 HTTPS…

【记录】常见的前端设计系统(Design System)

解释一下设计系统的定义,以及在国内,都有那些优秀的设计系统可以学习,希望可以帮到大家。 什么是设计系统(Design System)? 设计系统(Design System)是一套综合性的指导原则、组件和规则&…

VBA技术资料MF152:列出工作表中所有单元格的注释

我给VBA的定义:VBA是个人小型自动化处理的有效工具。利用好了,可以大大提高自己的工作效率,而且可以提高数据的准确度。“VBA语言専攻”提供的教程一共九套,分为初级、中级、高级三大部分,教程是对VBA的系统讲解&#…

Linux进程——Linux环境变量

前言:在结束完上一篇的命令行参数时,我们简单的了解了一下Linux中的环境变量PATH,而环境变量不只有PATH,关于更多环境变量的知识我们将在本篇展开! 本篇主要内容: 常见的环境变量 获取环境变量的三种方式 本…

GORM数据库连接池对接Prometheus

一、背景与介绍 Golang的database/sql包定了关于操作数据库的相关接口,但是没有去做对应数据库的实现。这些实现是预留给开发者或者对应厂商进行实现的。 其中让我比较关注的是Golang的sql包有没有实现连接池pool的机制呢? 毕竟Golang是静态语言,类似J…

pwn(一)前置技能

以下是pwn中的题目(漏洞)类型: 关于pwn的学习: 一.什么是pwn?(二进制的漏洞) "Pwn"是一个俚语,起源于电子游戏社区,经常在英语中用作网络或电子游戏文化中的…

AI中转站计费平台系统源码一站式解决方案安装说明

AI中转站计费平台系统源码一站式解决方案安装说明 功能 | Features AI 联网功能 AI online searching service 多账户均衡负载 Multi-account load balancing HTTP2 Stream 实时响应功能 HTTP2 Stream real-time response function 节流和鉴权体系 Throttling and authenticati…

GitHub中Asterank源码python修改成C++(本人python不太会)

GitHub - typpo/asterank: asteroid database, interactive visualizations, and discovery tools 主要目的是在进行多元线性回归的时候将枚举型转换为数值型 python: # # The constants used in calculations for the values of asteroids. ## General constants GENERAL_I…

基于Detectron2的计算机视觉实践

书籍:Hands-On Computer Vision with Detectron2: Develop object detection and segmentation models with a code and visualization approach 作者:Van Vung Pham,Tommy Dang 出版:Packt Publishing 书籍下载-《基于Detectr…

.OpenNJet应用引擎实践——从 0-1 体验感受

目录 一. 🦁 写在前面二. 🦁 安装使用2.1 安装环境2.2 配置yum源2.3 安装软件包2.4 编译代码2.5 启动 三. 🦁 使用效果3.1 编辑配置文件3.2 编辑 HTML 代码 四. 🦁 使用感受 一. 🦁 写在前面 现在互联网体系越来越往云…

小丑的身份证和复印件 (BFS + Floyd)

本题链接:登录—专业IT笔试面试备考平台_牛客网 题目: 样例: 输入 2 10 (JOKERjoke #####asdr) 输出 12 思路: 根据题意,要求最短时间,实际上也可以理解为最短距离。 所以应该联想到有关最短距离的算法&…

css z-Index 详解--子元素盖在父元素的兄弟元素上

前置知识 1、z-index 只有在定位元素上才会生效&#xff08;即非static定位的元素上&#xff09; 2、同级元素&#xff0c;无论是z-index 相同还是没设置。后面的元素层级比前面 3、元素上有 transform 属性 z-index 会失效 dom结构如下 // dom部分 <div><div id&quo…

latex algorithm2e 库学习总结

案例1 \documentclass{article}\usepackage{xeCJK} \usepackage[]{algorithm2e} %\usepackage{ctex} % 中文包\begin{document}\renewcommand{\algorithmcfname}{算法} % 把标题设置为“算法” \begin{algorithm…

html table thead打印时带重复表头不生效

今天做一个打印功能时要求每页都带相同的表头&#xff0c;使用的方式是table的thead标签来实现&#xff0c;结果发现thead里边的内容放多了之后只有第一页才会有表头。最后发现问题是 thead的内容不能超过table的25%。

实例分割——Mask R-CNN、YOLOV8、RTMDET、DeepLab四种实例分割算法比对

1.概述 1.1 语义分割与实例分割 实例分割和语义分割都是计算机视觉领域中图像分割的任务&#xff0c;它们在目标和方法上有一些区别&#xff1a; 语义分割&#xff1a; 语义分割的目标是对图像中的每个像素打上类别标签&#xff0c;即识别出图像中每个像素属于哪个预定义的…
最新文章