情景题之小明的Linux实习之旅:linux实战练习1(下)【基础命令,权限修改,日志查询,进程管理...】

小明的Linux实习之旅:基础指令练习情景练习题下

    • 前景提要
    • 小明是怎么做的
      • 场景1:初识Linux,创建目录和文件
      • 场景2:权限管理,小明的权限困惑
      • 场景3:打包与解压,小明的备份操作
      • 场景4:使用Grep,小明的搜索技能
      • 场景5:系统服务管理,小明的首次接触
        • ==小明笔记大公开:==
      • 场景6:进程管理,小明的多任务处理
        • ==小明笔记大公开:==
      • 场景7:定时任务与系统状态
        • ==小明笔记大公开:==
        • ==小明笔记大公开之`uptime`命令:==
        • ==小明笔记大公开之关于内存:==
        • ==小明笔记大公开之`uptime`命令:==
        • ==小明笔记大公开之`top`命令:==
      • 场景8:dd命令,小明的惊险操作
        • ==小明的提醒:==

前景提要

小明刚刚开始他的Linux测试开发实习。第一天,他的leader给了他一系列任务,帮助他熟悉Linux命令行操作。以下是小明的冒险故事。

小明是怎么做的

场景1:初识Linux,创建目录和文件

  1. 小明的导师要求他创建一个项目目录,并在其中创建一个README文件。

    mkdir ~/project     #make directory建立目录
    cd ~/project    #change directory,改变目录或切换到另一个文件夹
    touch README.md    #碰到文件
    
  2. 小明在README.md中写下了项目简介,但不小心写错了内容。

    vi README.md
    # 按i进入插入模式,输入“这是小明的第一个项目。”
    # 但写成了“这是小明的第一个错误。”
    # 按Esc键,输入:wq保存并退出
    
  3. 小明发现写错了,需要修改内容。

    vi README.md
    # 按i进入插入模式,将“错误”改为“项目”
    # 按Esc键,输入:wq保存并退出
    
  4. 导师检查后,认为小明的描述还不够详细,要求他再添加一些信息。

    echo "项目描述:这是一个用于学习Linux基本命令的项目。" >> README.md
    cat README.md     #concatenate(连锁,用于连接并显示文件内容)
    

小明的电脑界面:
小明的界面

场景2:权限管理,小明的权限困惑

  1. 导师提醒小明要注意文件权限管理,要求他将README.md的权限修改为755。

    chmod 755 README.md    #change mode改变权限
    ls -l README.md        #list(列出目录内容)
    
  2. 导师还要求小明将项目目录的所有者改为root。

    sudo chown root:root ~/project   
    #superuser do,用于执行需要超级用户(root)权限的命令,而不需要实际切换到root用户
    #change owner改变所有者
    ls -ld ~/project   #d:directory,表示只显示目录的信息不显示内部文件(夹)
    

3.导师刚才说错了,他是要确认该项目目录不是root,因为之后需要进行一些写入操作。小明于是默默地将项目目录的所有者改回来。

  •   groups christine  #确认原来默认群组是否也是christine(我的用户名)# 结果:christine : christine[christine@localhost rongyi_project]$ sudo chown # 结果:christine:christine ~/rongyi_project[christine@localhost rongyi_project]$ ls -ld ~/rongyi_project# 结果: drwxrwxr-x. 2 christine christine 68 6月   9 00:46 /home/christine/rongyi_project
    

小明的电脑界面:
在这里插入图片描述

场景3:打包与解压,小明的备份操作

  1. 导师告诉小明要定期备份项目目录,于是小明打包了整个项目目录。

    #确保回到home页面
    cd ~
    # 使用 tar 命令来打包目录时,压缩文件会被存放在执行命令时所在的目录中。
    tar -cvf project_v1.tar project   #区别~/project
    ls -lh project_v1.tar
    
  2. 一天,小明需要恢复之前的备份,于是他解压了备份文件。

    mkdir ~/backup #新建一个备份目录用来放解压文件
    tar -xvf project_v1.tar -C backup   #-C一定是大写,tar方法敏感
    cd backup
    ls
    

小明的电脑界面:
在这里插入图片描述

场景4:使用Grep,小明的搜索技能

  1. 小明需要在项目目录中查找所有包含“项目”字样的文件。

    grep -r "项目" ~/project
    # grep:文本搜索工具,允许你使用正则表达式来搜索文本。
    # -r:递归搜索,即搜索指定目录及其所有子目录中的文件。
    
  2. 导师要求他找出README.md文件中所有包含“描述”字样的行。

    grep "描述" ~/project/README.md
    

小明的电脑界面:
在这里插入图片描述

场景5:系统服务管理,小明的首次接触

  1. 导师让小明检查防火墙状态,并确保它是开启的。

    sudo systemctl status firewalld
    sudo systemctl start firewalld
    
  2. 导师让小明启动MySQL服务并查看其状态。

    sudo systemctl start mysql
    sudo systemctl status mysql
    
  3. 小明还需要启动Redis服务并检查其状态。

    sudo systemctl start redis
    sudo systemctl status redis
    
  4. 最后,导师让小明查看网络接口的状态。

    ifconfig
    

小明的电脑界面:
在这里插入图片描述

小明笔记大公开:

systemctlsystemd的控制工具(control tool)的缩写。systemd是一个初始化系统(init system)和用户空间(userspace)的系统管理器,用于管理系统资源和服务。

  • systemctl start <service>:启动一个服务
  • systemctl stop <service>:停止一个服务
  • systemctl restart <service>:重启一个服务
  • systemctl status <service>:查询一个服务的状态
  • systemctl enable <service>:在系统启动时自动启动一个服务
  • systemctl disable <service>:在系统启动时禁用一个服务的自动启动

场景6:进程管理,小明的多任务处理

  1. 小明查看了系统中所有正在运行的进程。

    ps -ef
    
  2. 小明搜到了一个排序方法,发现有一个进程占用了大量内存资源,于是他结束了该进程。。

    ps aux --sort=-%mem   #按内存使用量排序:通过管道和 sort 命令按 %MEM 或 RSS 列排序,找到内存占用最高的进程。# kill <PID>    #新手不要学小明,容易坏事  终止指定PID
    
  3. 小明根据进程名称结束了一个测试进程。

    pkill test_process  #终止指定进程名
    
小明笔记大公开:
  • UID: 用户ID。显示了哪个用户拥有该进程。例如,root 表示该进程是由 root 用户拥有的。
  • PID: 进程ID。这是一个唯一的数字,用于标识系统中的每个进程。
  • PPID: 父进程ID。这是创建该进程的进程的PID。
  • C: CPU 使用率。这表示进程最近的 CPU 使用率,通常是一个介于 0.0(没有使用)和 100.0(完全使用)之间的十进制数。但在这里,由于 ps 命令的默认输出格式,它可能只是一个简单的数字,代表优先级。
  • STIME: 启动时间。这显示了进程开始运行的时间。
  • TTY: 终端类型。通常表示进程在哪个终端上运行,或者如果没有关联到终端,则可能显示为 ?
  • TIME: CPU 时间。这显示了进程自启动以来所使用的 CPU 时间总量。
  • CMD: 命令。这显示了启动进程的命令名或命令行。

常见的:

  • systemd 是系统的初始化系统和服务管理器,负责启动和管理系统进程。
  • kthreaddksoftirqdkworkermigrationrcu_bhrcu_sched 都是内核线程,它们处理系统的低级任务,如中断、调度和其他内核功能。这些通常不由用户直接管理。

场景7:定时任务与系统状态

  1. 导师要求小明设置一个定时任务,每天备份项目目录。

    crontab -e
    # 添加以下行以每天午夜备份项目目录:
    # 0 0 * * * tar -cvf ~/project_v1_$(date +\%F).tar ~/rongyi_project
    
  2. 小明查看了当前用户的所有定时任务。

    crontab -l
    
小明笔记大公开:

crontab 是由 “cron” 和 “tab” 两个单词组成的缩写。

  1. cron:这是 Unix 和 Linux 系统中用于定时执行任务的守护进程(daemon)的名称。它会在后台运行,并每分钟检查是否有预定的作业需要执行。这些作业通常被称为 “cron jobs”。
  2. tab:这里可以理解为表格(table)的简写,因为 crontab 文件实际上是一个用于存储和管理定时任务的列表或表格。

因此,crontab 的整体意思是“cron的表格”或“cron的任务列表”。

crontab 文件中,每一行代表一个任务,包含了该任务的时间设置和要执行的命令或脚本。这些时间设置可以精确到分钟、小时、日期、月份和星期等不同的时间单位。

  1. 小明查看了系统运行时间和负载信息。

    uptime
    
小明笔记大公开之uptime命令:

显示系统已经运行了多长时间、当前有多少用户登录、以及系统在过去的 1 分钟、5 分钟和 15 分钟内的平均负载。

[christine@localhost ~]$ uptime

06:08:38 up 19:35, 5 users, load average: 0.11, 0.22, 0.26

在上一行小明得到结果中:

  • 06:08:38:当前的系统时间。
  • up 19:35:系统已经运行了 19 小时 35 分钟。(看得出小明很努力,忘了断开)
  • 5 users:当前有 5 个用户登录到系统。
  • load average: 0.11, 0.22, 0.26:系统在过去的 1 分钟、5 分钟和 15 分钟内的平均负载。

负载平均值是一个表示系统负载的度量,但它不是直接表示 CPU 使用率或正在运行的进程数量。它实际上是系统中处于可运行(或等待运行)状态的进程队列的平均长度。负载值越低,表示系统越空闲;负载值越高,表示系统越繁忙。

  • 0.11:过去 1 分钟内的平均负载。
  • 0.22:过去 5 分钟内的平均负载。
  • 0.26:过去 15 分钟内的平均负载。

以小明的这个情况,负载值都很低,表示系统目前很空闲,有足够的处理能力来处理额外的任务。

  1. 小明查看了系统内存使用情况。
free -h
小明笔记大公开之关于内存:

当运行 free -h 命令时,查看系统上的内存使用情况,其中 -h 选项表示“human-readable”,即以人类可读的格式(如 G、M)显示结果。

[christine@localhost ~]$ free -h
total used free shared buff/cache available
Mem: 972M 580M 64M 124M 327M 65M
Swap: 2.0G 496M 1.5G

  • Mem: 这部分显示了物理内存(RAM)的使用情况。
    • total: 总的物理内存大小,这里是 972M(972 兆字节)。
    • used: 当前已使用的物理内存,这里是 580M。
    • free: 当前未使用的物理内存,这里是 64M。
    • shared: 被多个进程共享的内存量,这里是 124M。
    • buff/cache: 缓存和缓冲区使用的内存量,这部分内存可以被回收以满足应用程序的需求,而不必从磁盘读取数据。这里是 327M。
    • available: 估计的、在不交换出的情况下,可以分配给应用程序的内存量。这是 “free” 和 “buff/cache” 的一个估计值,考虑了它们被回收的可能性。这里是 65M。
  • Swap: 这部分显示了交换空间(swap space)的使用情况。
    • total: 总的交换空间大小,这里是 2.0G(2 吉字节)。
    • used: 当前已使用的交换空间,这里是 496M。
    • free: 当前未使用的交换空间,这里是 1.5G。

从小明的输出中,可以看到物理内存的大部分(超过一半)已经被使用,但交换空间的使用量相对较少(不到四分之一)。如果这个系统开始大量使用交换空间,那么性能可能会受到影响,因为从磁盘读取数据通常比从 RAM 读取要慢得多。不过,在这个例子中,系统似乎还有足够的 RAM 和交换空间来处理当前的工作负载。

  1. 小明查看了磁盘使用情况。
df -h
小明笔记大公开之uptime命令:

当运行 df -h 命令时,你正在查看文件系统的磁盘空间使用情况。-h 选项表示“human-readable”,即以人类可读的格式(如 G、M)显示结果。

[christine@localhost ~]$ df -h
文件系统 容量 已用 可用 已用% 挂载点
/dev/sda3 38G 5.8G 32G 16% /
devtmpfs 471M 0 471M 0% /dev
tmpfs 487M 0 487M 0% /dev/shm
tmpfs 487M 15M 472M 4% /run
tmpfs 487M 0 487M 0% /sys/fs/cgroup
/dev/sda1 297M 147M 151M 50% /boot
tmpfs 98M 4.0K 98M 1% /run/user/42
tmpfs 98M 32K 98M 1% /run/user/1000

  • 文件系统:文件系统的名称,通常与挂载点或设备关联。
  • 容量:文件系统的总容量。
  • 已用:已使用的磁盘空间。
  • 可用:剩余的磁盘空间。
  • 已用%:已使用的磁盘空间的百分比。
  • 挂载点:文件系统被挂载到哪个目录。

在你的输出中:

  • /dev/sda3 是主要的根文件系统(root filesystem),它位于 sda 磁盘的第三个分区上,总共有 38G 的空间,已经使用了 5.8G,剩余 32G,使用了 16% 的空间,并挂载在根目录 / 下。
  • devtmpfs 和多个 tmpfs 是临时文件系统,用于存储临时文件或作为内存中的文件系统使用。这些文件系统通常不会占用硬盘空间,而是使用 RAM。从输出中可以看出,它们几乎没有被使用。
  • /dev/sda1/boot 分区,用于存放引导加载器(如 GRUB)和内核文件。这个分区总共有 297M 的空间,已经使用了 147M,剩余 151M,使用了 50% 的空间。
  • /run/user/42/run/user/1000 是为特定用户(ID 为 42 和 1000 的用户)提供的临时目录,通常用于存储会话特定的文件。这些目录也没有被大量使用。

从输出中,可以看到主要的文件系统和引导分区都有足够的可用空间。如果小明看到任何文件系统的已用百分比接近或超过 100%,那就需要采取措施来释放空间或扩展文件系统的容量。

  1. 小明使用top命令实时查看系统资源使用情况。
top
小明笔记大公开之top命令:

用于实时监视系统的动态运行状况。当运行 top 命令时,它会显示系统中各个进程的资源占用情况,包括 CPU 使用率、内存占用、运行时间等。同时,top 还会更新这些信息,以便可以看到系统的实时状态。

输出解释:

  • 第一行:显示系统时间、系统运行时间、登录用户数、系统负载(最近1分钟、5分钟、15分钟的平均值)。
  • 第二行:显示进程总数、正在运行的进程数、休眠的进程数、停止的进程数、僵尸进程数。
  • 第三行:显示 CPU 状态,包括用户空间占用 CPU 百分比、内核空间占用 CPU 百分比、空闲 CPU 百分比、等待 I/O 操作的 CPU 百分比、硬中断和软中断占用的 CPU 百分比。
  • 第四行:显示物理内存总量、已使用的物理内存、空闲的物理内存、已缓冲的内存。
  • 第五行:显示交换空间总量、已使用的交换空间、空闲的交换空间。

接下来是进程列表,每个进程都有一行信息,包括进程 ID、用户、优先级、CPU 占用率、内存占用、进程状态等。

常用交互命令:

top 运行过程中,可以按以下键进行交互:

  • P:按 CPU 使用率排序。
  • M:按内存使用量排序。
  • N:以 PID 顺序排序。
  • T:按 CPU 时间排序。
  • R:对当前排序进行反转。
  • k:杀死一个进程(需要输入 PID)。
  • q:退出 。
  • h:显示帮助信息。

注意了:

  • top 命令提供的信息是实时的,所以它会持续更新。
  • 如果你发现某个进程的 CPU 或内存占用过高,可能需要进一步检查该进程。
  • 在使用 top 时,要注意系统负载和 CPU 使用率,以确保系统没有过载或运行缓慢。

场景8:dd命令,小明的惊险操作

*这几步不用跟着做,容易出问题,了解即可

  1. 小明使用dd命令备份数据。

    sudo dd if=/dev/sda of=~/sda_backup.img bs=4M
    # dd 命令用于低级复制和转换文件,在这里,它被用来复制整个硬盘。名称来源于 "data duplicator" 或 "disk dump" 的缩写
    # if 是 "input file" 的缩写。of 是 "output file" 的缩写。bs 是 "block size" 的缩写。
    # if=/dev/sda: 这是 dd 命令的一个选项,指定输入文件(或设备)。
    # 注意:/dev/sda 通常指的是整个硬盘,而不是某个分区(如 /dev/sda1)。
    # bs=4M是 dd 命令的块大小(block size)选项。指定了每次读取和写入的块大小为 4MB,可以提高复制大文件的效率。
    
小明的提醒:

警告:这条命令极其危险,因为它会覆盖 ~/sda_backup.img 文件(如果它已经存在),并且如果错误地指定了 ifof 参数,它可能会导致数据丢失。在执行此类命令之前,请确保你完全理解它的工作原理,并已经采取了适当的预防措施(如备份)。

此外,对于备份整个硬盘,更安全和更常见的方法是使用专业的磁盘镜像工具,如 ddrescue(它可以处理坏扇区)或图形界面的工具,如 CloneZilla。

  1. 小明试图恢复数据,但不小心输入了错误的输出路径,导致系统崩溃。
sudo dd if=~/sda_backup.img of=/wrong/path bs=4M
# 系统崩溃,恢复重启后导师解释了错误的原因
  1. 小明再试一次,这次成功恢复了数据。
sudo dd if=~/sda_backup.img of=/dev/sda bs=4M

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

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

相关文章

【思考】Vue2响应丢失、$set

【思考】Vue2响应丢失、$set vue2响应丢失情况复现原因解决总结 vue2响应丢失情况复现 场景&#xff1a;直接通过数组下标去修改数组造成响应丢失 <template><div><p v-for"(item, index) in list" :key"index">{{item}}</p><…

渗透测试模拟实战(二)-BlueCMS平台

渗透测试 渗透测试是维护网络安全的重要组成部分&#xff0c;可以帮助组织识别并修复潜在的安全漏洞&#xff0c;减少被恶意攻击的风险。然而&#xff0c;进行渗透测试时必须遵守法律和道德规范&#xff0c;确保所有活动都在授权范围内进行。 环境部署&#xff1a; study2016、…

【优选算法】优先级队列 {优先级队列解决TopK问题,利用大小堆维护数据流的中位数}

一、经验总结 优先级队列&#xff08;堆&#xff09;&#xff0c;常用于在集合中筛选最值或解决TopK问题。 提示&#xff1a;对于固定序列的TopK问题&#xff0c;最优解决方案是快速选择算法&#xff0c;时间复杂度为O(N)比堆算法O(NlogK)更优&#xff1b;而对于动态维护数据流…

linux 网桥学习

前言&#xff1a; 本文来学习一下linux网桥概念和网桥配置 1. linux网桥概念 网桥&#xff0c;类似于中继器&#xff0c;连接局域网中两个或者多个网段。它与中继器的不同之处就在于它能够解析它收发的数据&#xff0c;读取目标地址信息&#xff08;MAC&#xff09;&#xff…

立创EDA专业版设置位号居中并调整字体大小

选择某一个器件位号&#xff0c;右键->查找&#xff1a; 选择查找全部&#xff1a; 下面会显示查找结果&#xff1a; 查看&#xff0c;所有的位号都被选中了&#xff1a; 然后布局->属性位置&#xff1a; 属性位置选择中间&#xff1a; 然后位号就居中了 调整字体大小&a…

微信小程序学习笔记(1)

文章目录 一、文件作用app.json&#xff1a;project.config.json:sitemap.json页面中.json 二、项目首页三、语法**WXML**和**HTML**WXSS 和CSS的区别小程序中.js文件的分类 一、文件作用 app.json&#xff1a; 当前小程序的全局配置&#xff0c;包括所有页面路径、窗口外观、…

文件的基础必备知识(初学者入门)

1. 为什么使用文件 2. 什么是文件 3. 二进制文件和文本文件 4. 文件的打开和关闭 1.为什么使用文件 我们写的程序数据是存储在电脑内存中&#xff0c;如果程序退出&#xff0c;内存回收&#xff0c;数据就丢失&#xff0c;等程序再次运行时&#xff0c;上次的数据已经消失。面…

每日复盘-20240607

今日关注&#xff1a; 这几天市场环境不好&#xff0c;一直空仓。 六日涨幅最大: ------1--------605258--------- 协和电子 五日涨幅最大: ------1--------605258--------- 协和电子 四日涨幅最大: ------1--------605258--------- 协和电子 三日涨幅最大: ------1--------0…

入侵报警系统的智慧核心——ARMxy工控机深度应用

智能安防领域高清视频监控、人脸识别门禁系统以及入侵报警系统的智能化升级&#xff0c;正以前所未有的速度推动着行业的变革。在这场变革中&#xff0c;ARMxy工业计算机以其卓越的性能、高度的灵活性及强大的集成能力&#xff0c;成为了众多安防解决方案中的核心组件。 高清视…

BC11 学生基本信息输入输出

BC11 学生基本信息输入输出 废话不多说上题目&#xff1a; 这道题表面上很简单&#xff0c;但是里面有很重要的点先给大家上正确的代码&#xff1a; #include<stdio.h> int main() {int stu 0;float c 0;float English 0;float math 0;scanf("%d;%f,%f,%f"…

AI大模型日报#0610:港大等1bit大模型“解决AI能源需求”、谷歌开源TimesFM时序预测模型

导读&#xff1a;AI大模型日报&#xff0c;爬虫LLM自动生成&#xff0c;一文览尽每日AI大模型要点资讯&#xff01;目前采用“文心一言”&#xff08;ERNIE 4.0&#xff09;、“零一万物”&#xff08;Yi-Large&#xff09;生成了今日要点以及每条资讯的摘要。欢迎阅读&#xf…

Jmeter分布式、测试报告、并发数计算、插件添加方式、常用图表

Jmeter分布式 应用场景 当单个测试机无法模拟用户要求的业务场景时&#xff0c;可以使用多台测试机进行模拟&#xff0c;就是Jmeter的分布 式测试。 Jmeter分布式执行原理 Jmeter分布测试时&#xff0c;选择其中一台作为控制机&#xff08;Controller&#xff09;&#xff0c…

Spring5

文章目录 1. Spring 是什么&#xff1f;2. IoC3. Spring Demo4. IoC 创建对象的方式 / DI 方式注入的默认参数在哪里设定? 5. Spring 配置tx:annotation-driven 用于启用基于注解的事务管理 6. Bean的作用域7. 在Spring中有三种自动装配的方式1. 在xml中显式的配置2. 在java中…

RAG:如何从0到1搭建一个RAG应用

通过本文你可以了解到&#xff1a; 什么是RAG&#xff1f;如何搭建一个RAG应用&#xff1f;目前开源的RAG应用有哪些&#xff1f; 大模型学习参考&#xff1a; 1.大模型学习资料整理&#xff1a;大模型学习资料整理&#xff1a;如何从0到1学习大模型&#xff0c;搭建个人或企业…

定个小目标之刷LeetCode热题(15)

这道题直接就采用两数相加的规则&#xff0c;维护一个进阶值&#xff08;n&#xff09;即可&#xff0c;代码如下 class Solution {public ListNode addTwoNumbers(ListNode l1, ListNode l2) {// 新建一个值为0的头结点ListNode newHead new ListNode(0);// 创建几个指针用于…

【C++初阶学习】第十三弹——优先级队列及容器适配器

C语言栈&#xff1a;数据结构——栈(C语言版)-CSDN博客 C语言队列&#xff1a;数据结构——队列&#xff08;C语言版&#xff09;-CSDN博客 C栈与队列&#xff1a;【C初阶学习】第十二弹——stack和queue的介绍和使用-CSDN博客 前言&#xff1a; 在前面&#xff0c;我们已经…

Java24:会话管理 过滤器 监听器

一 会话管理 1.cookie 是一种客户端会话技术&#xff0c;cookie由服务端产生&#xff0c;它是服务器存放在浏览器的一小份数据&#xff0c;浏览器 以后每次访问服务器的时候都会将这小份的数据带到服务器去。 //创建cookie对象 Cookie cookie1new Cookie("…

vuInhub靶场实战系列--Kioptrix Level #3

免责声明 本文档仅供学习和研究使用,请勿使用文中的技术源码用于非法用途,任何人造成的任何负面影响,与本人无关。 目录 免责声明前言一、环境配置1.1 靶场信息1.2 靶场配置 二、信息收集2.1 主机发现2.1.1 netdiscover2.1.2 arp-scan主机扫描 2.2 端口扫描2.3 指纹识别2.4 目…

基于Ascend C的FlashAttention算子性能优化最佳实践

LLM的Attention部分处理给计算系统带来巨大的计算和访存压力。业界先后出现FlashAttention、FlashAttention2等算法&#xff0c;通过计算等价和切分有效降低HBM数据访问量。 昇腾异构计算架构CANN针对昇腾AI处理器的片上内存和缓存大小&#xff0c;以及数据搬运通路&#xff0…

为Nanopi m1交叉编译opencv

为Nanopi m1交叉编译opencv 一、下载交叉编译器 根据之前的博客进行 二、下载opencv和必要库 sudo apt-get install cmake git libgtk2.0-dev pkg-config libavcodec-dev libavformat-dev libswscale-devgit clone https://github.com/opencv/opencv.git cd opencv三、进行编…