嵌入式学习day12(LinuxC高级)

news2024/11/18 20:57:25

由于C高级部分比较零碎,各部分之间没有联系,所以学起来比较累,多练习就好了

一丶Linux起源

寻·科普|第二期:聊聊Linux的前世今生

UNIX和linux的区别:

        (1)linux是开发源代码的自由软件.而unix是对源代码实行知识产权保护的传统商业软件。
        (2)UNIX系统大多是与硬件配套的,而Linux则可运行在多种硬件平台上.

了解不同操作系统的内核:
        windows - NT        ubuntu - linux          Android - linux           macOs ios - unix

二丶Linux分层结构

应用层:程序、命令

内核层:五大功能:进程管理、设备管理、内存管理、网络管理、文件系统管理
驱动:字符设备驱动、块设备驱动、网络设备驱动
硬件:鼠标、键盘(字符设备驱动)、硬盘、U盘(块设备驱动)等

三丶Linux命令

1.基本命令

(1).查看ubuntu版本:
          sudo lsb_release -a 或 cat /etc/issue

(2).查看内核版本
         uname -r 或 cat /proc/version

(3).系统关机重启命令
sudo shutdown -h now: 立即关机
sudo shutdown -r now: 立即重启
sudo reboot now: 立即重启
sudo shutdown -h 时间 "提示语句": 定义关机
sudo shutdown -r 时间 "提示语句": 定义重启
通过 shutdown -c: 可以取消定时操作

(4).历史记录

history: 查看历史命令,默认显示的命令行数根据HISTSIZE来决定

echo $HISTSIZE: 将变量的值打印到终端,echo命令作用是打印内容到终端
HISTSIZE=10: 临时修改变量的值(只在当前终端有效)


在家目录下的隐藏文件,通过vi打开:
.bash_history:默认存放2000条历史记录命令的文件
.bashrc :定义HISTSIZE(使用history时默认显示的记录个数)和HISTFILESIZE(.bash_history文件可以存放命令的个数)变量的脚本文件

修改.bashrc文件中HISTSIZE的值,将终端退出:可以永久修改

(5).起别名命令
                 alias: 查看系统中起别名的命令
                 alias 新名='原来的命令': 起别名
                 unalias 新名: 取消别名

2.系统维护命令

(1).man
           man man: 查看man手册

          1 Executable programs or shell commands 可执行程序或shell命令
          2 System calls (functions provided by the kernel) 系统调用
          3 Library calls (functions within program libraries) 库函数

(2).su

          su root: 切换到超级用户
          sudo su 用户名: 切换用户
          退出:exit(或者 ctrl d 快捷键)

(3).df命令
         df -Th: 查看磁盘使用情况

(4).mount
         作用: 文件系统的挂载
         sudo mount -t 设备类型 设备名称 挂载点: 挂载设备
         sudo umount 挂载点: 卸载设备
         注意:卸载时不要在挂载点卸载
补充:
         1.  挂载优盘时,出现u盘识别不出的现象,解决办法:

                     1)虚拟机->设置->usb控制器->兼容usb3.0
                     2)虚拟机->可移动设备->找到自己的u盘->连接
         2.  如果出现u盘类型不匹配的问题

                     sudo apt-get install exfat-fuse exfat-utils

3.用户管理命令

       sudo adduser 用户名: 添加用户

sudo deluser --remove-home 用户名: 删除用户同时删除工作目录

4.进程管理命令

(1).ps
      什么是进程? 就是程序的一次执行过程,是动态的。
      ps -aux: 显示当前系统中运行的进程(包含进程的状态)


      ps -ef: 显示当前系统中运行的进程(包含进程的父进程号PPID)

表头

含义

USER

该进程是由哪个用户产生的。

PID

进程的 ID。

%CPU

该进程占用 CPU 资源的百分比,占用的百分比越高,进程越耗费资源。

%MEM

该进程占用物理内存的百分比,占用的百分比越高,进程越耗费资源。

VSZ

该进程占用虚拟内存的大小,单位为 KB。

RSS

该进程占用实际物理内存的大小,单位为 KB。

TTY

该进程是在哪个终端运行的。其中,tty1 ~ tty7 代表本地控制台终端(可以通过 Alt+F1 ~ F7 快捷键切换不同的终端),tty1~tty6 是本地的字符界面终端,tty7 是图形终端。pts/0 ~ 255 代表虚拟终端,一般是远程连接的终端,第一个远程连接占用 pts/0,第二个远程连接占用 pts/1,依次増长。?是守护进程,也就是一开始启动时系统在后台运行的进程。(后面IO会讲)

STAT

1.  D uninterruptible sleep (usually IO) 不可中断的睡眠态

2.  R running or runnable (on run queue) 运行态

3.  S interruptible sleep (waiting for an event to complete) 可中断的睡眠态

4.  T stopped by job control signal 暂停态

5.  t stopped by debugger during the tracing 因为调试而暂停

6.  X dead (should never be seen) 死亡态

7.  Z defunct ("zombie") process, terminated but not reaped by its parent 僵尸态

8.  < high-priority (not nice to other users) 高优先级

9.  N low-priority (nice to other users) 低优先级

10.  L has pages locked into memory (for real-time and custom IO) 锁在内存中

11.  s is a session leader 会话组组长

12.  l is multi-threaded (using CLONE_THREAD, like NPTL pthreads do)多线程

13.  + is in the foreground process group 前台进程

14.  没有+时,默认是后台进程

15.  I 空闲状态进程

START

该进程的启动时间。

TIME

该进程占用 CPU 的运算时间,注意不是系统时间。

COMMAND

产生此进程的命令名。

(2).top

          动态查看系统中运行的进程

          shift >: 向下翻页   shift <: 向上翻页         q: 退出

(3).修改优先级
        PR = NI + 20
       
NI值范围:-20~19, NI值越小优先级越高
       sudo renice NI值 PID: 改变正在运行进程的优先级

sudo nice -n NI值 启动进程的命令: 以指定的优先级启动进程, 例如:执行 sudo nice -n -20 top

四丶Linux安装工具

1.软件包安装

 (1).软件包管理机制
        debian: deb软件包管理机制
        redhat: rpm软件包管理机制(Red Hat Package Manager)

(2).软件包分类
         二进制软件包:xx.deb           源码包:xx.dsc

(3).软件包管理工具
        dpkg和apt-get
区别:dpkg:离线安装,安装本地包,不能检查软件包的依赖关系,不关系仓库内的软件。
             apt:在线安装,通过仓库获取软件包资源,解决依赖关系,不能安装本地包。A -> B

仓库:托管可安装软件包的公共服务器,用户从服务器获取软件并将其安装至用户计算机。类似于应用商店。

2.dpkg工具

软件包命名:

特点:安装时需要软件包存在,不需要从镜像站点获取软件包, 不需要网络,不能检查软件之间的依赖关系。

dpkg命令:
          sudo dpkg -i 软件包的完整名称:安装软件
          sudo dpkg -r 软件名 :卸载软件
          sudo dpkg -s 软件名 :查看软件的安装状态
          sudo dpkg -P 软件名 :完全卸载
          sudo dpkg -L 软件名 :列出软件目录信息

3.apt工具

特点:安装时不需要软件包存在,需要从镜像站点获取软件包,需要网络,能检查软件之间的依赖关系
apt-get:
           sudo apt-get install 软件名:下载并安装软件
           sudo apt-get remove 软件名:卸载软件
           sudo apt-get --purge remove 软件名:完全卸载
           /var/cache/apt/archives --》 下载的软件的安装包默认的存放路径
           sudo apt-get clean:清除下载的软件包
          sudo apt-get update :更新源
          sudo apt-get upgrade :(升级)更新安装软件
          sudo apt-get download 软件名:下载软件包
          sudo apt-get source 软件名:下载源码包
apt-cache:
          sudo apt-cache show 软件名:获取二进制包的描述信息
          sudo apt-cache policy 软件名:查看软件安装状态
          sudo apt-cache depends 软件名:查看依赖的软件
          sudo apt-cache rdepends 软件名:查看谁依赖我
ping 网址 或 ip地址 ---> 查看虚拟机是否可以上网

4.ubuntu网络配置

1.桥接模式:
              (1) 编辑->虚拟网络编辑器->更改设置->选择vmnet0->桥接模式->桥接的网络适配器(根据主机的网络连接进行选择,当然选择自动也可以)->确定,如果自动不行也可以找到对应的网络适配器。

2)虚拟机->设置->网络适配器->选择桥接模式

nat模式
          (1)编辑->虚拟网络编辑器->更改设置->选择vmnet8->nat模式->确定。

          (2)虚拟机->设置->网络适配器->选择nat模式

五丶shell

1.概念

        shell: 命令行解释器
        shell是贝壳的意思,起到保护作用。那linux的shell可以保护内核。
        作用: 负责把应用程序的输入命令信息解释给操作系统,讲操作系统指令处理后的结果再回馈给应用程序。

2.命令执行的过程

         用户在命令行下命令,开始与Shell进行交互。接着,Shell将用户的命令或按键转化成内核所能够理解的指令控制操作系统做出响应,直到控制相关硬件设备。然后,Shell将输出结果提交给用户。

3.shell 命令格式

         命令名称 选项 参数
         命令名称:必须得有
         选项和参数:可有可无,选项有-符号

4.shell中的特殊字符

(1).通配符

             当用户需要用命令处理一组文件,例如 file1.txt、file2.txt、file3.txt、file4.txt ……,用户不必输入所有文件名。可以使用shell通配符。

通配符

含义

*

匹配任意长度的字符

?

匹配一个长度的字符

[]

匹配其中指定的一个字符

[-]

匹配指定一个字符范围

[^]

除了其中指定的字符均可以

● 用 file_*.txt,匹配到file_aa.txt、file_bb.txt、file_abcd.txt 能匹配到的,file1_cc.txt则匹配不到(命令后面单独使用 * 表示全部,如:rm *:表示删除全部文件)

● 使用file_?.txt,匹配file_1.txt、file_2.txt、file_3.txt是可以匹配到的,file_11.txt测匹配不到

● 使用file_[abc].txt 只能匹配file_a.txt、file_b.txt、file_c.txt
● 使用 file_[a-c].txt 能匹配到file_a.txt、file_b.txt 直到 file_c.txt

● 使用 file_[^abc].txt 除了file_a.txt、file_b.txt、file_c.txt的其他文件

(2).管道 |

            格式: 命令1 | 命令2
            作用:将前一个命令的输出作为下一个命令的输入

cat xxx.c | wc -l --> 将cat输出到终端的内容作为wc -l的输入,计算行数

补充:wc -l 文件名:文件行数

          wc -c 文件夹名:文件字符个数
          wc -m 文件名:计算文件字节大小
          wc -w 文件名:文件单词个数

(3).输入输出重定向

           >文件名:输出重定向,新建模式

           >>文件名:输出重定向,追加模式


           2> 或者&>文件名: 将有命令产生的错误信息输出到文件中


           <文件名:输入重定向

(4).命令置换符 ``

           在英文状态下,在esc按键下面的 ~ 按键, 将一个命令的输出作为另一个命令参数
           格式: 命令1 `命令2`

5.echo 命令

           向终端输出指定内容
           echo 字符串: 向终端输出指定内容
           -n: 不换行输出
           echo "字符串": 原样输出

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

前端模块化-探究webpack loader的原理以及实现常见的loader

前言 本节主要介绍这些插件的基本原理并手写一些常用的 Loader。 本节对应的 demo 可以在这里找到。 什么是 Loader 在 Webpack 中&#xff0c;Loader 是用于对模块的源代码进行转换的工具。Webpack 将一切视为模块&#xff0c;而这些模块可能是各种类型的文件&#xff0c;如…

VSCode编译多个不同文件夹下的C++文件

实际上VSCode编译C文件就是通过向g传递参数实现的&#xff0c;因此即使是不同包下面的cpp文件或者.h文件都是可以通过修改g的编译参数实现&#xff0c;而在VSCode中&#xff0c;task.json文件其实就是在配置g的编译参数&#xff0c;因此我们可以通过修改task.json里面的参数&am…

洛谷 B2145 digit 函数 B2146 Hermite 多项式 题解

题目目录&#xff1a; No.1 B2145 digit 函数 No.2 B2146 Hermite 多项式 OK&#xff0c;开始正文&#xff01; 第一题&#xff1a;B2145 digit 函数 题目描述 在程序中定义一函数 digit(n,k)&#xff0c;它能分离出整数 n 从右边数第 k 个数字。 输入格式 正整数 n …

Topsis法模型(评价类问题)

目录 本文章内容参考&#xff1a; 一. 概念 二. 特点和适用范围 三. 实现步骤 四. 代码实现 本文章内容参考&#xff1a; TOPSIS法模型讲解(附matlab和python代码) 【数学建模快速入门】数模加油站 江北_哔哩哔哩_bilibili 一. 概念 TOPSIS&#xff08;Technique for Or…

让EHS管理更智能,一起来看物联网如何重塑企业EHS管理

随着信息技术的飞速发展&#xff0c;物联网&#xff08;IoT&#xff09;技术正逐步渗透到企业管理的各个领域&#xff0c;特别是在环境、健康与安全&#xff08;EHS&#xff09;管理方面&#xff0c;物联网技术展现出了巨大的潜力和价值。 一、物联网技术在EHS管理中的应用场景…

达梦数据库 逻辑备份还原

达梦的逻辑备份还原 1.背景2.要求3.实验步骤3.1 相关术语3.2 dexp逻辑导出3.2.1 使用dexp工具3.2.2 dexp相关参数含义3.2.3 四种级别导出3.2.3.1 FULL3.2.3.2 OWNER3.2.3.3 SCHEMAS3.2.3.4 TABLES 3.2.4 使用范例3.2.4.1 环境准备3.2.4.2 dexp逻辑导出 3.3 dimp逻辑导入3.3.1 使…

【大模型从入门到精通10】openAI API 提示链的力量1

这里写目录标题 提示链的力量核心概念理解提示链用于清晰说明的类比 实际应用与益处工作流程管理成本效率错误减少动态信息加载 方法学步骤式方法最佳实践 示例设置环境从用户查询中提取相关信息获取详细产品信息 提示链的力量 核心概念 理解提示链 提示链涉及将复杂任务分解…

C++速学day2

xia复习 上一天的学习内容&#xff1a; 重点&#xff1a;1、封装———— 就是对类的抽象 &#xff0c;将一种对象的共性 抽象成一个类。 2、三个函数——-构造函数/复制构造函数/析构函数 注意&#xff1a;析构函数和构造函数的调用顺序刚好相反。 新内容 两个类的关系 …

巨能涨!用AI做沙雕日常图文号,闭眼出大爆款!接个软广3000+!

家人们&#xff01;最近圈子陆续整理了一波在小红书上&#xff0c;适合植入软广的AI小红书商单玩法案例&#xff0c;例如&#xff1a;AI美女博主账号、AI养生博主账号、AI治愈插画Vlog短视频账号等等&#xff0c;接下来也会持续输出更多高价值的软广案例玩法。 今天刚好在刷小…

【python】PyQt5中QButtonGroup的详细用法解析与应用实战

✨✨ 欢迎大家来到景天科技苑✨✨ &#x1f388;&#x1f388; 养成好习惯&#xff0c;先赞后看哦~&#x1f388;&#x1f388; &#x1f3c6; 作者简介&#xff1a;景天科技苑 &#x1f3c6;《头衔》&#xff1a;大厂架构师&#xff0c;华为云开发者社区专家博主&#xff0c;…

正点原子imx6ull-mini-Linux驱动之Linux 网络驱动实验

网络驱动是 linux 里面驱动三巨头之一&#xff0c;linux 下的网络功能非常强大&#xff0c;嵌入式 linux 中也常 常用到网络功能。前面我们已经讲过了字符设备驱动和块设备驱动&#xff0c;本章我们就来学习一下 linux 里面的网络设备驱动。 1&#xff1a;嵌入式网络简介 1.1…

Pandas中高效的“For循环”

循环是我们编程技能中的一项固有技能。当我们熟悉任何编程语言时&#xff0c;循环就会成为一个基本的、易于解释的概念。 在这篇博文中&#xff0c;我们将探索遍历pandas dataframe的各种方法&#xff0c;检查每个循环方法的相关运行时。为了验证循环的有效性&#xff0c;我们…

3D开发工具HOOPS如何实现数字孪生高效的模型设计和分析?

数字孪生技术通过创建物理对象或系统的虚拟模型&#xff0c;实时反映其状态和行为&#xff0c;从而实现监控、优化和预测。这一技术在智能制造、建筑、城市规划等领域有着广泛应用。HOOPS SDK作为一套功能强大的软件开发工具包&#xff0c;为数字孪生技术的实现提供了全面支持。…

【启明智显分享】烹饪机HMI超值之选:个位数价工业级芯片Model3C点亮4.3寸触摸彩屏

一、方案背景 在快节奏的现代生活中&#xff0c;人们对于美食的追求从未停止&#xff0c;但繁琐的烹饪过程却常常让人望而却步。为了满足人们既能轻松享受美味又能节省时间和精力的需求&#xff0c;自动烹饪机应运而生。目前&#xff0c;自动烹饪机发展也越来越成熟&#xff0…

数据结构 - 哈希表

文章目录 前言一、哈希思想二、哈希表概念三、哈希函数1、哈希函数设计原则2、常用的哈希函数 四、哈希冲突1、什么是哈希冲突2、解决哈希冲突闭散列开散列 五、哈希表的性能分析时间复杂度分析空间复杂度分析 前言 一、哈希思想 哈希思想&#xff08;Hashing&#xff09;是计…

振动分析-18-基于振动分析进行故障诊断的思路和步骤

参考树立正确的振动诊断思路 参考振动分析相关知识的储备及振动分析仪的局限性 参考如何进行振动分析诊断(译文) 1 正确的故障诊断意识 我们通常在学习班听到的是大学教授以及专家讲解的故障诊断的基础理论,对于刚接触这个专业的人来说,微分方程和复杂的矩阵却有点让人忘…

数据库篇--八股文学习第十六天| MySQL的执行引擎有哪些?;MySQL为什么使用B+树来作索引;说一下索引失效的场景?

1、MySQL的执行引擎有哪些&#xff1f; 答&#xff1a; MySQL的执行引擎主要负责查询的执行和数据的存储, 其执行引擎主要有MyISAM、InnoDB、Memery 等。 InnoDB引擎提供了对事务ACID的支持&#xff0c;还提供了行级锁和外键的约束&#xff0c;是目前MySQL的默认存储引擎&…

227还原实战(三)

调转符号 为了方便后面处理 &#xff0c;我们先将所有的 二项表达式 进行预处理&#xff0c;将标识符放在左边&#xff0c; 数字放在右边&#xff0c; 比较简单&#xff0c;不多解释 转换逗号表达式 这里还原逗号表达式就要简单很多&#xff0c;主要是还原三元外的逗号表达式…

Agent知识库:功能、原理浅析

随着LLM不断发展&#xff0c;基于LLM的Agent今年来十分火热。Agent知识库不仅可以存储大量的信息&#xff0c;还包含了丰富的规则、算法和模型&#xff0c;是Agent实现智能化决策和行动的关键。本文将介绍Agent知识库的功能、原理以及相关落地应用。 概览 能力 1.Knowledge&a…

UDP端口可达性检测(端口扫描)工具开发

UDP端口可达性检测(端口扫描)工具开发 1、应用场景分析 主机X与主机Y部署在AB双网环境下&#xff0c;两个主机间通过UDP协议进行数据交互。应用程序发送数据时&#xff0c;优先使用A网发送数据&#xff0c;如果A网异常则通过B网发送数据。两个主机应用间没有设置心跳帧 &…