嵌入式学习day12(LinuxC高级)

由于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.rhkb.cn/news/394307.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Python学习(2):在单机机器学习,使用Dask实现鸢尾数据集 Iris 的分类任务

目录 一、源码来源 二、鸢尾花数据集的品种分类 1、数据处理步骤 &#xff08;1&#xff09;数据集加载 &#xff08;2&#xff09;准备特征和标签 &#xff08;3&#xff09;训练集和测试集划分 2、安装必需的软件包 3、运行程序 三、信用卡欺诈数据集检测信用卡交易…

【VScode】如何在anaconda虚拟环境中打开vscode项目

文章目录 【必备知识】打开anaconda虚拟环境切换到项目工作目录激活anaconda虚拟路径让vscode从当前目录打开 【必备知识】 anaconda环境变量配置及配置python虚拟环境 https://blog.csdn.net/xzzteach/article/details/140621596 打开anaconda虚拟环境 切换到项目工作目录 …

LabVIEW液压传动系统

开发了一种高效的液压传动系统&#xff0c;其特点在于采用LabVIEW软件与先进的硬件配合&#xff0c;实现能量的有效回收。此系统主要应用于工业机械中&#xff0c;如工程机械和船机械等&#xff0c;通过优化液压泵和马达的测试台设计&#xff0c;显著提高系统的能效和操作性能。…

SpringBoot 集成 Sharding-JDBC 实现读写分离、分库分表

文章目录 一、Sharding-JDBC的应用场景二、SpringBoot 集成 Sharding-JDBC2.1、前期准备2.2、导入pom.xml依赖包2.3、结构代码实现2.3.1、MybatisPlusConfig&#xff08;分页插件&#xff09;2.3.2、TOrder&#xff08;订单对象&#xff09;2.3.3、TOrderMapper&#xff08;订单…

一样都是虚拟化技术,堆叠和M-LAG差异在哪?

号主&#xff1a;老杨丨11年资深网络工程师&#xff0c;更多网工提升干货&#xff0c;请关注公众号&#xff1a;网络工程师俱乐部 早上好&#xff0c;我的网工朋友。 随着信息技术的快速发展&#xff0c;网络架构也在不断地演进以满足日益增长的需求。 其中&#xff0c;虚拟化技…

没有mac电脑ios上架截屏截图的最新方法

很多人使用uniapp或其他跨平台框架开发ios的app&#xff0c;上架的时候都会遇到一个问题&#xff0c;上架的时候需要各种尺寸的设备来做ios截屏&#xff0c;比如目前最新的要求是&#xff0c;需要对6.7寸、6.5寸和5.5寸的iphone进行截屏&#xff0c;假如支持ipad则还需要对ipad…

java之拼图小游戏(开源)

public class LoginJFrame extends JFrame {//表示登录界面&#xff0c;以后所有跟登录相关的都写在这里public LoginJFrame() {//设置界面的长和宽this.setSize(603,680);//设置界面的标题this.setTitle("拼图登陆界面");//设置界面置顶this.setAlwaysOnTop(true);/…

兼容性测试详解

目录 前言1. 兼容性测试的定义和重要性1.1 兼容性测试的定义1.2 兼容性测试的重要性 2. 兼容性测试的类型2.1 跨浏览器测试2.1.1 跨浏览器测试的挑战2.1.2 跨浏览器测试的方法 2.2 跨平台测试2.2.1 跨平台测试的挑战2.2.2 跨平台测试的方法 3. 兼容性测试的步骤和策略3.1 测试计…

必了解的 20 个 AI 术语解析(下)

AI 领域的基础概念和相关技术有很多&#xff0c;这篇文章里&#xff0c;作者就深入浅出地介绍了相应的内容&#xff0c;感兴趣的同学们&#xff0c;不妨来看一下。 必了解的 20 个 AI 术语解析&#xff08;下&#xff09;© 由 ZAKER科技 提供 本文专为非技术背景的 AI 爱…

【源码+文档+调试讲解】活力健身馆管理系统

摘 要 活力健身馆管理系统的目的是让使用者可以更方便的将人、设备和场景更立体的连接在一起。能让用户以更科幻的方式使用产品&#xff0c;体验高科技时代带给人们的方便&#xff0c;同时也能让用户体会到与以往常规产品不同的体验风格。 与安卓&#xff0c;iOS相比较起来&am…

html+css 实现hover选择按钮

前言&#xff1a;哈喽&#xff0c;大家好&#xff0c;今天给大家分享htmlcss 绚丽效果&#xff01;并提供具体代码帮助大家深入理解&#xff0c;彻底掌握&#xff01;创作不易&#xff0c;如果能帮助到大家或者给大家一些灵感和启发&#xff0c;欢迎收藏关注哦 &#x1f495; 目…

【Android】跨程序共享数据——内容提供器初识

跨程序共享数据——探究内容提供器 内容提供器的简介 主要用于在不同的应用程序之间实现数据共享的功能&#xff0c;它提供了一套完整的机制,允许一个程序访问另一个程序中的数据,同时还能保证被访数据的安全性。目前,使用内容提供器是Android实现跨程序共享数据的标准方式。…

opencv-图像透视变换

透射变换是视角变化的结果&#xff0c;是指利用透视中心&#xff0c;像点&#xff0c;目标点共线的条件&#xff0c;按透视旋转定律使承影面(透视面)绕迹线(透视轴旋转某一角度&#xff0c;破坏原有的投影光束&#xff0c;仍能保持承影面上投影几何图形不变的变化) 它的本质将图…

【nginx】解决k8s中部署nginx转发不会自动更新域名解析启动失败的问题

文章目录 1. 问题2.解决办法3.扩展说明3.1 DNS解析阶段划分3.2 问题说明3.2.1 先看/etc/resolv.conf说明3.2.2 针对第一个问题3.2.3 针对第二个问题 【后端】NginxluaOpenResty高性能实践 参考&#xff1a; https://blog.csdn.net/u010837612/article/details/123275026 1. 问…

【二分查找】3143. 正方形中的最多点数

本文涉及的基础知识点 C二分查找 LeetCode3143. 正方形中的最多点数 给你一个二维数组 points 和一个字符串 s &#xff0c;其中 points[i] 表示第 i 个点的坐标&#xff0c;s[i] 表示第 i 个点的 标签 。 如果一个正方形的中心在 (0, 0) &#xff0c;所有边都平行于坐标轴&…

【数据结构入门 】栈

目录 前言 一、栈的概念及结构 二、栈的实现 1. 栈的声明 2.初始化栈 3. 栈的销毁 4.判断是否为空栈 5.入栈&#xff08;只能插入栈顶元素&#xff09; 6. 出栈&#xff08;只能从栈顶删除&#xff09; 7.栈的大小 8.获取栈顶元素 总结 前言 在计算机科学中&#xf…

【MySQL 01】在 Ubuntu 22.04 环境下安装 MySQL

文章目录 &#x1f308; 1. 说明&#x1f308; 2. 卸载不必要的环境&#x1f308; 3. 安装 MySQL&#x1f308; 4. 启动和关闭 MySQL 服务&#x1f308; 5. 临时登录 MySQL&#x1f308; 6. 设置 MySQL 密码&#x1f308; 7. 配置 MySQL &#x1f308; 1. 说明 在安装与卸载中…

Python面试宝典第29题:袋鼠过河

题目 一只袋鼠要从河这边跳到河对岸&#xff0c;河很宽&#xff0c;但是河中间打了很多桩子。每隔一米就有一个桩子&#xff0c;每个桩子上都有一个弹簧&#xff0c;袋鼠跳到弹簧上就可以跳得更远。每个弹簧力量不同&#xff0c;用一个数字代表它的力量&#xff0c;如果弹簧力量…

Maven实战(五)- Nexus 私服安装与使用

Maven实战&#xff08;五&#xff09;- Nexus 私服安装与使用 文章目录 Maven实战&#xff08;五&#xff09;- Nexus 私服安装与使用1.安装Nexus1.1.下载安装包1.2.Nexus启动命令1.3.登陆Nexus 2.仓库与仓库组2.1.内置仓库2.2.仓库分类2.3.创建宿主仓库2.4.创建代理仓库2.5.创…

CSS基础知识day4

目录 1. 浮动 1.1 传统网页布局的三种方式 1.2 标准流&#xff08;普通流/文档流&#xff09; 1.3 为什么需要浮动&#xff1f; 1.4 什么是浮动&#xff1f; 1.5 浮动特性&#xff08;重难点&#xff09; 1.6 浮动元素经常和标准流父级搭配使用 2.常见网页布局 2.1 常…