【面经】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?
- 开源性质:Linux是一个开源操作系统,其源代码对于用户和开发者来说是可访问和可修改的。这使得开发者能够针对特定的嵌入式系统进行定制和优化,以满足硬件和应用程序的需求。相比之下,Windows系统不开源或半开源,这限制了开发者对系统的完全控制。
- 可定制性:Linux内核的开源性质使得嵌入式开发者可以根据具体需求定制和裁剪系统,将其精简为适合特定嵌入式设备的最小系统。这种灵活性使得Linux成为嵌入式设备开发的理想选择。而Windows系统由于其庞大的体积和复杂的结构,很难做到如此高度的可定制性。
- 跨平台支持:Linux支持多种硬件架构,包括x86、ARM、MIPS等,可以在不同类型的嵌入式设备上运行。这种跨平台的特性使得开发者可以更方便地在不同的嵌入式平台上进行开发。而Windows系统主要支持x86架构,对于其他架构的支持相对较弱。
- 安全性:Linux系统在设计上注重安全性,通过权限管理、内存保护等机制来保护系统免受攻击和破坏。相比之下,Windows系统在过去曾存在过一些安全漏洞和攻击事件,这在一定程度上影响了其在嵌入式开发领域的应用。
- 丰富的驱动程序和工具链:Linux环境下有丰富的驱动程序和工具链,包括编译器、调试器、模拟器等,这些工具和资源可以满足嵌入式开发的各种需求。而Windows系统虽然也提供了相应的开发工具链,但在某些方面可能不如Linux系统完善。
3、ps的状态
在 Linux 中,进程可以有多种状态。这些状态在
ps
命令的输出中可以通过特定的符号来表示。以下是一些常见的进程状态及其对应的ps
输出中的符号:
R (Running or Runnable):
- 进程正在运行或在运行队列中等待运行。
- 在
ps
中,这通常显示为R
。S (Interruptible Sleep):
- 进程在等待某个条件成立(例如,等待 I/O 操作完成)而处于可中断的睡眠状态。
- 在
ps
中,这通常显示为S
。D (Disk Sleep):
- 进程在等待 I/O 操作完成(通常是磁盘 I/O),此时它不会被中断。
- 在
ps
中,这通常显示为D
。注意,这种状态的进程很少见,因为大多数 I/O 操作都是可中断的。T (Stopped or Traced):
- 进程已被停止(例如,通过
SIGSTOP
信号)或正在被调试器跟踪。- 在
ps
中,这通常显示为T
。Z (Zombie):
- 进程已终止,但其父进程尚未通过
wait()
或类似的系统调用来获取其终止状态。这样的进程也被称为“僵尸进程”。- 在
ps
中,这通常显示为Z
,但注意,ps
的默认输出可能不显示僵尸进程。要查看它们,你可能需要使用特定的选项,如ps -ef | grep defunct
或ps -eo pid,stat,cmd | grep Z
。I (Idle):
- 这个状态在某些版本的 Linux 中可能并不常见,但在某些上下文中,它可能表示进程处于空闲状态。
- 在
ps
中的表示可能因系统而异。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”则表示列出所有的文件详细的权限与属性 (包含隐藏文件,就是文件名第一个字符为“ . ”的文件)
- 第一栏代表文件的类型和权限(10个字符):档案类型、档案拥有者之权限、档案所属群组之权限、其他人之权限
- 第二栏表示有多少文件名链接到此节点(i-node)
- 第三栏表示这个文件(或目录)的“拥有者帐号
- 第四栏表示这个文件的所属群组
- 第五栏为这个文件的容量大小,默认单位为Bytes
- 第六栏为这个文件的创建日期或者是最近的修改日期
- 第七栏为这个文件的文件名
与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文件系统具有以下几个特点:
- 树形结构:Linux文件系统采用树状目录结构,具有单一的根目录(/),所有文件和目录都从根目录开始,一层一层向下延伸。
- 无结构的字符流式文件:Linux中的文件被视为无结构的字符流,这意味着文件内容可以被视为连续的字符序列,而不考虑其内部的结构或格式。
- 动态增长或减少:Linux文件可以动态地增长或减少,即文件的大小可以在使用过程中动态地改变。
- 访问权限控制:文件数据可由文件拥有者设置相应的访问权限而受到保护,这有助于保护文件的安全性和完整性。
- 设备文件:在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设置的大一点比较好。
相关文章:

【面经】Linux
一、高频 1、Linux常见的指令 路径/目录类 cd, mkdir, rmdir, pwd ,ls等重要指令;rmdir 仅能删除空目录,要删除非空目录需使用“ rm -r ”指令;文件类 创建:mkdir文件夹,touch文件移动mv复制cp修改名字mv…...

TriCore:Interrupt 2
今天继续来看看 IR 模块。 名词缩写 缩写全称说明IRInterrupt Router SRService Request 包括: 1. External Resource 2. Internal Resource 3.SW(Software) SPService Privoder 包括: 1. CPU 2. DMA SRNService Request NodeS…...

ollama api只能局域网访问,该怎么破?
安装ollama: ollama离线安装,在CPU运行它所支持的那些量化的模型-CSDN博客文章浏览阅读178次,点赞2次,收藏6次。ollama离线安装,在CPU运行它所支持的哪些量化的模型 总共需要修改两个点,第一:Ollama下载地址;第二:Ollama安装包存放目录。第二处修改,修改ollama安装目…...

规则引擎drools Part5
规则引擎drools Part5 Drools Workbench Drools Workbench是可视化的规则编辑器,用来授权和管理业务规则。workbench的war包下载地址,安装到tomcat中就可以运行了。使用workbench可以在浏览器中创建数据对象、规则文件、测试场景并把规则部署到maven仓…...

API设计之争:一个接口一个职能还是一个页面所需字段?
在软件开发中,设计API接口是一个重要而且复杂的任务。在设计API接口时,一个常见的问题是,是按照每个接口的职能来设计,还是按照每个页面所需的字段来设计? 本文将对这两种设计方法进行比较,并探讨它们的优…...

第一天复习Qt文件读取
Qt文件操作: 1、QFile QTextStream操作文件案例: 1、打开文件 QFile file(absolute filepath | relative path); file.readLine()返回内容长度,如果为-1就是读取失败 file. Close()读取后关闭 file.errorString()返回文件打开发生的错误2、…...

使用非官网购买Chatgpt的api调用
测试代码 from openai import OpenAI client OpenAI(api_key用户密钥) import json import os import timeclass ChatGPT:def __init__(self, user):self.user userself.messages [{"role": "system", "content": "Agent"}]def as…...

通过 Java 操作 redis -- hash 哈希表基本命令
目录 使用命令 hset,hget 使用命令 hexists 使用命令 hdel 使用命令 hkeys,hvals 使用命令 hmget,hmset 关于 redis hash 哈希表类型的相关命令推荐看Redis - hash 哈希表 要想通过 Java 操作 redis,首先要连接上 redis 服务…...

Unity 性能优化之遮挡剔除(Occlusion Culling)(六)
提示:仅供参考,有误之处,麻烦大佬指出,不胜感激! 文章目录 前言一、遮挡剔除是什么?二、静态遮挡剔除的使用步骤1.标记为遮挡剔除对象2.创建Occlusion Area组件3.烘焙4.Occlusion窗口Bake的参数Smallest Oc…...

android——关于app性能优化篇
前言 应用性能优化是指通过各种技术手段和优化策略,提高应用程序的性能,使其能够更高效地运行和响应用户操作。 下面介绍一些常见的应用性能优化方法 一、布局优化 1、减少嵌套 嵌套层数尽量少,使用ConstaintLayout能使层级大大降低尽量使…...

单链表经典算法LeetCode--203.移除链表元素(两种方法解)
1.链接:. - 力扣(LeetCode)【点击即可跳转】 分析此题提供两种思路: 1.遍历原链表,将值为val的节点释放掉(双指针法) 定义一个pcur指针指向头节点,定义一个prev指针指向NULL 需要注…...

MySQL—子查询
目录 ▐ 子查询概述 ▐ 准备工作 ▐ 标量子查询 ▐ 列子查询 ▐ 表子查询 ▐ 多信息嵌套 ▐ 子查询概述 • 子查询也称嵌套查询,即在一个查询语句中又出现了查询语句 • 子查询可以出现在from 后面 或where后面 • 出现在 from 后称表子查询,结…...

ffmpeg 读取流报错: Non-monotonous DTS in output stream
在处理媒体文件时,我们可能会遇到各种错误,其中之一就是“Non-monotonous DTS in output stream 0:1; previous: 36963866, current: 36611997; changing to 36963867. This may result in incorrect timestamps in the output file.”这个错误通常发生在…...

yo!这里是socket网络编程相关介绍
目录 前言 基本概念 源ip&&目的ip 源端口号&&目的端口号 udp&&tcp初识 socket编程 网络字节序 socket常见接口 socket bind listen accept connect 地址转换函数 字符串转in_addr in_addr转字符串 套接字读写函数 recvfrom&&a…...

polars学习-03 数据类型转换
背景 polars学习系列文章,第3篇 数据类型转换。 该系列文章会分享到github,大家可以去下载jupyter文件 仓库地址:https://github.com/DataShare-duo/polars_learn 小编运行环境 import sysprint(python 版本:,sys.version.spli…...

IDC 权威认可!Aloudata 入选金融领域中数据管理分析服务最佳实践案例
近日,国际知名数据咨询机构 IDC 重磅发布了《IDC PeerScape:金融领域中数据管理分析服务最佳实践案例》报告,Aloudata 与招商银行联合打造的 DDH 数据研发运维一体化平台成功入选,Aloudata 的技术、产品实力,以及在金融…...

RSA与AES算法比较及应用场景推荐
摘要:在现代加密通信中,RSA算法和AES算法被广泛应用。RSA算法是一种非对称加密算法,而AES算法是一种对称加密算法。本文将对比分析这两种算法的原理、性能及适用场景,并给出相应的推荐建议。 一、RSA算法简介 RSA算法࿰…...

揭秘 HTTP 代理:增强在线活动的安全性和匿名性
HTTP 代理在保护您的在线隐私、增强安全性以及允许访问受限内容方面发挥着关键作用。了解 HTTP 代理的工作原理以及如何有效地利用它们可以让您掌控自己的在线状态和浏览体验。让我们深入研究 HTTP 代理的世界,探索它们的优势、应用程序以及最大化其效用的最佳实践。…...

【经验】mysql冷热数据分离
使用mysql存储时,为了提升数据的查询效率,降低磁盘存储压力等,我们常常使用"冷热数据分离"分离的方案。即,将数据从所谓的“热表”(即经常有写入和查询操作的活跃表)迁移到“冷表”(用…...

【机器学习-06】Scikit-Learn机器学习工具包进阶指南:机器学习分类模型实战与数据可视化分析
🎩 欢迎来到技术探索的奇幻世界👨💻 📜 个人主页:一伦明悦-CSDN博客 ✍🏻 作者简介: C软件开发、Python机器学习爱好者 🗣️ 互动与支持:💬评论 &…...

蓝桥杯国赛每日一题:日志统计(双指针)
题目描述: 小明维护着一个程序员论坛。现在他收集了一份”点赞”日志,日志共有 N行。 其中每一行的格式是: ts id 表示在 ts时刻编号 id 的帖子收到一个”赞”。 现在小明想统计有哪些帖子曾经是”热帖”。 如果一个帖子曾在任意一个长…...

佛山MES公司(盈致mes系统服务商)助力企业实现智能制造
佛山是中国制造业著名的城市之一,拥有众多制造企业。随着科技的不断发展和智能制造的兴起,越来越多的企业开始意识到数字化生产管理的重要性,MES制造执行系统作为智能制造的关键技术之一,受到了越来越多企业的关注和应用。 在佛山…...

算法设计课第五周(贪心法实现活动选择问题)
目录 一、【实验目的】 二、【实验内容】 三、实验源代码 一、【实验目的】 (1)熟悉贪心法的设计思想 (2)理解贪心法的最优解与正确性证明之间的关系 (3)比较活动选择的各种“贪心”策略,…...

Ubuntu20.04右键打不开终端
今天用virtualbox安装了ubuntu20.04 问题:右键打开终端,怎么也打开不了! 点了也没反应,或者鼠标转小圈圈,然后也没有反应… 解决方法: 1、Ctrl Alt F6 先切换到终端访问界面 mac电脑 Ctrl Alt F6 …...

XML元素
XML 元素是XML文档中的基本组成单位,它由开始标签、结束标签和内容组成,格式如下: <element>content</element>常见的XML元素包括: 根元素(Root Element):XML文档中的最外层元素&…...

融入新科技的SLM27211系列 120V, 3A/4.5A高低边高频门极驱动器兼容UCC27284,MAX15013A
SLM27211是高低边高频门极驱动器,集成了120V的自举二极管,支持高频大电流的输出,可在8V~17V的宽电压范围内驱动MOSFET,独立的高、低边驱动以方便控制,可用于半桥、全桥、双管正激和有源钳位正激等拓。有极好的开通、关…...

代码随想录算法训练营Day 38| 动态规划part01 | 理论基础、509. 斐波那契数、70. 爬楼梯、746. 使用最小花费爬楼梯
代码随想录算法训练营Day 38| 动态规划part01 | 理论基础、509. 斐波那契数、70. 爬楼梯、746. 使用最小花费爬楼梯 文章目录 代码随想录算法训练营Day 38| 动态规划part01 | 理论基础、509. 斐波那契数、70. 爬楼梯、746. 使用最小花费爬楼梯理论基础一、常规题目二、解题步骤…...

CSS拟物按钮
<div class"btn">F</div>.btn {margin: 150px 0 0 150px;display: flex;justify-content: center;align-items: center;width: 100px;height: 100px;background-color: #fff;border-radius: 20px;font-size: 50px;color: #333;/* 禁止选中文本 */user-se…...

websevere服务器从零搭建到上线(三)|IO多路复用小总结和服务器的基础框架
文章目录 epollselect和poll的优缺点epoll的原理以及优势epoll 好的网络服务器设计Reactor模型图解Reactor muduo库的Multiple Reactors模型 epoll select和poll的优缺点 1、单个进程能够监视的文件描述符的数量存在最大限制,通常是1024,当然可以更改数…...

解决宝塔Nginx和phpMyAdmin配置端口冲突问题
问题描述 在对基于宝塔面板的 Nginx 配置文件进行端口修改时,我注意到 phpMyAdmin 的端口配置似乎也随之发生了变化! 解决方法 官方建议在处理 Nginx 配置时,应避免直接修改默认的配置文件,以确保系统的稳定性和简化后续的维护…...